Merge commit 'ee37004224dbc0c3df00058421d50be42c037b2c [formerly 5a3ca0a893]'

# Conflicts:
#	war/cache.manifest
#	war/js/app.min.js
#	war/js/viewer.min.js


Former-commit-id: 2bd4360450
This commit is contained in:
David Benson 2017-08-14 22:33:45 +01:00
commit bb7f227e62
19 changed files with 1758 additions and 1099 deletions

View file

@ -1,3 +1,15 @@
14-AUG-2017: 7.1.0
- Improves Lucidchart import
- Improves Gliffy import
- Uses mxGraph 3.7.5 beta 8
- Fixes ignored horizontal/vertical flip for connection points
11-AUG-2017: 7.0.9
- Fixes path to clipart images for SVG export in Chrome App
- Adds perimeter for parallelogram, trapezoid, step and hexagon
11-AUG-2017: 7.0.8
- Fixes error handling in Confluence Cloud add-on

View file

@ -1 +1 @@
7.0.8
7.1.0

View file

@ -1018,7 +1018,8 @@ mxGraphView.prototype.getEdgeStyle=function(a,b,c,d){a=this.isLoopStyleEnabled(a
mxGraphView.prototype.updateFloatingTerminalPoints=function(a,b,c){var d=a.absolutePoints,e=d[0];null==d[d.length-1]&&null!=c&&this.updateFloatingTerminalPoint(a,c,b,!1);null==e&&null!=b&&this.updateFloatingTerminalPoint(a,b,c,!0)};mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){a.setAbsoluteTerminalPoint(this.getFloatingTerminalPoint(a,b,c,d),d)};
mxGraphView.prototype.getFloatingTerminalPoint=function(a,b,c,d){b=this.getTerminalPort(a,b,d);var e=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a);c=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0"));var g=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=c)var k=Math.cos(-c),l=Math.sin(-c),e=mxUtils.getRotatedPoint(e,k,l,g);k=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);k+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||
0);a=this.getPerimeterPoint(b,e,0==c&&f,k);0!=c&&(k=Math.cos(c),l=Math.sin(c),a=mxUtils.getRotatedPoint(a,k,l,g));return a};mxGraphView.prototype.getTerminalPort=function(a,b,c){a=mxUtils.getValue(a.style,c?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT);null!=a&&(a=this.getState(this.graph.getModel().getCell(a)),null!=a&&(b=a));return b};
mxGraphView.prototype.getPerimeterPoint=function(a,b,c,d){var e=null;if(null!=a){var f=this.getPerimeterFunction(a);null!=f&&null!=b&&(d=this.getPerimeterBounds(a,d),0<d.width||0<d.height)&&(e=f(d,a,b,c));null==e&&(e=this.getPoint(a))}return e};mxGraphView.prototype.getRoutingCenterX=function(a){var b=null!=a.style?parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_X])||0:0;return a.getCenterX()+b*a.width};
mxGraphView.prototype.getPerimeterPoint=function(a,b,c,d){var e=null;if(null!=a){var f=this.getPerimeterFunction(a);if(null!=f&&null!=b&&(d=this.getPerimeterBounds(a,d),0<d.width||0<d.height)){var e=new mxPoint(b.x,b.y),g=b=!1;this.graph.model.isVertex(a.cell)&&(b=1==mxUtils.getValue(a.style,mxConstants.STYLE_FLIPH,0),g=1==mxUtils.getValue(a.style,mxConstants.STYLE_FLIPV,0),null!=a.shape&&null!=a.shape.stencil&&(b=1==mxUtils.getValue(a.style,"stencilFlipH",0)||b,g=1==mxUtils.getValue(a.style,"stencilFlipV",
0)||g),b&&(e.x=2*d.getCenterX()-e.x),g&&(e.y=2*d.getCenterY()-e.y));e=f(d,a,e,c);b&&(e.x=2*d.getCenterX()-e.x);g&&(e.y=2*d.getCenterY()-e.y)}null==e&&(e=this.getPoint(a))}return e};mxGraphView.prototype.getRoutingCenterX=function(a){var b=null!=a.style?parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_X])||0:0;return a.getCenterX()+b*a.width};
mxGraphView.prototype.getRoutingCenterY=function(a){var b=null!=a.style?parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0:0;return a.getCenterY()+b*a.height};mxGraphView.prototype.getPerimeterBounds=function(a,b){b=null!=b?b:0;null!=a&&(b+=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0));return a.getPerimeterBounds(b*this.scale)};
mxGraphView.prototype.getPerimeterFunction=function(a){a=a.style[mxConstants.STYLE_PERIMETER];if("string"==typeof a){var b=mxStyleRegistry.getValue(a);null==b&&this.isAllowEval()&&(b=mxUtils.eval(a));a=b}return"function"==typeof a?a:null};mxGraphView.prototype.getNextPoint=function(a,b,c){a=a.absolutePoints;var d=null;null!=a&&2<=a.length&&(d=a.length,d=a[c?Math.min(1,d-1):Math.max(0,d-2)]);null==d&&null!=b&&(d=new mxPoint(b.getCenterX(),b.getCenterY()));return d};
mxGraphView.prototype.getVisibleTerminal=function(a,b){for(var c=this.graph.getModel(),d=c.getTerminal(a,b),e=d;null!=d&&d!=this.currentRoot;){if(!this.graph.isCellVisible(e)||this.isCellCollapsed(d))e=d;d=c.getParent(d)}c.getParent(e)==c.getRoot()&&(e=null);return e};
@ -1169,9 +1170,9 @@ mxGraph.prototype.getOutlineConstraint=function(a,b,c){if(null!=b.shape){c=this.
mxGraph.prototype.getConnectionConstraint=function(a,b,c){b=null;var d=a.style[c?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=d){var e=a.style[c?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=e&&(b=new mxPoint(parseFloat(d),parseFloat(e)))}d=!1;null!=b&&(d=mxUtils.getValue(a.style,c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0));return new mxConnectionConstraint(b,d)};
mxGraph.prototype.setConnectionConstraint=function(a,b,c,d){if(null!=d){this.model.beginUpdate();try{null==d||null==d.point?(this.setCellStyles(c?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[a]),this.setCellStyles(c?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[a]),this.setCellStyles(c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[a])):null!=d.point&&(this.setCellStyles(c?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,d.point.x,[a]),this.setCellStyles(c?
mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,d.point.y,[a]),d.perimeter?this.setCellStyles(c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[a]):this.setCellStyles(c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[a]))}finally{this.model.endUpdate()}}};
mxGraph.prototype.getConnectionPoint=function(a,b){var c=null;if(null!=a&&null!=b.point){var d=this.view.getPerimeterBounds(a),e=new mxPoint(d.getCenterX(),d.getCenterY()),c=a.style[mxConstants.STYLE_DIRECTION],f=0;null!=c&&(c==mxConstants.DIRECTION_NORTH?f+=270:c==mxConstants.DIRECTION_WEST?f+=180:c==mxConstants.DIRECTION_SOUTH&&(f+=90),c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_SOUTH||d.rotate90());var c=new mxPoint(d.x+b.point.x*d.width,d.y+b.point.y*d.height),g=a.style[mxConstants.STYLE_ROTATION]||
0;if(b.perimeter){if(0!=f){var k=0,l=0;90==f?l=1:180==f?k=-1:270==f&&(l=-1);c=mxUtils.getRotatedPoint(c,k,l,e)}c=this.view.getPerimeterPoint(a,c,!1)}else g+=f;this.getModel().isVertex(a.cell)&&(f=1==a.style[mxConstants.STYLE_FLIPH],k=1==a.style[mxConstants.STYLE_FLIPV],null!=a.shape&&null!=a.shape.stencil&&(f=1==mxUtils.getValue(a.style,"stencilFlipH",0)||f,k=1==mxUtils.getValue(a.style,"stencilFlipV",0)||k),f&&(c.x=2*d.getCenterX()-c.x),k&&(c.y=2*d.getCenterY()-c.y));0!=g&&null!=c&&(d=mxUtils.toRadians(g),
k=Math.cos(d),l=Math.sin(d),c=mxUtils.getRotatedPoint(c,k,l,e))}null!=c&&(c.x=Math.round(c.x),c.y=Math.round(c.y));return c};mxGraph.prototype.connectCell=function(a,b,c,d){this.model.beginUpdate();try{var e=this.model.getTerminal(a,c);this.cellConnected(a,b,c,d);this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",a,"terminal",b,"source",c,"previous",e))}finally{this.model.endUpdate()}return a};
mxGraph.prototype.getConnectionPoint=function(a,b){var c=null;if(null!=a&&null!=b.point){var c=this.view.getPerimeterBounds(a),d=new mxPoint(c.getCenterX(),c.getCenterY()),e=a.style[mxConstants.STYLE_DIRECTION],f=0;null!=e&&(e==mxConstants.DIRECTION_NORTH?f+=270:e==mxConstants.DIRECTION_WEST?f+=180:e==mxConstants.DIRECTION_SOUTH&&(f+=90),e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_SOUTH||c.rotate90());var c=new mxPoint(c.x+b.point.x*c.width,c.y+b.point.y*c.height),g=a.style[mxConstants.STYLE_ROTATION]||
0;if(b.perimeter){if(0!=f){var k=e=0;90==f?k=1:180==f?e=-1:270==f&&(k=-1);c=mxUtils.getRotatedPoint(c,e,k,d)}c=this.view.getPerimeterPoint(a,c,!1)}else g+=f;0!=g&&null!=c&&(f=mxUtils.toRadians(g),e=Math.cos(f),k=Math.sin(f),c=mxUtils.getRotatedPoint(c,e,k,d))}null!=c&&(c.x=Math.round(c.x),c.y=Math.round(c.y));return c};
mxGraph.prototype.connectCell=function(a,b,c,d){this.model.beginUpdate();try{var e=this.model.getTerminal(a,c);this.cellConnected(a,b,c,d);this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",a,"terminal",b,"source",c,"previous",e))}finally{this.model.endUpdate()}return a};
mxGraph.prototype.cellConnected=function(a,b,c,d){if(null!=a){this.model.beginUpdate();try{var e=this.model.getTerminal(a,c);this.setConnectionConstraint(a,b,c,d);this.isPortsEnabled()&&(d=null,this.isPort(b)&&(d=b.getId(),b=this.getTerminalForPort(b,c)),this.setCellStyles(c?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,d,[a]));this.model.setTerminal(a,b,c);this.resetEdgesOnConnect&&this.resetEdge(a);this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",a,"terminal",b,"source",
c,"previous",e))}finally{this.model.endUpdate()}}};
mxGraph.prototype.disconnectGraph=function(a){if(null!=a){this.model.beginUpdate();try{for(var b=this.view.scale,c=this.view.translate,d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++)if(this.model.isEdge(a[e])){var f=this.model.getGeometry(a[e]);if(null!=f){var g=this.view.getState(a[e]),k=this.view.getState(this.model.getParent(a[e]));if(null!=g&&null!=k){var f=f.clone(),l=-k.origin.x,m=-k.origin.y,n=g.absolutePoints,p=this.model.getTerminal(a[e],!0);if(null!=p&&this.isCellDisconnectable(a[e],

View file

@ -340,6 +340,7 @@ public class GliffyDiagramConverter
StringBuilder style = new StringBuilder();
mxGeometry geometry = new mxGeometry(gliffyObject.x, gliffyObject.y, gliffyObject.width, gliffyObject.height);
gliffyObject.adjustGeo(geometry);
cell.setGeometry(geometry);
GliffyObject textObject = null;
@ -527,7 +528,7 @@ public class GliffyDiagramConverter
GliffyObject laneTxt = gLane.children.get(0);
mxLane.setValue(laneTxt.getText());
laneStyle.append(laneTxt.graphic.getText().getStyle());
laneStyle.append(laneTxt.graphic.getText().getStyle(0, 0));
//for debugging, add gliffy id to the output in the style
laneStyle.append("gliffyId=" + gLane.id + ";");
mxLane.setStyle(laneStyle.toString());
@ -598,8 +599,17 @@ public class GliffyDiagramConverter
if(!gliffyObject.isLine())
{
GliffyText txt = textObject.graphic.getText();
if (gliffyObject.isSwimlane())
{
txt.setForceTopPaddingShift(true);
txt.setValign("middle");
}
cell.setValue(textObject.getText());
style.append(textObject.graphic.getText().getStyle());
gliffyObject.adjustTextPos(textObject);
style.append(textObject == gliffyObject ? txt.getStyle(0, 0) : txt.getStyle(textObject.x, textObject.y));
}
}

View file

@ -130,10 +130,10 @@ com.gliffy.shape.uml.uml_v2.class.note=note;size=10
com.gliffy.shape.uml.uml_v2.class.anchor_line=endArrow=none;endSize=12;dashed=1
# UML v1
com.gliffy.shape.uml.uml_v1.default.package=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left
com.gliffy.shape.uml.uml_v1.default.class=rect;verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
com.gliffy.shape.uml.uml_v1.default.class=rect;fillColor=none;strokeColor=none
com.gliffy.shape.uml.uml_v1.default.simple_class=rect
com.gliffy.shape.uml.uml_v1.default.note=note;size=10
com.gliffy.shape.uml.uml_v1.default.object=rect;verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
com.gliffy.shape.uml.uml_v1.default.object=rect;fillColor=none;strokeColor=none
com.gliffy.shape.uml.uml_v1.default.interface=ellipse
com.gliffy.shape.uml.uml_v1.default.node=cube;size=10;direction=south
com.gliffy.shape.uml.uml_v1.default.component=component;align=left;spacingLeft=36
@ -143,11 +143,12 @@ com.gliffy.shape.uml.uml_v1.default.association=edgeStyle=orthogonalEdgeStyle
com.gliffy.shape.uml.uml_v1.default.aggregation=edgeStyle=orthogonalEdgeStyle
com.gliffy.shape.uml.uml_v1.default.composition=edgeStyle=orthogonalEdgeStyle
com.gliffy.shape.uml.uml_v1.default.dependency=edgeStyle=orthogonalEdgeStyle;dashed=1
com.gliffy.shape.uml.uml_v1.default.object_timeline=umlLifeline;perimeter=lifelinePerimeter;size=20
com.gliffy.shape.uml.uml_v1.default.object_timeline=rect;fillColor=none;strokeColor=none
com.gliffy.shape.uml.uml_v1.default.activation=rect
com.gliffy.shape.uml.uml_v1.default.lifeline=umlLifeline;perimeter=lifelinePerimeter
com.gliffy.shape.uml.uml_v1.default.lifeline=stencil(nZFNDsIgEIVPwx6ZjS4NtveYtkRIKxDAVm8vP5qA3RgTNrw330zmDQHuJVpBGEVvxRgIXAhjKzqFwxJlFh0fnJnFpqYgi620FE6F5EJH6JkAH3Ccr87c9fSW6Ck94BYTVUlZvZk1zXyUfrTMeda/fg8tSlfQgbbYv9zxR66lPl36r3WjUm0c083ZNXW5aJdXVsstoHsB);dashed=1
com.gliffy.shape.uml.uml_v1.default.message=edgeStyle=none
com.gliffy.shape.uml.uml_v1.default.self_message=curved=1
#TODO this shape has a shape graphics instead of a line!
com.gliffy.shape.uml.uml_v1.default.self_message=filledEdge;fixDash=1;startArrow=none;endArrow=block;endFill=1;endSize=6;edgeStyle=orthogonalEdgeStyle;curved=1
com.gliffy.shape.uml.uml_v1.default.actor=umlActor;verticalLabelPosition=bottom;verticalAlign=bottom
com.gliffy.shape.uml.uml_v1.default.use_case=ellipse
# UML v2 SEQUENCE
@ -1580,4 +1581,8 @@ com.gliffy.stencil.rectangle.no_fill_line_bottom_dashed_v1=partialRectangle;top=
com.gliffy.stencil.boundary_lifeline.uml_v2=umlBoundary
com.gliffy.stencil.object_timeline.uml_v1=line;direction=south;dashed=1
com.gliffy.stencil.control_lifeline.uml_v2=umlControl
com.gliffy.stencil.entity_lifeline.uml_v2=umlEntity
com.gliffy.stencil.entity_lifeline.uml_v2=umlEntity
com.gliffy.stencil.ui.ui_v3.containers_content.speech_bubble=rect;rounded=1
com.gliffy.stencil.ui.ui_v3.containers_content.speech_bubble_right=mxgraph.basic.orthogonal_triangle;direction=south
com.gliffy.stencil.ui.ui_v3.containers_content.speech_bubble_left=mxgraph.basic.orthogonal_triangle;direction=south;flipH=1
com.gliffy.stencil.rectangle.basic_v1=rect

View file

@ -2,12 +2,15 @@ package com.mxgraph.io.gliffy.model;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.mxgraph.io.gliffy.importer.PostDeserializer.PostDeserializable;
import com.mxgraph.model.mxCell;
import com.mxgraph.model.mxGeometry;
/**
* Class representing Gliffy diagram object
@ -20,6 +23,8 @@ public class GliffyObject implements PostDeserializable
private static Set<String> GROUP_SHAPES = new HashSet<String>();
private static Set<String> MINDMAP_SHAPES = new HashSet<>();
private static Map<String, double[]> SHAPES_COORD_FIX = new HashMap<>();
public float x;
@ -131,11 +136,23 @@ public class GliffyObject implements PostDeserializable
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.lifeline");
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.entity_lifeline");
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.control_lifeline");
GROUP_SHAPES.add("com.gliffy.shape.ui.ui_v3.containers_content.speech_bubble_right");
GROUP_SHAPES.add("com.gliffy.shape.ui.ui_v3.containers_content.speech_bubble_left");
//UML V1
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v1.default.object_timeline");
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v1.default.class");
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v1.default.object");
MINDMAP_SHAPES.add("com.gliffy.shape.mindmap.mindmap_v1.default.main_topic");
MINDMAP_SHAPES.add("com.gliffy.shape.mindmap.mindmap_v1.default.subtopic");
MINDMAP_SHAPES.add("com.gliffy.shape.mindmap.mindmap_v1.default.child_node");
SHAPES_COORD_FIX.put("com.gliffy.shape.flowchart.flowchart_v1.default.paper_tape", new double[]{0, -0.1, 0, 0.2});
SHAPES_COORD_FIX.put("com.gliffy.shape.uml.uml_v1.default.node", new double[]{0, -10, 10, 10});
SHAPES_COORD_FIX.put("com.gliffy.shape.uml.uml_v2.deployment.node", new double[]{0, -10, 10, 10});
SHAPES_COORD_FIX.put("com.gliffy.shape.uml.uml_v2.deployment.device_node", new double[]{0, -10, 10, 10});
SHAPES_COORD_FIX.put("com.gliffy.shape.uml.uml_v2.deployment.execution_environment_node", new double[]{0, -10, 10, 10});
}
public GliffyObject()
@ -163,6 +180,11 @@ public class GliffyObject implements PostDeserializable
* @return
*/
public GliffyObject getTextObject()
{
return getTextObject(0, 0);
}
private GliffyObject getTextObject(double x, double y)
{
if (isText())
@ -178,11 +200,13 @@ public class GliffyObject implements PostDeserializable
{
if (child.getGraphic() != null && child.getGraphic().getType().equals(Graphic.Type.TEXT))
{
child.x += x;
child.y += y;
return child;
}
else
{
GliffyObject txtObj = child.getTextObject();
GliffyObject txtObj = child.getTextObject(child.x, child.y);
if (txtObj != null)
return txtObj;
@ -397,4 +421,30 @@ public class GliffyObject implements PostDeserializable
child.y += -yMin;
}
}
public void adjustGeo(mxGeometry geo)
{
double[] arr = SHAPES_COORD_FIX.get(uid);
if (arr != null)
{
double x = geo.getX(), y = geo.getY(), w = geo.getWidth(), h = geo.getHeight();
geo.setX(x + (Math.abs(arr[0]) < 1 ? w * arr[0]: arr[0]));
geo.setY(y + (Math.abs(arr[1]) < 1 ? h * arr[1]: arr[1]));
geo.setWidth(w + (Math.abs(arr[2]) < 1 ? w * arr[2]: arr[2]));
geo.setHeight(h + (Math.abs(arr[3]) < 1 ? h * arr[3]: arr[3]));
}
}
public void adjustTextPos(GliffyObject textObject)
{
double[] arr = SHAPES_COORD_FIX.get(uid);
if (arr != null)
{
textObject.x -= (Math.abs(arr[0]) < 1 ? width * arr[0]: arr[0]);
textObject.y -= (Math.abs(arr[1]) < 1 ? height * arr[1]: arr[1]);
}
}
}

View file

@ -32,6 +32,8 @@ public class GliffyText implements PostDeserializer.PostDeserializable
public String overflow;
private boolean forceTopPaddingShift = false;
private static Pattern pattern = Pattern.compile("<p(.*?)<\\/p>");
private static Pattern textAlign = Pattern.compile(".*(text-align: ?(left|center|right);).*", Pattern.DOTALL);
@ -56,7 +58,7 @@ public class GliffyText implements PostDeserializer.PostDeserializable
{
}
public String getStyle()
public String getStyle(float x, float y)
{
StringBuilder sb = new StringBuilder();
@ -78,7 +80,7 @@ public class GliffyText implements PostDeserializer.PostDeserializable
{
sb.append("verticalAlign=").append(valign).append(";");
if ("middle".equals(valign))
if (!forceTopPaddingShift && "middle".equals(valign))
topPaddingShift = 0;
}
@ -100,10 +102,14 @@ public class GliffyText implements PostDeserializer.PostDeserializable
sb.append("align=center;");
}
sb.append("spacingLeft=").append(paddingLeft).append(";");
sb.append("spacingLeft=").append(paddingLeft + x).append(";");
sb.append("spacingRight=").append(paddingRight).append(";");
sb.append("spacingTop=").append(paddingTop - topPaddingShift).append(";");
sb.append("spacingBottom=").append(paddingBottom).append(";");
if (forceTopPaddingShift || !"middle".equals(valign))
{
sb.append("spacingTop=").append(paddingTop - topPaddingShift + y).append(";");
sb.append("spacingBottom=").append(paddingBottom).append(";");
}
//We should wrap only if overflow is none. (TODO better support left & right overflow)
if ("none".equals(overflow))
@ -142,4 +148,13 @@ public class GliffyText implements PostDeserializer.PostDeserializable
return null;
}
public void setValign(String valign)
{
this.valign = valign;
}
public void setForceTopPaddingShift(boolean forceTopPaddingShift)
{
this.forceTopPaddingShift = forceTopPaddingShift;
}
}

File diff suppressed because one or more lines are too long

433
war/js/atlas.min.js vendored

File diff suppressed because one or more lines are too long

View file

@ -1063,7 +1063,7 @@ App.prototype.init = function()
this.updateAd(0);
}));
if (mxSettings.getOpenCounter() > 10)
if (mxSettings.getOpenCounter() > 10 && urlParams['embed'] != '1')
{
thread2 = window.setTimeout(mxUtils.bind(this, function()
{

View file

@ -2973,17 +2973,17 @@
var svg = '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n' +
mxUtils.getXml(svgRoot);
if (this.isLocalFileSave() || svg.length <= MAX_REQUEST_SIZE)
{
this.saveData(filename, 'svg', svg, 'image/svg+xml');
}
else
{
this.handleError({message: mxResources.get('drawingTooLarge')}, mxResources.get('error'), mxUtils.bind(this, function()
{
mxUtils.popup(svg);
}));
}
if (this.isLocalFileSave() || svg.length <= MAX_REQUEST_SIZE)
{
this.saveData(filename, 'svg', svg, 'image/svg+xml');
}
else
{
this.handleError({message: mxResources.get('drawingTooLarge')}, mxResources.get('error'), mxUtils.bind(this, function()
{
mxUtils.popup(svg);
}));
}
});
this.convertMath(this.editor.graph, svgRoot, false, mxUtils.bind(this, function()
@ -4983,7 +4983,7 @@
{
this.insertLucidChart(data, dx, dy, crop, done);
if (this.updateAd != null && !this.lucidchartTweetShown)
if (this.updateAd != null && !this.lucidchartTweetShown && urlParams['embed'] != '1')
{
this.adsHtml.push('<a title="' + mxResources.get('loveIt', ['draw.io']) +
'" target="_blank" href="https://twitter.com/intent/tweet?text=' +
@ -8235,7 +8235,7 @@
parent.postMessage(JSON.stringify(msg), '*');
}));
}
}
}
return;
}

View file

@ -1717,23 +1717,23 @@
// 'PEOrificeBlock' NA
'PERotameterBlock' : s + 'pid.flow_sensors.rotameter;flipH=1;',
//Venn Gradient
'VennGradientColor1' : 'shape=ellipse;',
'VennGradientColor2' : 'shape=ellipse;',
'VennGradientColor3' : 'shape=ellipse;',
'VennGradientColor4' : 'shape=ellipse;',
'VennGradientColor5' : 'shape=ellipse;',
'VennGradientColor6' : 'shape=ellipse;',
'VennGradientColor7' : 'shape=ellipse;',
'VennGradientColor8' : 'shape=ellipse;',
'VennGradientColor1' : 'shape=ellipse;strokeColor=#49c1a1;fillOpacity=35;',
'VennGradientColor2' : 'shape=ellipse;strokeColor=#7769e0;fillOpacity=35;',
'VennGradientColor3' : 'shape=ellipse;strokeColor=#efd95d;fillOpacity=35;',
'VennGradientColor4' : 'shape=ellipse;strokeColor=#e24adb;fillOpacity=35;',
'VennGradientColor5' : 'shape=ellipse;strokeColor=#e55050;fillOpacity=35;',
'VennGradientColor6' : 'shape=ellipse;strokeColor=#f49769;fillOpacity=35;',
'VennGradientColor7' : 'shape=ellipse;strokeColor=#7ae266;fillOpacity=35;',
'VennGradientColor8' : 'shape=ellipse;strokeColor=#47b0e5;fillOpacity=35;',
//Venn Plain
'VennPlainColor1' : 'shape=ellipse;',
'VennPlainColor2' : 'shape=ellipse;',
'VennPlainColor3' : 'shape=ellipse;',
'VennPlainColor4' : 'shape=ellipse;',
'VennPlainColor5' : 'shape=ellipse;',
'VennPlainColor6' : 'shape=ellipse;',
'VennPlainColor7' : 'shape=ellipse;',
'VennPlainColor8' : 'shape=ellipse;',
'VennPlainColor1' : 'shape=ellipse;strokeColor=#49c1a1;fillOpacity=35;',
'VennPlainColor2' : 'shape=ellipse;strokeColor=#7769e0;fillOpacity=35;',
'VennPlainColor3' : 'shape=ellipse;strokeColor=#efd95d;fillOpacity=35;',
'VennPlainColor4' : 'shape=ellipse;strokeColor=#e24adb;fillOpacity=35;',
'VennPlainColor5' : 'shape=ellipse;strokeColor=#e55050;fillOpacity=35;',
'VennPlainColor6' : 'shape=ellipse;strokeColor=#f49769;fillOpacity=35;',
'VennPlainColor7' : 'shape=ellipse;strokeColor=#7ae266;fillOpacity=35;',
'VennPlainColor8' : 'shape=ellipse;strokeColor=#47b0e5;fillOpacity=35;',
//iOS Devices
'iOS7DeviceiPhone5Portrait' : s + 'ios.iPhone;bgStyle=bgGreen;', //EXT
'iOS7DeviceiPhone5Landscape' : s + 'ios.iPhone;bgStyle=bgGreen;', //EXT
@ -2089,7 +2089,7 @@
cell.value = convertText(p);
//adds font size
var isV = 0;
var isV = false;
if (p.Text != null)
{
@ -2098,7 +2098,7 @@
var m = p.Text.m;
var i = 0;
while ((isV == 0) && (i < m.length))
while ((!isV) && (i < m.length))
{
var currM = m[i];
@ -2106,10 +2106,10 @@
{
if (currM.v != null)
{
isV = 1;
isV = true;
var fontSize = currM.v;
fontSize = Math.round(fontSize / 1.7);
fontSize = 1 + Math.round(fontSize / 1.8);
cell.style += 'fontSize=' + fontSize + ';';
}
}
@ -2124,7 +2124,7 @@
}
//adds font color
var isC = 0;
var isC = false;
if (p.Text != null)
{
@ -2133,7 +2133,7 @@
var m = p.Text.m;
var i = 0;
while ((isC == 0) && (i < m.length))
while ((!isC) && (i < m.length))
{
var currM = m[i];
@ -2141,7 +2141,7 @@
{
if (currM.v != null)
{
isC = 1;
isC = true;
var currV = currM.v;
@ -2159,8 +2159,279 @@
i++;
}
}
var fontStyle = 0;
//check for bold text
var isBT = false;
if (p.Text.m != null)
{
var m = p.Text.m;
var i = 0;
while ((!isBT) && (i < m.length))
{
var currM = m[i];
if (currM.n == 'b')
{
if (currM.v != null && currM.v)
{
isBT = true;
fontStyle += 1;
}
}
i++;
}
}
//check for italic text
var isIT = false;
if (p.Text.m != null)
{
var m = p.Text.m;
var i = 0;
while ((!isIT) && (i < m.length))
{
var currM = m[i];
if (currM.n == 'i')
{
if (currM.v != null && currM.v)
{
isIT = true;
fontStyle += 2;
}
}
i++;
}
}
//check for underline text
var isUT = false;
if (p.Text.m != null)
{
var m = p.Text.m;
var i = 0;
while ((!isUT) && (i < m.length))
{
var currM = m[i];
if (currM.n == 'u')
{
if (currM.v != null && currM.v)
{
isUT = true;
fontStyle += 4;
}
}
i++;
}
}
if (fontStyle > 0)
{
cell.style += 'fontStyle=' + fontStyle + ';';
}
//adds text alignment
var isA = false;
if (p.Text != null)
{
if (p.Text.m != null)
{
var m = p.Text.m;
var i = 0;
while ((!isA) && (i < m.length))
{
var currM = m[i];
if (currM.n == 'a')
{
if (currM.v != null)
{
isA = true;
var currV = currM.v;
cell.style += 'align=' + currV + ';';
}
}
i++;
}
}
}
//adds left spacing
var isIL = false;
if (p.Text != null)
{
if (p.Text.m != null)
{
var m = p.Text.m;
var i = 0;
while ((!isIL) && (i < m.length))
{
var currM = m[i];
if (currM.n == 'il')
{
if (currM.v != null)
{
isIL = true;
var currV = currM.v;
cell.style += 'spacingLeft=' + currV + ';';
}
}
i++;
}
}
}
//adds right spacing
var isIR = false;
if (p.Text != null)
{
if (p.Text.m != null)
{
var m = p.Text.m;
var i = 0;
while ((!isIR) && (i < m.length))
{
var currM = m[i];
if (currM.n == 'ir')
{
if (currM.v != null)
{
isIR = true;
var currV = currM.v;
cell.style += 'spacingRight=' + currV + ';';
}
}
i++;
}
}
}
//adds top spacing
var isMT = false;
if (p.Text != null)
{
if (p.Text.m != null)
{
var m = p.Text.m;
var i = 0;
while ((!isMT) && (i < m.length))
{
var currM = m[i];
if (currM.n == 'mt')
{
if (currM.v != null)
{
isMT = true;
var currV = currM.v;
cell.style += 'spacingTop=' + currV + ';';
}
}
i++;
}
}
}
//adds bottom spacing
var isMB = false;
if (p.Text != null)
{
if (p.Text.m != null)
{
var m = p.Text.m;
var i = 0;
while ((!isMB) && (i < m.length))
{
var currM = m[i];
if (currM.n == 'mb')
{
if (currM.v != null)
{
isMB = true;
var currV = currM.v;
cell.style += 'spacingBottom=' + currV + ';';
}
}
i++;
}
}
}
//adds global spacing
if (typeof p.InsetMargin === 'number')
{
cell.style += 'spacing=' + parseInt(p.InsetMargin) + ';';
}
//adds opacity
if (typeof p.LineColor === 'string')
{
if (p.LineColor.length > 7)
{
var sOpac = "0x" + p.LineColor.substring(p.LineColor.length - 2, p.LineColor.length);
cell.style += 'strokeOpacity=' + Math.round(parseInt(sOpac) / 2.55) + ';';
}
}
if (typeof p.FillColor === 'string')
{
if (p.FillColor.length > 7)
{
var fOpac = "0x" + p.FillColor.substring(p.FillColor.length - 2, p.FillColor.length);
cell.style += 'fillOpacity=' + Math.round(parseInt(fOpac) / 2.55) + ';';
}
}
// adds text vertical alignment
if (p.Text_VAlign != null)
{
if (typeof p.Text_VAlign === 'string')
{
cell.style += 'verticalAlign=' + p.Text_VAlign + ';';
}
}
}
// Converts images
if (a.Class == 'ImageSearchBlock2')
{
@ -2170,8 +2441,9 @@
// Adds styles
cell.style += createStyle(mxConstants.STYLE_STROKEWIDTH, p.LineWidth, '1');
//stencils with hardcoded stroke color
var hardStroke = ['DefaultTextBlock', 'UI2HotspotBlock'];
// stencils with hardcoded stroke color
var hardStroke = ['VennPlainColor1', 'VennPlainColor2', 'VennPlainColor3', 'VennPlainColor4', 'VennPlainColor5', 'VennPlainColor6', 'VennPlainColor7', 'VennPlainColor8',
'VennGradientColor1', 'VennGradientColor2', 'VennGradientColor3', 'VennGradientColor4', 'VennGradientColor5', 'VennGradientColor6', 'VennGradientColor7', 'VennGradientColor8'];
if (!hardStroke.includes(a.Class))
{
@ -2181,8 +2453,9 @@
cell.style += createStyle(mxConstants.STYLE_ALIGN, p.TextAlign, 'center');
cell.style += createStyle(mxConstants.STYLE_VERTICAL_ALIGN, p.TextVAlign, 'middle');
//stencils with hardcoded opacity
var hardOpacity = ['UI2HotspotBlock'];
// stencils with hardcoded opacity
var hardOpacity = ['VennPlainColor1', 'VennPlainColor2', 'VennPlainColor3', 'VennPlainColor4', 'VennPlainColor5', 'VennPlainColor6', 'VennPlainColor7', 'VennPlainColor8',
'VennGradientColor1', 'VennGradientColor2', 'VennGradientColor3', 'VennGradientColor4', 'VennGradientColor5', 'VennGradientColor6', 'VennGradientColor7', 'VennGradientColor8'];
if (!hardOpacity.includes(a.Class))
{
@ -2263,6 +2536,10 @@
{
cell.style += createStyle(mxConstants.STYLE_FILLCOLOR, p.FillColor.substring(0, 7), '#FFFFFF');
}
else
{
cell.style += createStyle(mxConstants.STYLE_FILLCOLOR, 'none');
}
}
}
@ -2304,6 +2581,46 @@
}
}
}
if (p.Endpoint1.Style != null)
{
if (p.Endpoint1.Style == 'None')
{
cell.style += 'startArrow=none;';
}
else if (p.Endpoint1.Style == 'Arrow')
{
cell.style += 'startArrow=block;endFill=1;';
}
else if (p.Endpoint1.Style == 'Hollow Arrow')
{
cell.style += 'startArrow=block;endFill=0;';
}
else if (p.Endpoint1.Style == 'Open Arrow')
{
cell.style += 'startArrow=open;';
}
}
if (p.Endpoint2.Style != null)
{
if (p.Endpoint2.Style == 'None')
{
cell.style += 'endArrow=none;';
}
else if (p.Endpoint2.Style == 'Arrow')
{
cell.style += 'endArrow=block;endFill=1;';
}
else if (p.Endpoint2.Style == 'Hollow Arrow')
{
cell.style += 'endArrow=block;endFill=0;';
}
else if (p.Endpoint2.Style == 'Open Arrow')
{
cell.style += 'endArrow=open;';
}
}
// Anchor points and arrows
// TODO: Convert waypoints, elbowPoints

View file

@ -81,7 +81,7 @@ v,k,f));else if(c.c&a.c.RCDATA)d.F&&d.F(e(l),f,g,h(d,b,v,k,f));else throw Error(
e[1].toLowerCase(),n;if(e[2]){n=e[3];var v=n.charCodeAt(0);if(34===v||39===v)n=n.substr(1,n.length-2);n=c(n.replace(F,""))}else n="";l.push(m,n);g=g.substr(e[0].length)}else g=g.replace(/^[\s\S][^a-z\s]*/,"");f.R=l;f.next=h+1;return f}}function n(b){function c(a,b){f||b.push(a)}var e,f;return g({startDoc:function(){e=[];f=!1},startTag:function(c,g,h){if(!f&&a.f.hasOwnProperty(c)){var k=a.f[c];if(!(k&a.c.FOLDABLE)){var l=b(c,g);if(l){if("object"!==typeof l)throw Error("tagPolicy did not return object (old API?)");
if("attribs"in l)g=l.attribs;else throw Error("tagPolicy gave no attribs");var m;"tagName"in l?(m=l.tagName,l=a.f[m]):(m=c,l=k);if(k&a.c.OPTIONAL_ENDTAG){var n=e[e.length-1];n&&n.D===c&&(n.v!==m||c!==m)&&h.push("</",n.v,">")}k&a.c.EMPTY||e.push({D:c,v:m});h.push("<",m);c=0;for(n=g.length;c<n;c+=2){var v=g[c],C=g[c+1];null!==C&&void 0!==C&&h.push(" ",v,'="',d(C),'"')}h.push(">");k&a.c.EMPTY&&!(l&a.c.EMPTY)&&h.push("</",m,">")}else f=!(k&a.c.EMPTY)}}},endTag:function(b,c){if(f)f=!1;else if(a.f.hasOwnProperty(b)){var d=
a.f[b];if(!(d&(a.c.EMPTY|a.c.FOLDABLE))){if(d&a.c.OPTIONAL_ENDTAG)for(d=e.length;0<=--d;){var g=e[d].D;if(g===b)break;if(!(a.f[g]&a.c.OPTIONAL_ENDTAG))return}else for(d=e.length;0<=--d&&e[d].D!==b;);if(!(0>d)){for(g=e.length;--g>d;){var h=e[g].v;a.f[h]&a.c.OPTIONAL_ENDTAG||c.push("</",h,">")}d<e.length&&(b=e[d].v);e.length=d;c.push("</",b,">")}}}},pcdata:c,rcdata:c,cdata:c,endDoc:function(a){for(;e.length;e.length--)a.push("</",e[e.length-1].v,">")}})}function p(a,b,c,d,e){if(!e)return null;try{var g=
f.parse(""+a);if(g&&(!g.K()||fa.test(g.W()))){var h=e(g,b,c,d);return h?h.toString():null}}catch(wa){}return null}function r(a,b,c,d,e){c||a(b+" removed",{S:"removed",tagName:b});if(d!==e){var f="changed";d&&!e?f="removed":!d&&e&&(f="added");a(b+"."+c+" "+f,{S:f,tagName:b,la:c,oldValue:d,newValue:e})}}function C(a,b,c){b=b+"::"+c;if(a.hasOwnProperty(b))return a[b];b="*::"+c;if(a.hasOwnProperty(b))return a[b]}function H(b,c,d,e,f){for(var g=0;g<c.length;g+=2){var h=c[g],k=c[g+1],l=k,m=null,n;if((n=
f.parse(""+a);if(g&&(!g.K()||fa.test(g.W()))){var h=e(g,b,c,d);return h?h.toString():null}}catch(va){}return null}function r(a,b,c,d,e){c||a(b+" removed",{S:"removed",tagName:b});if(d!==e){var f="changed";d&&!e?f="removed":!d&&e&&(f="added");a(b+"."+c+" "+f,{S:f,tagName:b,la:c,oldValue:d,newValue:e})}}function C(a,b,c){b=b+"::"+c;if(a.hasOwnProperty(b))return a[b];b="*::"+c;if(a.hasOwnProperty(b))return a[b]}function H(b,c,d,e,f){for(var g=0;g<c.length;g+=2){var h=c[g],k=c[g+1],l=k,m=null,n;if((n=
b+"::"+h,a.m.hasOwnProperty(n))||(n="*::"+h,a.m.hasOwnProperty(n)))m=a.m[n];if(null!==m)switch(m){case a.d.NONE:break;case a.d.SCRIPT:k=null;f&&r(f,b,h,l,k);break;case a.d.STYLE:if("undefined"===typeof U){k=null;f&&r(f,b,h,l,k);break}var v=[];U(k,{declaration:function(b,c){var e=b.toLowerCase();S(e,c,d?function(b){return p(b,a.P.ja,a.M.ka,{TYPE:"CSS",CSS_PROP:e},d)}:null);c.length&&v.push(e+": "+c.join(" "))}});k=0<v.length?v.join(" ; "):null;f&&r(f,b,h,l,k);break;case a.d.ID:case a.d.IDREF:case a.d.IDREFS:case a.d.GLOBAL_NAME:case a.d.LOCAL_NAME:case a.d.CLASSES:k=
e?e(k):k;f&&r(f,b,h,l,k);break;case a.d.URI:k=p(k,C(a.J,b,h),C(a.I,b,h),{TYPE:"MARKUP",XML_ATTR:h,XML_TAG:b},d);f&&r(f,b,h,l,k);break;case a.d.URI_FRAGMENT:k&&"#"===k.charAt(0)?(k=k.substring(1),k=e?e(k):k,null!==k&&void 0!==k&&(k="#"+k)):k=null;f&&r(f,b,h,l,k);break;default:k=null,f&&r(f,b,h,l,k)}else k=null,f&&r(f,b,h,l,k);c[g+1]=k}return c}function M(b,c,d){return function(e,f){if(a.f[e]&a.c.UNSAFE)d&&r(d,e,void 0,void 0,void 0);else return{attribs:H(e,f,b,c,d)}}}function J(a,b){var c=[];n(b)(a,
c);return c.join("")}var U,S;"undefined"!==typeof window&&(U=window.parseCssDeclarations,S=window.sanitizeCssProperty);var aa={lt:"<",LT:"<",gt:">",GT:">",amp:"&",AMP:"&",quot:'"',apos:"'",nbsp:" "},A=/^#(\d+)$/,v=/^#x([0-9A-Fa-f]+)$/,R=/^[A-Za-z][A-za-z0-9]+$/,K="undefined"!==typeof window&&window.document?window.document.createElement("textarea"):null,F=/\0/g,ca=/&(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/g,N=/^(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/,G=/&/g,Y=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,T=
@ -184,7 +184,7 @@ f)+"\n"+t+"}":"{"+x.join(",")+"}";f=t;return l}}"function"!==typeof Date.prototy
e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f,g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;"function"!==typeof JSON.stringify&&(JSON.stringify=function(a,b,d){var e;g=f="";if("number"===typeof d)for(e=0;e<d;e+=1)g+=" ";else"string"===typeof d&&(g=d);if((k=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return c("",{"":a})});
"function"!==typeof JSON.parse&&(JSON.parse=function(a,b){function c(a,d){var e,f,g=a[d];if(g&&"object"===typeof g)for(e in g)Object.prototype.hasOwnProperty.call(g,e)&&(f=c(g,e),void 0!==f?g[e]=f:delete g[e]);return b.call(a,d,g)}var e;a=""+a;d.lastIndex=0;d.test(a)&&(a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof b?c({"":e},""):e;throw new SyntaxError("JSON.parse");})})();var mxBasePath="https://www.draw.io/mxgraph/",mxLoadStylesheets=mxLoadResources=!1,mxLanguage="en";window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";
window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"7.0.8",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&
window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"7.1.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&
0>navigator.userAgent.indexOf("Edge/"),IS_OP:0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/"),IS_OT:0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&
0>navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_IOS:navigator.userAgent.match(/(iPad|iPhone|iPod)/g)?!0:!1,IS_GC:0<=navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:0<=navigator.userAgent.indexOf("Firefox/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&
0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||
@ -1054,7 +1054,8 @@ mxGraphView.prototype.getEdgeStyle=function(a,b,c,d){a=this.isLoopStyleEnabled(a
mxGraphView.prototype.updateFloatingTerminalPoints=function(a,b,c){var d=a.absolutePoints,e=d[0];null==d[d.length-1]&&null!=c&&this.updateFloatingTerminalPoint(a,c,b,!1);null==e&&null!=b&&this.updateFloatingTerminalPoint(a,b,c,!0)};mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){a.setAbsoluteTerminalPoint(this.getFloatingTerminalPoint(a,b,c,d),d)};
mxGraphView.prototype.getFloatingTerminalPoint=function(a,b,c,d){b=this.getTerminalPort(a,b,d);var e=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a);c=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0"));var g=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=c)var h=Math.cos(-c),k=Math.sin(-c),e=mxUtils.getRotatedPoint(e,h,k,g);h=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);h+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||
0);a=this.getPerimeterPoint(b,e,0==c&&f,h);0!=c&&(h=Math.cos(c),k=Math.sin(c),a=mxUtils.getRotatedPoint(a,h,k,g));return a};mxGraphView.prototype.getTerminalPort=function(a,b,c){a=mxUtils.getValue(a.style,c?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT);null!=a&&(a=this.getState(this.graph.getModel().getCell(a)),null!=a&&(b=a));return b};
mxGraphView.prototype.getPerimeterPoint=function(a,b,c,d){var e=null;if(null!=a){var f=this.getPerimeterFunction(a);null!=f&&null!=b&&(d=this.getPerimeterBounds(a,d),0<d.width||0<d.height)&&(e=f(d,a,b,c));null==e&&(e=this.getPoint(a))}return e};mxGraphView.prototype.getRoutingCenterX=function(a){var b=null!=a.style?parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_X])||0:0;return a.getCenterX()+b*a.width};
mxGraphView.prototype.getPerimeterPoint=function(a,b,c,d){var e=null;if(null!=a){var f=this.getPerimeterFunction(a);if(null!=f&&null!=b&&(d=this.getPerimeterBounds(a,d),0<d.width||0<d.height)){var e=new mxPoint(b.x,b.y),g=b=!1;this.graph.model.isVertex(a.cell)&&(b=1==mxUtils.getValue(a.style,mxConstants.STYLE_FLIPH,0),g=1==mxUtils.getValue(a.style,mxConstants.STYLE_FLIPV,0),null!=a.shape&&null!=a.shape.stencil&&(b=1==mxUtils.getValue(a.style,"stencilFlipH",0)||b,g=1==mxUtils.getValue(a.style,"stencilFlipV",
0)||g),b&&(e.x=2*d.getCenterX()-e.x),g&&(e.y=2*d.getCenterY()-e.y));e=f(d,a,e,c);b&&(e.x=2*d.getCenterX()-e.x);g&&(e.y=2*d.getCenterY()-e.y)}null==e&&(e=this.getPoint(a))}return e};mxGraphView.prototype.getRoutingCenterX=function(a){var b=null!=a.style?parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_X])||0:0;return a.getCenterX()+b*a.width};
mxGraphView.prototype.getRoutingCenterY=function(a){var b=null!=a.style?parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0:0;return a.getCenterY()+b*a.height};mxGraphView.prototype.getPerimeterBounds=function(a,b){b=null!=b?b:0;null!=a&&(b+=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0));return a.getPerimeterBounds(b*this.scale)};
mxGraphView.prototype.getPerimeterFunction=function(a){a=a.style[mxConstants.STYLE_PERIMETER];if("string"==typeof a){var b=mxStyleRegistry.getValue(a);null==b&&this.isAllowEval()&&(b=mxUtils.eval(a));a=b}return"function"==typeof a?a:null};mxGraphView.prototype.getNextPoint=function(a,b,c){a=a.absolutePoints;var d=null;null!=a&&2<=a.length&&(d=a.length,d=a[c?Math.min(1,d-1):Math.max(0,d-2)]);null==d&&null!=b&&(d=new mxPoint(b.getCenterX(),b.getCenterY()));return d};
mxGraphView.prototype.getVisibleTerminal=function(a,b){for(var c=this.graph.getModel(),d=c.getTerminal(a,b),e=d;null!=d&&d!=this.currentRoot;){if(!this.graph.isCellVisible(e)||this.isCellCollapsed(d))e=d;d=c.getParent(d)}c.getParent(e)==c.getRoot()&&(e=null);return e};
@ -1205,9 +1206,9 @@ mxGraph.prototype.getOutlineConstraint=function(a,b,c){if(null!=b.shape){c=this.
mxGraph.prototype.getConnectionConstraint=function(a,b,c){b=null;var d=a.style[c?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=d){var e=a.style[c?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=e&&(b=new mxPoint(parseFloat(d),parseFloat(e)))}d=!1;null!=b&&(d=mxUtils.getValue(a.style,c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0));return new mxConnectionConstraint(b,d)};
mxGraph.prototype.setConnectionConstraint=function(a,b,c,d){if(null!=d){this.model.beginUpdate();try{null==d||null==d.point?(this.setCellStyles(c?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[a]),this.setCellStyles(c?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[a]),this.setCellStyles(c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[a])):null!=d.point&&(this.setCellStyles(c?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,d.point.x,[a]),this.setCellStyles(c?
mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,d.point.y,[a]),d.perimeter?this.setCellStyles(c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[a]):this.setCellStyles(c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[a]))}finally{this.model.endUpdate()}}};
mxGraph.prototype.getConnectionPoint=function(a,b){var c=null;if(null!=a&&null!=b.point){var d=this.view.getPerimeterBounds(a),e=new mxPoint(d.getCenterX(),d.getCenterY()),c=a.style[mxConstants.STYLE_DIRECTION],f=0;null!=c&&(c==mxConstants.DIRECTION_NORTH?f+=270:c==mxConstants.DIRECTION_WEST?f+=180:c==mxConstants.DIRECTION_SOUTH&&(f+=90),c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_SOUTH||d.rotate90());var c=new mxPoint(d.x+b.point.x*d.width,d.y+b.point.y*d.height),g=a.style[mxConstants.STYLE_ROTATION]||
0;if(b.perimeter){if(0!=f){var h=0,k=0;90==f?k=1:180==f?h=-1:270==f&&(k=-1);c=mxUtils.getRotatedPoint(c,h,k,e)}c=this.view.getPerimeterPoint(a,c,!1)}else g+=f;this.getModel().isVertex(a.cell)&&(f=1==a.style[mxConstants.STYLE_FLIPH],h=1==a.style[mxConstants.STYLE_FLIPV],null!=a.shape&&null!=a.shape.stencil&&(f=1==mxUtils.getValue(a.style,"stencilFlipH",0)||f,h=1==mxUtils.getValue(a.style,"stencilFlipV",0)||h),f&&(c.x=2*d.getCenterX()-c.x),h&&(c.y=2*d.getCenterY()-c.y));0!=g&&null!=c&&(d=mxUtils.toRadians(g),
h=Math.cos(d),k=Math.sin(d),c=mxUtils.getRotatedPoint(c,h,k,e))}null!=c&&(c.x=Math.round(c.x),c.y=Math.round(c.y));return c};mxGraph.prototype.connectCell=function(a,b,c,d){this.model.beginUpdate();try{var e=this.model.getTerminal(a,c);this.cellConnected(a,b,c,d);this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",a,"terminal",b,"source",c,"previous",e))}finally{this.model.endUpdate()}return a};
mxGraph.prototype.getConnectionPoint=function(a,b){var c=null;if(null!=a&&null!=b.point){var c=this.view.getPerimeterBounds(a),d=new mxPoint(c.getCenterX(),c.getCenterY()),e=a.style[mxConstants.STYLE_DIRECTION],f=0;null!=e&&(e==mxConstants.DIRECTION_NORTH?f+=270:e==mxConstants.DIRECTION_WEST?f+=180:e==mxConstants.DIRECTION_SOUTH&&(f+=90),e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_SOUTH||c.rotate90());var c=new mxPoint(c.x+b.point.x*c.width,c.y+b.point.y*c.height),g=a.style[mxConstants.STYLE_ROTATION]||
0;if(b.perimeter){if(0!=f){var h=e=0;90==f?h=1:180==f?e=-1:270==f&&(h=-1);c=mxUtils.getRotatedPoint(c,e,h,d)}c=this.view.getPerimeterPoint(a,c,!1)}else g+=f;0!=g&&null!=c&&(f=mxUtils.toRadians(g),e=Math.cos(f),h=Math.sin(f),c=mxUtils.getRotatedPoint(c,e,h,d))}null!=c&&(c.x=Math.round(c.x),c.y=Math.round(c.y));return c};
mxGraph.prototype.connectCell=function(a,b,c,d){this.model.beginUpdate();try{var e=this.model.getTerminal(a,c);this.cellConnected(a,b,c,d);this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",a,"terminal",b,"source",c,"previous",e))}finally{this.model.endUpdate()}return a};
mxGraph.prototype.cellConnected=function(a,b,c,d){if(null!=a){this.model.beginUpdate();try{var e=this.model.getTerminal(a,c);this.setConnectionConstraint(a,b,c,d);this.isPortsEnabled()&&(d=null,this.isPort(b)&&(d=b.getId(),b=this.getTerminalForPort(b,c)),this.setCellStyles(c?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,d,[a]));this.model.setTerminal(a,b,c);this.resetEdgesOnConnect&&this.resetEdge(a);this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",a,"terminal",b,"source",
c,"previous",e))}finally{this.model.endUpdate()}}};
mxGraph.prototype.disconnectGraph=function(a){if(null!=a){this.model.beginUpdate();try{for(var b=this.view.scale,c=this.view.translate,d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++)if(this.model.isEdge(a[e])){var f=this.model.getGeometry(a[e]);if(null!=f){var g=this.view.getState(a[e]),h=this.view.getState(this.model.getParent(a[e]));if(null!=g&&null!=h){var f=f.clone(),k=-h.origin.x,l=-h.origin.y,m=g.absolutePoints,n=this.model.getTerminal(a[e],!0);if(null!=n&&this.isCellDisconnectable(a[e],
@ -1741,133 +1742,138 @@ var A=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function()
a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,q.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,q.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,q.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,q.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;
this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function t(){mxRectangleShape.call(this)}function x(){mxActor.call(this)}function w(){mxActor.call(this)}function z(){mxRectangleShape.call(this)}function y(){mxRectangleShape.call(this)}function u(){mxCylinder.call(this)}function I(){mxShape.call(this)}function L(){mxShape.call(this)}function D(){mxEllipse.call(this)}function B(){mxShape.call(this)}
function E(){mxShape.call(this)}function C(){mxRectangleShape.call(this)}function H(){mxShape.call(this)}function M(){mxShape.call(this)}function J(){mxShape.call(this)}function U(){mxCylinder.call(this)}function S(){mxDoubleEllipse.call(this)}function aa(){mxDoubleEllipse.call(this)}function A(){mxArrowConnector.call(this);this.spacing=0}function v(){mxArrowConnector.call(this);this.spacing=0}function R(){mxActor.call(this)}function K(){mxRectangleShape.call(this)}function F(){mxActor.call(this)}
function ca(){mxActor.call(this)}function N(){mxActor.call(this)}function G(){mxActor.call(this)}function Y(){mxActor.call(this)}function T(){mxActor.call(this)}function Z(){mxActor.call(this)}function da(){mxActor.call(this)}function P(){mxActor.call(this)}function ea(){mxActor.call(this)}function W(){mxEllipse.call(this)}function O(){mxEllipse.call(this)}function Q(){mxEllipse.call(this)}function fa(){mxRhombus.call(this)}function V(){mxEllipse.call(this)}function X(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}
function pa(){mxEllipse.call(this)}function qa(){mxActor.call(this)}function la(){mxActor.call(this)}function ma(){mxActor.call(this)}function ja(){mxConnector.call(this)}function wa(a,b,c,d,e,f,g,h,k,l){g+=k;var m=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(m.x-e-g,m.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxCylinder);a.prototype.size=20;a.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));f?(a.moveTo(b,e),a.lineTo(b,b),a.lineTo(0,0),a.moveTo(b,b),a.lineTo(d,b)):(a.moveTo(0,0),a.lineTo(d-b,0),a.lineTo(d,b),a.lineTo(d,e),a.lineTo(b,e),a.lineTo(0,e-b),a.lineTo(0,0),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.cube=a;var xa=Math.tan(mxUtils.toRadians(30)),ka=(.5-xa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/xa);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5*b,b*ka);a.lineTo(b,
.25*b);a.lineTo(.5*b,(.5-ka)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.isoRectangle=b;mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+xa));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-ka)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-ka)*b),a.lineTo(.5*b,(1-ka)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*ka),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-ka)*b),a.lineTo(0,.75*b),
function ca(){mxActor.call(this)}function N(){mxActor.call(this)}function G(){mxActor.call(this)}function Y(){mxActor.call(this)}function T(){mxActor.call(this)}function Z(){mxActor.call(this)}function da(){mxActor.call(this)}function P(){mxActor.call(this)}function ea(){mxActor.call(this)}function W(){mxEllipse.call(this)}function O(){mxEllipse.call(this)}function Q(){mxEllipse.call(this)}function fa(){mxRhombus.call(this)}function V(){mxEllipse.call(this)}function X(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}
function oa(){mxEllipse.call(this)}function pa(){mxActor.call(this)}function la(){mxActor.call(this)}function ma(){mxActor.call(this)}function ja(){mxConnector.call(this)}function va(a,b,c,d,e,f,g,h,k,l){g+=k;var m=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(m.x-e-g,m.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxCylinder);a.prototype.size=20;a.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));f?(a.moveTo(b,e),a.lineTo(b,b),a.lineTo(0,0),a.moveTo(b,b),a.lineTo(d,b)):(a.moveTo(0,0),a.lineTo(d-b,0),a.lineTo(d,b),a.lineTo(d,e),a.lineTo(b,e),a.lineTo(0,e-b),a.lineTo(0,0),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.cube=a;var wa=Math.tan(mxUtils.toRadians(30)),ka=(.5-wa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/wa);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5*b,b*ka);a.lineTo(b,
.25*b);a.lineTo(.5*b,(.5-ka)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.isoRectangle=b;mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+wa));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-ka)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-ka)*b),a.lineTo(.5*b,(1-ka)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*ka),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-ka)*b),a.lineTo(0,.75*b),
a.close());a.end()};mxCellRenderer.prototype.defaultShapes.isoCube=c;mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,-b);f||(a.moveTo(0,
b),a.curveTo(0,-b/3,d,-b/3,d,b),a.lineTo(d,e-b),a.curveTo(d,e+b/3,0,e+b/3,0,e-b),a.close())};d.prototype.getLabelBounds=function(a){var b=2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1);if(!this.flipV&&(null==this.direction||this.direction==mxConstants.DIRECTION_EAST)||this.flipV&&this.direction==mxConstants.DIRECTION_WEST)a.y+=b,a.height-=b;else if(!this.flipV&&this.direction==mxConstants.DIRECTION_SOUTH||this.flipV&&this.direction==mxConstants.DIRECTION_NORTH)a.width-=b;else if(!this.flipV&&
this.direction==mxConstants.DIRECTION_WEST||this.flipV&&(null==this.direction||this.direction==mxConstants.DIRECTION_EAST))a.height-=b;else if(!this.flipV&&this.direction==mxConstants.DIRECTION_NORTH||this.flipV&&this.direction==mxConstants.DIRECTION_SOUTH)a.x+=b,a.width-=b;return a};mxCellRenderer.prototype.defaultShapes.datastore=d;mxUtils.extend(e,mxCylinder);e.prototype.size=30;e.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));f?(a.moveTo(d-b,0),a.lineTo(d-b,b),a.lineTo(d,b)):(a.moveTo(0,0),a.lineTo(d-b,0),a.lineTo(d,b),a.lineTo(d,e),a.lineTo(0,e),a.lineTo(0,0),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.note=e;mxUtils.extend(f,mxActor);f.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d/2,.5*e,d,0);a.quadTo(.5*d,e/2,d,e);a.quadTo(d/2,.5*e,0,e);a.quadTo(.5*d,e/2,0,0);a.end()};mxCellRenderer.prototype.defaultShapes["switch"]=f;mxUtils.extend(g,mxCylinder);g.prototype.tabWidth=
60;g.prototype.tabHeight=20;g.prototype.tabPosition="right";g.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var g=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);f?"left"==g?(a.moveTo(0,c),a.lineTo(b,c)):(a.moveTo(d-b,c),a.lineTo(d,c)):("left"==g?(a.moveTo(0,0),a.lineTo(b,0),a.lineTo(b,c),a.lineTo(d,c)):(a.moveTo(0,
c),a.lineTo(d-b,c),a.lineTo(d-b,0),a.lineTo(d,0)),a.lineTo(d,e),a.lineTo(0,e),a.lineTo(0,c),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.folder=g;mxUtils.extend(h,mxActor);h.prototype.size=30;h.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d,0),new mxPoint(d,e),new mxPoint(0,
e),new mxPoint(0,b)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.card=h;mxUtils.extend(k,mxActor);k.prototype.size=.4;k.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,b/2);a.quadTo(d/4,1.4*b,d/2,b/2);a.quadTo(3*d/4,b*(1-1.4),d,b/2);a.lineTo(d,e-b/2);a.quadTo(3*d/4,e-1.4*b,d/2,e-b/2);a.quadTo(d/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.tape=
k;mxUtils.extend(l,mxActor);l.prototype.size=.3;l.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,0);a.lineTo(d,0);a.lineTo(d,e-b/2);a.quadTo(3*d/4,e-1.4*b,d/2,e-b/2);a.quadTo(d/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.document=l;mxUtils.extend(m,mxActor);m.prototype.size=.2;m.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d,0),new mxPoint(d-b,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.parallelogram=m;mxUtils.extend(n,mxActor);n.prototype.size=.2;n.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,e)],this.isRounded,c,!0)};mxCellRenderer.prototype.defaultShapes.trapezoid=n;mxUtils.extend(p,mxActor);p.prototype.size=.5;p.prototype.redrawPath=function(a,b,c,d,e){a.setFillColor(null);b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,
0),new mxPoint(b,0),new mxPoint(b,e/2),new mxPoint(0,e/2),new mxPoint(b,e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);a.end()};mxCellRenderer.prototype.defaultShapes.curlyBracket=p;mxUtils.extend(r,mxActor);r.prototype.redrawPath=function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.parallelMarker=r;q.prototype.moveTo=
function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};q.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};q.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};q.prototype.curveTo=function(a,b,c,d,e,f){this.originalCurveTo.apply(this.canvas,
arguments);this.lastX=e;this.lastY=f};q.prototype.arcTo=function(a,b,c,d,e,f,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=g};q.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),f=Math.sqrt(d*d+e*e);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var g=Math.round(f/10),h=this.defaultVariation;
5>g&&(g=5,h/=3);for(var k=c(a-this.lastX)*d/g,c=c(b-this.lastY)*e/g,d=d/f,e=e/f,f=0;f<g;f++){var l=(Math.random()-.5)*h;this.originalLineTo.call(this.canvas,k*f+this.lastX-l*e,c*f+this.lastY-l*d)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};q.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;
this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};var Da=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new q(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Da.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Ea=mxRectangleShape.prototype.isHtmlAllowed;
mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Ea.apply(this,arguments)};var Fa=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,c,d,e){if(null==a.handJiggle)Fa.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=
mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1),a.begin(),this.isRounded?(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.min(d*f,e*f),a.moveTo(b+f,c),a.lineTo(b+d-f,c),a.quadTo(b+d,c,b+d,c+f),a.lineTo(b+d,c+e-f),a.quadTo(b+d,c+e,b+d-f,c+e),a.lineTo(b+f,c+e),a.quadTo(b,c+e,b,c+e-f),a.lineTo(b,c+f),a.quadTo(b,c,b+f,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),
a.close(),a.end(),a.fillAndStroke()}};var Ga=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&Ga.apply(this,arguments)};mxUtils.extend(t,mxRectangleShape);t.prototype.size=.1;t.prototype.isHtmlAllowed=function(){return!1};t.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=
a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=d;a.width-=2*d}return a};t.prototype.paintForeground=function(a,b,c,d,e){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.moveTo(b+d-f,c);a.lineTo(b+d-f,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.prototype.defaultShapes.process=t;mxUtils.extend(x,mxActor);x.prototype.size=.2;x.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.step=x;mxUtils.extend(w,mxHexagon);w.prototype.size=.25;w.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.prototype.defaultShapes.hexagon=w;mxUtils.extend(z,mxRectangleShape);z.prototype.isHtmlAllowed=function(){return!1};z.prototype.paintForeground=function(a,b,c,d,e){var f=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+f);a.lineTo(b+d/2,c+e-f);a.moveTo(b+f,c+e/2);a.lineTo(b+d-f,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.prototype.defaultShapes.plus=z;var Aa=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Aa.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+
1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&(a.setShadow(!1),Aa.apply(this,[a,b,c,d,e]))}};mxUtils.extend(y,mxRectangleShape);y.prototype.isHtmlAllowed=function(){return!1};y.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};y.prototype.paintForeground=function(a,b,c,
d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.prototype.defaultShapes[this.style["symbol"+f]];if(null!=g){var h=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],l=this.style["symbol"+f+"Width"],m=this.style["symbol"+f+"Height"],
sa=this.style["symbol"+f+"Spacing"]||0,n=this.style["symbol"+f+"VSpacing"]||sa,p=this.style["symbol"+f+"ArcSpacing"];null!=p&&(p*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),sa+=p,n+=p);var p=b,oa=c,p=h==mxConstants.ALIGN_CENTER?p+(d-l)/2:h==mxConstants.ALIGN_RIGHT?p+(d-l-sa):p+sa,oa=k==mxConstants.ALIGN_MIDDLE?oa+(e-m)/2:k==mxConstants.ALIGN_BOTTOM?oa+(e-m-n):oa+n;a.save();h=new g;h.style=this.style;g.prototype.paintVertexShape.call(h,a,p,oa,l,m);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.prototype.defaultShapes.ext=y;mxUtils.extend(u,mxCylinder);u.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.prototype.defaultShapes.message=u;mxUtils.extend(I,mxShape);I.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,
e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlActor=I;mxUtils.extend(L,mxShape);L.prototype.getLabelBounds=function(a){return new mxRectangle(a.x+a.width/6,a.y,5*a.width/6,a.height)};L.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();
a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.umlBoundary=L;mxUtils.extend(D,mxEllipse);D.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlEntity=D;mxUtils.extend(B,mxShape);B.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,
0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlDestroy=B;mxUtils.extend(E,mxShape);E.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,e/8,d,7*e/8);a.fillAndStroke()};E.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);
a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlControl=E;mxUtils.extend(C,mxRectangleShape);C.prototype.size=40;C.prototype.isHtmlAllowed=function(){return!1};C.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};C.prototype.paintBackground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,
"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,c,d,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=C&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,b,c,d,f),a.restore()));f<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+f),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};C.prototype.paintForeground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,
a,b,c,d,Math.min(e,f))};mxCellRenderer.prototype.defaultShapes.umlLifeline=C;mxUtils.extend(H,mxShape);H.prototype.width=60;H.prototype.height=30;H.prototype.corner=10;H.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.style,"width",this.width))*this.scale)),c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"height",this.height))*this.scale));return new mxRectangle(a.x,a.y,b,c)};H.prototype.paintBackground=function(a,b,c,d,
e){var f=this.corner,g=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height))));a.begin();a.moveTo(b,c);a.lineTo(b+g,c);a.lineTo(b+g,c+Math.max(0,h-1.5*f));a.lineTo(b+Math.max(0,g-f),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.prototype.defaultShapes.umlFrame=
H;mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=C.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};
mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&
(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)),a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.lineIntersection=function(a,b,c,d){var e=(d.y-c.y)*(b.x-a.x)-(d.x-c.x)*(b.y-a.y);if(0==e)return null;var f=a.y-c.y,f=((d.x-c.x)*f-(d.y-c.y)*(a.x-c.x))/e;c=a.x+f*(b.x-a.x);a=a.y+f*(b.y-a.y);return 0<=f&&1>=f?(f=d.x-c,d=d.y-a,{dist:Math.sqrt(d*d+f*f),p:new mxPoint(c,a)}):null};mxPerimeter.getPerimeterPoint=function(a,b,c){for(var d=
!1,e=0;e<a.length-1;e++){var f=mxPerimeter.lineIntersection(a[e],a[e+1],b,c);null!=f&&(!d||d.dist>f.dist)&&(d=f)}return d.p};mxPerimeter.ParallelogramPerimeter=function(a,b,c,d){var e=m.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.width*Math.max(0,Math.min(1,e));b=a.x;var g=a.y,e=a.width,h=a.height,f=[new mxPoint(b+f,g),new mxPoint(b+e,g),new mxPoint(b+e-f,g+h),new mxPoint(b,g+h),new mxPoint(b+f,g)],g=a.getCenterX();a=a.getCenterY();a=new mxPoint(g,a);d&&(c.x<b||c.x>b+e?
a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(f,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,c,d){var e=n.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.width*Math.max(0,Math.min(1,e));b=a.x;var g=a.y,e=a.width,h=a.height,f=[new mxPoint(b+f,g),new mxPoint(b+e-f,g),new mxPoint(b+e,g+h),new mxPoint(b,g+h),new mxPoint(b+f,g)],g=a.getCenterX();a=a.getCenterY();a=new mxPoint(g,a);
d&&(c.x<b||c.x>b+e?a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(f,a,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,c,d){var e=x.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.width*Math.max(0,Math.min(1,e));b=a.x;var g=a.y,e=a.width,h=a.height,k=a.getCenterX();a=a.getCenterY();f=[new mxPoint(b,g),new mxPoint(b+e-f,g),new mxPoint(b+e,a),new mxPoint(b+e-f,g+h),new mxPoint(b,g+h),new mxPoint(b+
f,a),new mxPoint(b,g)];a=new mxPoint(k,a);d&&(c.x<b||c.x>b+e?a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(f,a,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,c,d){var e=w.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.width*Math.max(0,Math.min(1,e));b=a.x;var g=a.y,e=a.width,h=a.height,k=a.getCenterX();a=a.getCenterY();f=[new mxPoint(b+f,g),new mxPoint(b+e-f,g),new mxPoint(b+e,a),new mxPoint(b+e-f,
g+h),new mxPoint(b+f,g+h),new mxPoint(b,a),new mxPoint(b+f,g)];a=new mxPoint(k,a);d&&(c.x<b||c.x>b+e?a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(f,a,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(M,mxShape);M.prototype.size=10;M.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,c);a.ellipse((d-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(d/2,f);a.lineTo(d/2,e);a.end();
a.stroke()};mxCellRenderer.prototype.defaultShapes.lollipop=M;mxUtils.extend(J,mxShape);J.prototype.size=10;J.prototype.inset=2;J.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.begin();a.moveTo(d/2,f+g);a.lineTo(d/2,e);a.end();a.stroke();a.begin();a.moveTo((d-f)/2-g,f/2);a.quadTo((d-f)/2-g,f+g,d/2,f+g);a.quadTo((d+f)/2+g,f+g,(d+f)/2+g,f/2);
a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.requires=J;mxUtils.extend(U,mxCylinder);U.prototype.jettyWidth=32;U.prototype.jettyHeight=12;U.prototype.redrawPath=function(a,b,c,d,e,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=g/2;var g=c+g/2,h=.3*e-b/2,k=.7*e-b/2;f?(a.moveTo(c,h),a.lineTo(g,h),a.lineTo(g,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(g,k),a.lineTo(g,k+b),a.lineTo(c,
k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e),a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.component=U;mxUtils.extend(S,mxDoubleEllipse);S.prototype.outerStroke=!0;S.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,
c,d,e),a.stroke())};mxCellRenderer.prototype.defaultShapes.endState=S;mxUtils.extend(aa,S);aa.prototype.outerStroke=!1;mxCellRenderer.prototype.defaultShapes.startState=aa;mxUtils.extend(A,mxArrowConnector);A.prototype.defaultWidth=4;A.prototype.isOpenEnded=function(){return!0};A.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};A.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.prototype.defaultShapes.link=
A;mxUtils.extend(v,mxArrowConnector);v.prototype.defaultWidth=10;v.prototype.defaultArrowWidth=20;v.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};v.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};v.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.prototype.defaultShapes.flexArrow=
v;mxUtils.extend(R,mxActor);R.prototype.size=30;R.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.manualInput=R;mxUtils.extend(K,mxRectangleShape);K.prototype.dx=20;K.prototype.dy=20;K.prototype.isHtmlAllowed=
function(){return!1};K.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);
a.end();a.stroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.internalStorage=K;mxUtils.extend(F,mxActor);F.prototype.dx=20;F.prototype.dy=20;F.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.prototype.defaultShapes.corner=F;mxUtils.extend(ca,mxActor);ca.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.prototype.defaultShapes.crossbar=ca;mxUtils.extend(N,mxActor);N.prototype.dx=
20;N.prototype.dy=20;N.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/
2,e),new mxPoint((d-b)/2,c),new mxPoint(0,c)],this.isRounded,f,!0);a.end()};mxCellRenderer.prototype.defaultShapes.tee=N;mxUtils.extend(G,mxActor);G.prototype.arrowWidth=.3;G.prototype.arrowSize=.2;G.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.prototype.defaultShapes.singleArrow=G;mxUtils.extend(Y,mxActor);Y.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",G.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"arrowSize",G.prototype.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.prototype.defaultShapes.doubleArrow=Y;mxUtils.extend(T,mxActor);T.prototype.size=.1;T.prototype.redrawPath=function(a,
b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.dataStorage=T;mxUtils.extend(Z,mxActor);Z.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.or=Z;mxUtils.extend(da,mxActor);da.prototype.redrawPath=function(a,
b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.xor=da;mxUtils.extend(P,mxActor);P.prototype.size=20;P.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,
e),new mxPoint(0,.8*b)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.loopLimit=P;mxUtils.extend(ea,mxActor);ea.prototype.size=.375;ea.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()};
mxCellRenderer.prototype.defaultShapes.offPageConnector=ea;mxUtils.extend(W,mxEllipse);W.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.tapeData=W;mxUtils.extend(O,mxEllipse);O.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+
d,c+e/2);a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.orEllipse=O;mxUtils.extend(Q,mxEllipse);Q.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.sumEllipse=
Q;mxUtils.extend(fa,mxRhombus);fa.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.sortShape=fa;mxUtils.extend(V,mxEllipse);V.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,
c+e/2);a.close();a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.collate=V;mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=function(a,b,c,d,e){var f=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,c+e);a.moveTo(b,f);a.lineTo(b+10,f-5);a.moveTo(b,f);a.lineTo(b+10,f+5);a.moveTo(b,f);a.lineTo(b+d,f);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,f);a.lineTo(b+d-10,f-5);a.moveTo(b+d,f);a.lineTo(b+d-10,f+5);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.dimension=X;mxUtils.extend(va,
mxEllipse);va.prototype.paintVertexShape=function(a,b,c,d,e){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(b,c,d,e),a.fill(),"1"==mxUtils.getValue(this.style,"top","1")&&(a.begin(),a.moveTo(b,c),a.lineTo(b+d,c),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"right","1")&&(a.begin(),a.moveTo(b+d,c),a.lineTo(b+d,c+e),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"bottom","1")&&
(a.begin(),a.moveTo(b+d,c+e),a.lineTo(b,c+e),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"left","1")&&(a.begin(),a.moveTo(b,c+e),a.lineTo(b,c),a.end(),a.stroke()))};mxCellRenderer.prototype.defaultShapes.partialRectangle=va;mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/
2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.lineEllipse=pa;mxUtils.extend(qa,mxActor);qa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.delay=qa;mxUtils.extend(la,mxActor);la.prototype.size=.2;la.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,
"size",this.size))));b=(e-f)/2;c=b+f;var g=(d-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(d,b);a.lineTo(d,c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.cross=la;mxUtils.extend(ma,mxActor);ma.prototype.size=.25;ma.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,
e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.display=ma;mxUtils.extend(ja,mxConnector);ja.prototype.origPaintEdgeShape=ja.prototype.paintEdgeShape;ja.prototype.paintEdgeShape=function(a,b,c){var d=a.state.dashed,e=a.state.fixDash;ja.prototype.origPaintEdgeShape.apply(this,arguments);if(3<=a.state.strokeWidth){var f=mxUtils.getValue(this.style,"fillColor",null);null!=f&&(a.setStrokeColor(f),a.setStrokeWidth(a.state.strokeWidth-
2),a.setDashed(d,e),ja.prototype.origPaintEdgeShape.apply(this,arguments))}};mxCellRenderer.prototype.defaultShapes.filledEdge=ja;mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-
3*n/2-m/2);a.moveTo(d.x-m/2+n/2,d.y-n/2-m/2);a.lineTo(d.x-n/2-3*m/2,d.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",wa);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=wa.apply(this,arguments),p=e*(g+2*k),q=f*(g+2*k);return function(){n.apply(this,arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*p+e*k,m.y-2*q+f*k);a.moveTo(m.x-p-q+f*k,m.y-q+p-e*k);a.lineTo(m.x+q-p-f*k,m.y-q-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,
h,k,l){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,c,d,e,f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/
a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ba=function(a,b,c){return na(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=Math.round(2*b)/a.view.scale-c})},na=function(a,b,c,d,e){var f=a.absolutePoints,g=f.length-1,h=a.view.translate,k=a.view.scale,l=c?f[0]:f[g],m=c?f[1]:f[g-1],n=m.x-l.x,p=m.y-l.y,q=Math.sqrt(n*
n+p*p);return ba(a,b,function(a){a=d.call(this,q,n/q,p/q,l,m);return new mxPoint(a.x/k-h.x,a.y/k-h.y)},function(a,b,c){a=Math.sqrt(n*n+p*p);b.x=(b.x+h.x)*k;b.y=(b.y+h.y)*k;e.call(this,a,n/a,p/a,l,m,b,c)})},ha=function(a){return function(b){return[ba(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",G.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",G.prototype.arrowSize)));return new mxPoint(b.x+
(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(b.x+b.width-c.x)/b.width))})]}},ya=function(a,b,c){return function(d){var e=[ba(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,
c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ga(d));return e}},ra=function(a,b,c){c=null!=c?c:1;return function(d){var e=[ba(d,["size"],function(b){var c=parseFloat(mxUtils.getValue(this.state.style,"size",a));return new mxPoint(b.x+c*b.width,b.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(c,(b.x-a.x)/a.width))})];b&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ga(d));return e}},Ca=function(a){return function(b){var c=
[ba(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))})];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ga(b));return c}},ia=function(){return function(a){var b=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b}},ga=function(a,b){return ba(a,
[mxConstants.STYLE_ARCSIZE],function(c){var d=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/2,c.height/2),Math.min(c.width,c.height)*d),c.y+(null!=b?b:c.height/8))},function(a,b,c){this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(a.width-b.x+a.x)/Math.min(a.width,a.height))))})},ba=function(a,b,c,d,e){a=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);
a.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};a.getPosition=c;a.setPosition=d;a.ignoreGrid=null!=e?e:!0;return a},za={link:function(a){return[Ba(a,!0,10),Ba(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(na(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;
f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&
(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(na(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,
mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&
(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=
mxConstants.NONE&&(c.push(na(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,
f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(na(a,
["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-
d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=
a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},swimlane:function(a){var b=[ba(a,[mxConstants.STYLE_STARTSIZE],function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(),b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,
c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ga(a,c/2))}return b},label:ia(),ext:ia(),rectangle:ia(),triangle:ia(),rhombus:ia(),umlLifeline:function(a){return[ba(a,
["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",C.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){var b=[ba(a,["width","height"],function(a){var b=Math.max(H.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",H.prototype.width))),c=Math.max(1.5*H.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,
"height",H.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(H.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*H.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},process:function(a){var b=[ba(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",t.prototype.size))));
return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},cross:function(a){return[ba(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",la.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,a.height);this.state.style.size=
Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",e.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b=[ba(a,["size"],
function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",R.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},dataStorage:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size))));return new mxPoint(a.x+
(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},internalStorage:function(a){var b=[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",K.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",K.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=
Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},corner:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",F.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",F.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=
Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},tee:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",N.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",N.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},
singleArrow:ha(1),doubleArrow:ha(.5),folder:function(a){return[ba(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",g.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",g.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c=Math.max(0,Math.min(a.width,
b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},document:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,
Math.min(1,(a.y+a.height-b.y)/a.height))})]},tape:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ea.prototype.size))));return new mxPoint(a.getCenterX(),
a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:ra(x.prototype.size,!0),hexagon:ra(w.prototype.size,!0,.5),curlyBracket:ra(p.prototype.size,!1),display:ra(ma.prototype.size,!1),cube:ya(1,a.prototype.size,!1),card:ya(.5,h.prototype.size,!0),loopLimit:ya(.5,P.prototype.size,!0),trapezoid:Ca(.5),parallelogram:Ca(1)};Graph.createHandle=ba;Graph.handleFactory=za;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&
this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==this.state.view.graph.cellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=za[a];if(null!=a)return a(this.state)}return null};mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==this.state.view.graph.cellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);
a=za[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var ta=new mxPoint(1,0),ua=new mxPoint(1,0),ha=mxUtils.toRadians(-30),ta=mxUtils.getRotatedPoint(ta,Math.cos(ha),Math.sin(ha)),ha=mxUtils.toRadians(-150),ua=mxUtils.getRotatedPoint(ua,Math.cos(ha),Math.sin(ha));mxEdgeStyle.IsometricConnector=function(a,b,c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,
d));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=c&&(g=new mxPoint(c.getCenterX(),c.getCenterY()));var k=ta.x,l=ta.y,m=ua.x,n=ua.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,c){a-=q.x;var d=b-q.y;b=(n*a-m*d)/(k*n-l*m);a=(l*a-k*d)/(l*m-k*n);p?(c&&(q=new mxPoint(q.x+k*b,q.y+l*b),e.push(q)),q=new mxPoint(q.x+m*a,q.y+n*a)):(c&&(q=new mxPoint(q.x+m*a,q.y+n*a),e.push(q)),q=new mxPoint(q.x+k*b,q.y+l*b));e.push(q)};
var q=h;null==d&&(d=new mxPoint(h.x+(g.x-h.x)/2,h.y+(g.y-h.y)/2));a(d.x,d.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Ha=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(a);c.snapToTerminals=!1;return c}return Ha.apply(this,arguments)};b.prototype.constraints=[];c.prototype.constraints=[];mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,
0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),
new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;
mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;e.prototype.constraints=mxRectangleShape.prototype.constraints;h.prototype.constraints=mxRectangleShape.prototype.constraints;a.prototype.constraints=mxRectangleShape.prototype.constraints;g.prototype.constraints=mxRectangleShape.prototype.constraints;K.prototype.constraints=mxRectangleShape.prototype.constraints;
T.prototype.constraints=mxRectangleShape.prototype.constraints;W.prototype.constraints=mxEllipse.prototype.constraints;O.prototype.constraints=mxEllipse.prototype.constraints;Q.prototype.constraints=mxEllipse.prototype.constraints;pa.prototype.constraints=mxEllipse.prototype.constraints;R.prototype.constraints=mxRectangleShape.prototype.constraints;qa.prototype.constraints=mxRectangleShape.prototype.constraints;ma.prototype.constraints=mxRectangleShape.prototype.constraints;P.prototype.constraints=
mxRectangleShape.prototype.constraints;ea.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,
.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];I.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,
1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];U.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];f.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,
.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];x.prototype.constraints=
[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(.1,.25),!1),new mxConnectionConstraint(new mxPoint(.2,.5),!1),new mxConnectionConstraint(new mxPoint(.1,.75),!1),new mxConnectionConstraint(new mxPoint(.9,.25),!1),
new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.9,.75),!1)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];M.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;
mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,
0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(.125,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(.125,.75),!1),new mxConnectionConstraint(new mxPoint(.875,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.875,.75),!1),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,
1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,
.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;n.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,
.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;N.prototype.constraints=null;F.prototype.constraints=null;ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,
1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];G.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];Y.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),
new mxConnectionConstraint(new mxPoint(1,.5),!1)];la.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];C.prototype.constraints=null;Z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,
.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];da.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)]})();
e),new mxPoint(0,b)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.card=h;mxUtils.extend(k,mxActor);k.prototype.size=.4;k.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,b/2);a.quadTo(d/4,1.4*b,d/2,b/2);a.quadTo(3*d/4,b*(1-1.4),d,b/2);a.lineTo(d,e-b/2);a.quadTo(3*d/4,e-1.4*b,d/2,e-b/2);a.quadTo(d/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};k.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"size",this.size),c=a.width,d=a.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return b*=d,new mxRectangle(a.x,a.y+b,c,d-2*b);b*=c;return new mxRectangle(a.x+b,a.y,c-2*b,d)}return a};mxCellRenderer.prototype.defaultShapes.tape=k;mxUtils.extend(l,mxActor);l.prototype.size=.3;l.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));a.moveTo(0,0);a.lineTo(d,0);a.lineTo(d,e-b/2);a.quadTo(3*d/4,e-1.4*b,d/2,e-b/2);a.quadTo(d/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.document=l;mxUtils.extend(m,mxActor);m.prototype.size=.2;m.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,
e),new mxPoint(b,0),new mxPoint(d,0),new mxPoint(d-b,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.parallelogram=m;mxUtils.extend(n,mxActor);n.prototype.size=.2;n.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,e)],this.isRounded,
c,!0)};mxCellRenderer.prototype.defaultShapes.trapezoid=n;mxUtils.extend(p,mxActor);p.prototype.size=.5;p.prototype.redrawPath=function(a,b,c,d,e){a.setFillColor(null);b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(b,0),new mxPoint(b,e/2),new mxPoint(0,e/2),new mxPoint(b,e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);
a.end()};mxCellRenderer.prototype.defaultShapes.curlyBracket=p;mxUtils.extend(r,mxActor);r.prototype.redrawPath=function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.parallelMarker=r;q.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};q.prototype.close=
function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};q.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};q.prototype.curveTo=function(a,b,c,d,e,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=f};q.prototype.arcTo=function(a,b,c,d,e,f,g){this.originalArcTo.apply(this.canvas,arguments);
this.lastX=f;this.lastY=g};q.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),f=Math.sqrt(d*d+e*e);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var g=Math.round(f/10),h=this.defaultVariation;5>g&&(g=5,h/=3);for(var k=c(a-this.lastX)*d/g,c=c(b-this.lastY)*e/g,d=d/f,e=e/f,f=0;f<g;f++){var l=(Math.random()-.5)*h;this.originalLineTo.call(this.canvas,
k*f+this.lastX-l*e,c*f+this.lastY-l*d)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};q.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};var Ca=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=
function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new q(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ca.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Da=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Da.apply(this,arguments)};
var Ea=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,c,d,e){if(null==a.handJiggle)Ea.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1),a.begin(),this.isRounded?(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.min(d*f,e*f),a.moveTo(b+f,c),a.lineTo(b+d-f,c),a.quadTo(b+d,c,b+d,c+f),a.lineTo(b+d,c+e-f),a.quadTo(b+d,c+e,b+d-f,c+e),a.lineTo(b+f,c+e),a.quadTo(b,c+e,b,c+e-f),a.lineTo(b,c+f),a.quadTo(b,c,b+f,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};var Fa=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&
Fa.apply(this,arguments)};mxUtils.extend(t,mxRectangleShape);t.prototype.size=.1;t.prototype.isHtmlAllowed=function(){return!1};t.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=
mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=d;a.width-=2*d}return a};t.prototype.paintForeground=function(a,b,c,d,e){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);
a.moveTo(b+d-f,c);a.lineTo(b+d-f,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.prototype.defaultShapes.process=t;mxUtils.extend(x,mxActor);x.prototype.size=.2;x.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/
2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.step=x;mxUtils.extend(w,mxHexagon);w.prototype.size=.25;w.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,
e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.prototype.defaultShapes.hexagon=w;mxUtils.extend(z,mxRectangleShape);z.prototype.isHtmlAllowed=function(){return!1};z.prototype.paintForeground=function(a,b,c,d,e){var f=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+f);a.lineTo(b+d/2,c+e-f);a.moveTo(b+f,c+e/2);a.lineTo(b+d-f,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.prototype.defaultShapes.plus=z;var za=mxRhombus.prototype.paintVertexShape;
mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){za.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&(a.setShadow(!1),
za.apply(this,[a,b,c,d,e]))}};mxUtils.extend(y,mxRectangleShape);y.prototype.isHtmlAllowed=function(){return!1};y.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};y.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+
parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.prototype.defaultShapes[this.style["symbol"+f]];if(null!=g){var h=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],l=this.style["symbol"+f+"Width"],m=this.style["symbol"+f+"Height"],ra=this.style["symbol"+f+"Spacing"]||0,n=this.style["symbol"+f+"VSpacing"]||ra,p=this.style["symbol"+
f+"ArcSpacing"];null!=p&&(p*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),ra+=p,n+=p);var p=b,q=c,p=h==mxConstants.ALIGN_CENTER?p+(d-l)/2:h==mxConstants.ALIGN_RIGHT?p+(d-l-ra):p+ra,q=k==mxConstants.ALIGN_MIDDLE?q+(e-m)/2:k==mxConstants.ALIGN_BOTTOM?q+(e-m-n):q+n;a.save();h=new g;h.style=this.style;g.prototype.paintVertexShape.call(h,a,p,q,l,m);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.prototype.defaultShapes.ext=y;mxUtils.extend(u,
mxCylinder);u.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.prototype.defaultShapes.message=u;mxUtils.extend(I,mxShape);I.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);
a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlActor=I;mxUtils.extend(L,mxShape);L.prototype.getLabelBounds=function(a){return new mxRectangle(a.x+a.width/6,a.y,5*a.width/6,a.height)};L.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.umlBoundary=
L;mxUtils.extend(D,mxEllipse);D.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlEntity=D;mxUtils.extend(B,mxShape);B.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlDestroy=B;mxUtils.extend(E,
mxShape);E.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,e/8,d,7*e/8);a.fillAndStroke()};E.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlControl=E;mxUtils.extend(C,mxRectangleShape);
C.prototype.size=40;C.prototype.isHtmlAllowed=function(){return!1};C.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};C.prototype.paintBackground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,
a,b,c,d,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=C&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,b,c,d,f),a.restore()));f<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+f),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};C.prototype.paintForeground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,f))};mxCellRenderer.prototype.defaultShapes.umlLifeline=
C;mxUtils.extend(H,mxShape);H.prototype.width=60;H.prototype.height=30;H.prototype.corner=10;H.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.style,"width",this.width))*this.scale)),c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"height",this.height))*this.scale));return new mxRectangle(a.x,a.y,b,c)};H.prototype.paintBackground=function(a,b,c,d,e){var f=this.corner,g=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),h=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height))));a.begin();a.moveTo(b,c);a.lineTo(b+g,c);a.lineTo(b+g,c+Math.max(0,h-1.5*f));a.lineTo(b+Math.max(0,g-f),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.prototype.defaultShapes.umlFrame=H;mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=C.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,
"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=
function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)),a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",
mxPerimeter.BackbonePerimeter);mxPerimeter.lineIntersection=function(a,b,c,d){var e=(d.y-c.y)*(b.x-a.x)-(d.x-c.x)*(b.y-a.y);if(0==e)return null;var f=a.y-c.y,f=((d.x-c.x)*f-(d.y-c.y)*(a.x-c.x))/e;c=a.x+f*(b.x-a.x);a=a.y+f*(b.y-a.y);return 0<=f&&1>=f?(f=d.x-c,d=d.y-a,{dist:Math.sqrt(d*d+f*f),p:new mxPoint(c,a)}):null};mxPerimeter.getPerimeterPoint=function(a,b,c){for(var d=!1,e=0;e<a.length-1;e++){var f=mxPerimeter.lineIntersection(a[e],a[e+1],b,c);null!=f&&(!d||d.dist>f.dist)&&(d=f)}return d.p};mxPerimeter.ParallelogramPerimeter=
function(a,b,c,d){var e=m.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g)]):(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+
h,g),new mxPoint(f+h-e,g+k),new mxPoint(f,g+k),new mxPoint(f+e,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,c,d){var e=n.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,
mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h-e,g),new mxPoint(f+h,g+k),new mxPoint(f,g+k),new mxPoint(f+e,g)]):b==mxConstants.DIRECTION_WEST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g),new mxPoint(f+h-e,g+k),new mxPoint(f+e,g+k),new mxPoint(f,g)]):b==mxConstants.DIRECTION_NORTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g+e),new mxPoint(f+h,g),new mxPoint(f+h,
g+k),new mxPoint(f,g+k-e),new mxPoint(f,g+e)]):(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(f,g+k),new mxPoint(f,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,c,d){var e=x.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",
e));var f=a.x,g=a.y,h=a.width,k=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h-e,g),new mxPoint(f+h,a),new mxPoint(f+h-e,g+k),new mxPoint(f,g+k),new mxPoint(f+e,a),new mxPoint(f,g)]):b==mxConstants.DIRECTION_WEST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h,g),new mxPoint(f+
h-e,a),new mxPoint(f+h,g+k),new mxPoint(f+e,g+k),new mxPoint(f,a),new mxPoint(f+e,g)]):b==mxConstants.DIRECTION_NORTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g+e),new mxPoint(l,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k),new mxPoint(l,g+k-e),new mxPoint(f,g+k),new mxPoint(f,g+e)]):(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(l,g+e),new mxPoint(f+h,g),new mxPoint(f+h,g+k-e),new mxPoint(l,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g)]);l=new mxPoint(l,a);d&&(c.x<f||c.x>f+h?l.y=
c.y:l.x=c.x);return mxPerimeter.getPerimeterPoint(g,l,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,c,d){var e=w.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*
Math.max(0,Math.min(1,e)),g=[new mxPoint(l,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(l,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g+e),new mxPoint(l,g)]):(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h-e,g),new mxPoint(f+h,a),new mxPoint(f+h-e,g+k),new mxPoint(f+e,g+k),new mxPoint(f,a),new mxPoint(f+e,g)]);l=new mxPoint(l,a);d&&(c.x<f||c.x>f+h?l.y=c.y:l.x=c.x);return mxPerimeter.getPerimeterPoint(g,l,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);
mxUtils.extend(M,mxShape);M.prototype.size=10;M.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,c);a.ellipse((d-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(d/2,f);a.lineTo(d/2,e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.lollipop=M;mxUtils.extend(J,mxShape);J.prototype.size=10;J.prototype.inset=2;J.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),
g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.begin();a.moveTo(d/2,f+g);a.lineTo(d/2,e);a.end();a.stroke();a.begin();a.moveTo((d-f)/2-g,f/2);a.quadTo((d-f)/2-g,f+g,d/2,f+g);a.quadTo((d+f)/2+g,f+g,(d+f)/2+g,f/2);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.requires=J;mxUtils.extend(U,mxCylinder);U.prototype.jettyWidth=32;U.prototype.jettyHeight=12;U.prototype.redrawPath=function(a,b,c,d,e,f){var g=parseFloat(mxUtils.getValue(this.style,
"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=g/2;var g=c+g/2,h=.3*e-b/2,k=.7*e-b/2;f?(a.moveTo(c,h),a.lineTo(g,h),a.lineTo(g,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(g,k),a.lineTo(g,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e),a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.component=
U;mxUtils.extend(S,mxDoubleEllipse);S.prototype.outerStroke=!0;S.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.prototype.defaultShapes.endState=S;mxUtils.extend(aa,S);aa.prototype.outerStroke=!1;mxCellRenderer.prototype.defaultShapes.startState=aa;mxUtils.extend(A,mxArrowConnector);A.prototype.defaultWidth=4;A.prototype.isOpenEnded=
function(){return!0};A.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};A.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.prototype.defaultShapes.link=A;mxUtils.extend(v,mxArrowConnector);v.prototype.defaultWidth=10;v.prototype.defaultArrowWidth=20;v.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};v.prototype.getEndArrowWidth=
function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};v.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.prototype.defaultShapes.flexArrow=v;mxUtils.extend(R,mxActor);R.prototype.size=30;R.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.manualInput=R;mxUtils.extend(K,mxRectangleShape);K.prototype.dx=20;K.prototype.dy=20;K.prototype.isHtmlAllowed=function(){return!1};K.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);a.end();a.stroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.internalStorage=K;mxUtils.extend(F,mxActor);F.prototype.dx=20;F.prototype.dy=20;F.prototype.redrawPath=
function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.prototype.defaultShapes.corner=
F;mxUtils.extend(ca,mxActor);ca.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.prototype.defaultShapes.crossbar=ca;mxUtils.extend(N,mxActor);N.prototype.dx=20;N.prototype.dy=20;N.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));
parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/2,e),new mxPoint((d-b)/2,c),new mxPoint(0,c)],this.isRounded,f,!0);a.end()};mxCellRenderer.prototype.defaultShapes.tee=N;mxUtils.extend(G,mxActor);G.prototype.arrowWidth=.3;G.prototype.arrowSize=.2;G.prototype.redrawPath=function(a,
b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.prototype.defaultShapes.singleArrow=
G;mxUtils.extend(Y,mxActor);Y.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",G.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",G.prototype.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,
e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.prototype.defaultShapes.doubleArrow=Y;mxUtils.extend(T,mxActor);T.prototype.size=.1;T.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.dataStorage=T;mxUtils.extend(Z,
mxActor);Z.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.or=Z;mxUtils.extend(da,mxActor);da.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.xor=da;mxUtils.extend(P,mxActor);P.prototype.size=20;P.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.loopLimit=P;mxUtils.extend(ea,mxActor);ea.prototype.size=.375;ea.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.offPageConnector=ea;mxUtils.extend(W,mxEllipse);W.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.tapeData=
W;mxUtils.extend(O,mxEllipse);O.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.orEllipse=O;mxUtils.extend(Q,mxEllipse);Q.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();
a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.sumEllipse=Q;mxUtils.extend(fa,mxRhombus);fa.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.sortShape=fa;mxUtils.extend(V,
mxEllipse);V.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.collate=V;mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=function(a,b,c,d,e){var f=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,c+e);a.moveTo(b,f);a.lineTo(b+10,f-5);a.moveTo(b,f);a.lineTo(b+10,f+5);a.moveTo(b,f);
a.lineTo(b+d,f);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,f);a.lineTo(b+d-10,f-5);a.moveTo(b+d,f);a.lineTo(b+d-10,f+5);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.dimension=X;mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(a,b,c,d,e){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(b,c,d,e),a.fill(),"1"==mxUtils.getValue(this.style,"top","1")&&(a.begin(),
a.moveTo(b,c),a.lineTo(b+d,c),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"right","1")&&(a.begin(),a.moveTo(b+d,c),a.lineTo(b+d,c+e),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"bottom","1")&&(a.begin(),a.moveTo(b+d,c+e),a.lineTo(b,c+e),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"left","1")&&(a.begin(),a.moveTo(b,c+e),a.lineTo(b,c),a.end(),a.stroke()))};mxCellRenderer.prototype.defaultShapes.partialRectangle=ua;mxUtils.extend(oa,mxEllipse);oa.prototype.paintVertexShape=
function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.lineEllipse=oa;mxUtils.extend(pa,mxActor);pa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.delay=
pa;mxUtils.extend(la,mxActor);la.prototype.size=.2;la.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-f)/2;c=b+f;var g=(d-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(d,b);a.lineTo(d,c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.cross=la;mxUtils.extend(ma,mxActor);ma.prototype.size=
.25;ma.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.display=ma;mxUtils.extend(ja,mxConnector);ja.prototype.origPaintEdgeShape=ja.prototype.paintEdgeShape;ja.prototype.paintEdgeShape=function(a,b,c){var d=a.state.dashed,e=a.state.fixDash;ja.prototype.origPaintEdgeShape.apply(this,
arguments);if(3<=a.state.strokeWidth){var f=mxUtils.getValue(this.style,"fillColor",null);null!=f&&(a.setStrokeColor(f),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(d,e),ja.prototype.origPaintEdgeShape.apply(this,arguments))}};mxCellRenderer.prototype.defaultShapes.filledEdge=ja;mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("cross",
function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.moveTo(d.x-m/2+n/2,d.y-n/2-m/2);a.lineTo(d.x-n/2-3*m/2,d.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",va);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=va.apply(this,arguments),p=e*(g+2*k),q=f*(g+2*k);return function(){n.apply(this,arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*p+e*
k,m.y-2*q+f*k);a.moveTo(m.x-p-q+f*k,m.y-q+p-e*k);a.lineTo(m.x+q-p-f*k,m.y-q-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,h,k,l){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,c,d,e,
f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Aa=function(a,b,c){return na(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=Math.round(2*b)/a.view.scale-c})},na=
function(a,b,c,d,e){var f=a.absolutePoints,g=f.length-1,h=a.view.translate,k=a.view.scale,l=c?f[0]:f[g],m=c?f[1]:f[g-1],n=m.x-l.x,p=m.y-l.y,q=Math.sqrt(n*n+p*p);return ba(a,b,function(a){a=d.call(this,q,n/q,p/q,l,m);return new mxPoint(a.x/k-h.x,a.y/k-h.y)},function(a,b,c){a=Math.sqrt(n*n+p*p);b.x=(b.x+h.x)*k;b.y=(b.y+h.y)*k;e.call(this,a,n/a,p/a,l,m,b,c)})},ha=function(a){return function(b){return[ba(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"arrowWidth",G.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",G.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(b.x+b.width-c.x)/b.width))})]}},xa=function(a,b,c){return function(d){var e=[ba(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,
parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ga(d));return e}},qa=function(a,b,c,d){c=null!=c?c:1;return function(e){var f=[ba(e,["size"],function(b){var c=parseFloat(mxUtils.getValue(this.state.style,"size",a));return new mxPoint(b.x+c*b.width,b.getCenterY())},
function(a,b){this.state.style.size=Math.max(0,Math.min(c,(b.x-a.x)/a.width))},null,d)];b&&mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(ga(e));return f}},Ba=function(a){return function(b){var c=[ba(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},null,!0)];mxUtils.getValue(b.style,
mxConstants.STYLE_ROUNDED,!1)&&c.push(ga(b));return c}},ia=function(){return function(a){var b=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b}},ga=function(a,b){return ba(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/2,c.height/2),Math.min(c.width,c.height)*d),c.y+(null!=b?b:c.height/
8))},function(a,b,c){this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(a.width-b.x+a.x)/Math.min(a.width,a.height))))})},ba=function(a,b,c,d,e,f){var g=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);g.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};g.getPosition=c;g.setPosition=d;g.ignoreGrid=null!=e?e:!0;if(f){var h=g.positionChanged;g.positionChanged=function(){h.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return g},
ya={link:function(a){return[Aa(a,!0,10),Aa(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(na(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*
a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-
parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(na(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*
a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||
(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(na(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-
a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*
c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(na(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*
a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/
a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},
swimlane:function(a){var b=[ba(a,[mxConstants.STYLE_STARTSIZE],function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(),b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,
Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ga(a,c/2))}return b},label:ia(),ext:ia(),rectangle:ia(),triangle:ia(),rhombus:ia(),umlLifeline:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",C.prototype.size))));return new mxPoint(a.getCenterX(),
a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){var b=[ba(a,["width","height"],function(a){var b=Math.max(H.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",H.prototype.width))),c=Math.max(1.5*H.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",H.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(H.prototype.corner,
Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*H.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},process:function(a){var b=[ba(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",t.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,
mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},cross:function(a){return[ba(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",la.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[ba(a,["size"],function(a){var b=
Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",e.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b=[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",R.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,
b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},dataStorage:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size))));return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},internalStorage:function(a){var b=
[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",K.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",K.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},corner:function(a){return[ba(a,
["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",F.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",F.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},tee:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,
"dx",N.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",N.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},singleArrow:ha(1),doubleArrow:ha(.5),folder:function(a){return[ba(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,
"tabWidth",g.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",g.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c=Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=
Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},document:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},tape:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size))));
return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ea.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:qa(x.prototype.size,!0,null,!0),hexagon:qa(w.prototype.size,
!0,.5,!0),curlyBracket:qa(p.prototype.size,!1),display:qa(ma.prototype.size,!1),cube:xa(1,a.prototype.size,!1),card:xa(.5,h.prototype.size,!0),loopLimit:xa(.5,P.prototype.size,!0),trapezoid:Ba(.5),parallelogram:Ba(1)};Graph.createHandle=ba;Graph.handleFactory=ya;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==this.state.view.graph.cellRenderer.defaultShapes[a]&&
null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=ya[a];if(null!=a)return a(this.state)}return null};mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==this.state.view.graph.cellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=ya[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var sa=
new mxPoint(1,0),ta=new mxPoint(1,0),ha=mxUtils.toRadians(-30),sa=mxUtils.getRotatedPoint(sa,Math.cos(ha),Math.sin(ha)),ha=mxUtils.toRadians(-150),ta=mxUtils.getRotatedPoint(ta,Math.cos(ha),Math.sin(ha));mxEdgeStyle.IsometricConnector=function(a,b,c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,d));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=c&&(g=new mxPoint(c.getCenterX(),
c.getCenterY()));var k=sa.x,l=sa.y,m=ta.x,n=ta.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,c){a-=q.x;var d=b-q.y;b=(n*a-m*d)/(k*n-l*m);a=(l*a-k*d)/(l*m-k*n);p?(c&&(q=new mxPoint(q.x+k*b,q.y+l*b),e.push(q)),q=new mxPoint(q.x+m*a,q.y+n*a)):(c&&(q=new mxPoint(q.x+m*a,q.y+n*a),e.push(q)),q=new mxPoint(q.x+k*b,q.y+l*b));e.push(q)};var q=h;null==d&&(d=new mxPoint(h.x+(g.x-h.x)/2,h.y+(g.y-h.y)/2));a(d.x,d.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",
mxEdgeStyle.IsometricConnector);var Ga=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(a);c.snapToTerminals=!1;return c}return Ga.apply(this,arguments)};b.prototype.constraints=[];c.prototype.constraints=[];mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,
.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,
0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;
z.prototype.constraints=mxRectangleShape.prototype.constraints;e.prototype.constraints=mxRectangleShape.prototype.constraints;h.prototype.constraints=mxRectangleShape.prototype.constraints;a.prototype.constraints=mxRectangleShape.prototype.constraints;g.prototype.constraints=mxRectangleShape.prototype.constraints;K.prototype.constraints=mxRectangleShape.prototype.constraints;T.prototype.constraints=mxRectangleShape.prototype.constraints;W.prototype.constraints=mxEllipse.prototype.constraints;O.prototype.constraints=
mxEllipse.prototype.constraints;Q.prototype.constraints=mxEllipse.prototype.constraints;oa.prototype.constraints=mxEllipse.prototype.constraints;R.prototype.constraints=mxRectangleShape.prototype.constraints;pa.prototype.constraints=mxRectangleShape.prototype.constraints;ma.prototype.constraints=mxRectangleShape.prototype.constraints;P.prototype.constraints=mxRectangleShape.prototype.constraints;ea.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,
.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),
!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];I.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];U.prototype.constraints=
[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,
1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,
1),!0)];f.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),
!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];x.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(.1,.25),!0),new mxConnectionConstraint(new mxPoint(.2,.5),!0),new mxConnectionConstraint(new mxPoint(.1,.75),!0),new mxConnectionConstraint(new mxPoint(.9,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.9,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];M.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),
new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(.125,.25),!0),new mxConnectionConstraint(new mxPoint(0,
.5),!0),new mxConnectionConstraint(new mxPoint(.125,.75),!0),new mxConnectionConstraint(new mxPoint(.875,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.875,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,
.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,
.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;n.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),
!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;N.prototype.constraints=null;F.prototype.constraints=null;ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,
.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];G.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];Y.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];la.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,
.5),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];C.prototype.constraints=null;Z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];da.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,
.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)]})();
(function(x,r){function N(){if(!t){t=!0;window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config({"HTML-CSS":{availableFonts:[],webFont:"STIX-Web",imageFont:null}});MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<p.length;a++)MathJax.Hub.Queue(["Typeset",MathJax.Hub,p[a]])})}};var a=document.createElement("script");a.type="text/javascript";a.src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_HTMLorMML";
document.getElementsByTagName("head")[0].appendChild(a)}}function O(a){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?MathJax.Hub.Queue(["Typeset",MathJax.Hub,a.container]):p.push(a.container);a.addListener(mxEvent.SIZE,function(e,m){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,a.container])})}mxStencilRegistry.dynamicLoading=!1;try{var e=document.createElement("style");e.type="text/css";e.innerHTML="div.mxTooltip {\n-webkit-box-shadow: 3px 3px 12px #C0C0C0;\n-moz-box-shadow: 3px 3px 12px #C0C0C0;\nbox-shadow: 3px 3px 12px #C0C0C0;\nbackground: #FFFFCC;\nborder-style: solid;\nborder-width: 1px;\nborder-color: black;\nfont-family: Arial;\nfont-size: 8pt;\nposition: absolute;\ncursor: default;\npadding: 4px;\ncolor: black;}";
document.getElementsByTagName("head")[0].appendChild(e)}catch(a){}var G=mxClient.NO_FO,t="undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub,p=[];mxGraph.prototype.getImageFromBundles=function(a){return null!=a?("http://"!=a.substring(0,7)&&"https://"!=a.substring(0,8)&&"data:image"!=a.substring(0,10)&&("/"==a.charAt(0)&&(a=a.substring(1,a.length)),a="https://www.draw.io/"+a),a):null};if(null!=r)for(e=0;e<r.length;e++){var y=mxUtils.parseXml(r[e]);mxStencilRegistry.parseStencilSet(y.documentElement)}mxClient.IS_TOUCH&&

View file

@ -1,113 +1,119 @@
(function(){function u(a){a=null!=a.Text?a.Text:null!=a.Value?a.Value:a.Lane_0;return null!=a&&null!=a.t?a.t:""}function q(a){return null!=a.Action?a.Action:a}function w(a,c){var d=q(c);if(null!=d){var b=y[d.Class];null!=b&&(a.style+=b);b=null!=d.Properties?d.Properties:d;if(null!=b){a.value=u(b);var g=0;if(null!=b.Text&&null!=b.Text.m)for(var h=b.Text.m,k=0;0==g&&k<h.length;){var e=h[k];"s"==e.n&&null!=e.v&&(g=1,e=e.v,e=Math.round(e/1.7),a.style+="fontSize="+e+";");k++}0==g&&(a.style+="fontSize=10;");
g=0;if(null!=b.Text&&null!=b.Text.m)for(h=b.Text.m,k=0;0==g&&k<h.length;)e=h[k],"c"==e.n&&null!=e.v&&(g=1,e=e.v,"#"!=e.charAt(0)&&(e="#"+e),e=e.substring(0,7),a.style+=mxConstants.STYLE_FONTCOLOR+"="+e+";"),k++;"ImageSearchBlock2"==d.Class&&(a.style+="image="+b.URL+";");a.style+=l(mxConstants.STYLE_STROKEWIDTH,b.LineWidth,"1");["DefaultTextBlock","UI2HotspotBlock"].includes(d.Class)||(a.style+=l(mxConstants.STYLE_STROKECOLOR,b.LineColor.substring(0,7),"#000000"));a.style+=l(mxConstants.STYLE_ALIGN,
b.TextAlign,"center");a.style+=l(mxConstants.STYLE_VERTICAL_ALIGN,b.TextVAlign,"middle");["UI2HotspotBlock"].includes(d.Class)||(a.style+=l(mxConstants.STYLE_OPACITY,b.Opacity,"100"));null!=b.Rotation&&(h=mxUtils.toDegree(parseFloat(b.Rotation)),k=["AEUSBBlock","AGSCutandpasteBlock","iOSDeviceiPadLandscape","iOSDeviceiPadProLandscape"],"AdvancedSwimLaneBlockRotated"==d.Class?(h+=90,a.geometry.rotate90()):k.includes(d.Class)&&(h-=90,a.geometry.rotate90(),a.geometry.rotate90(),a.geometry.rotate90()),
a.style+="rotation="+h+";");b.FlipX&&(a.style+="flipH=1;");b.FlipY&&(a.style+="flipV=1;");null!=b.Shadow&&(a.style+=mxConstants.STYLE_SHADOW+"=1;");"dashed"==b.StrokeStyle?a.style+="dashed=1;":"dotted"==b.StrokeStyle&&(a.style+="dashed=1;dashPattern=1 4;");null==b.FillColor||"AWSAndroidBlock3 AWSiOSBlock3 AWSJavaBlock3 AWSJavaScript AWSNetBlock3 AWSNodeJSBlock3 AWSPHPBlock3 AWSPythonBlock3 AWSRubyBlock3 AWSXamarin AWSCLIBlock3 AWSEclipseToolkitBlock3 AWSVisualStudioToolkitBlock3 AWSWindowsPowershellToolkitBlock3 DefaultTextBlock".split(" ").includes(d.Class)||
("object"===typeof b.FillColor?null!=b.FillColor.cs&&1<b.FillColor.cs.length&&(a.style+=l(mxConstants.STYLE_FILLCOLOR,b.FillColor.cs[0].c.substring(0,7)),a.style+=l(mxConstants.STYLE_GRADIENTCOLOR,b.FillColor.cs[1].c.substring(0,7))):"string"===typeof b.FillColor&&(a.style+=l(mxConstants.STYLE_FILLCOLOR,b.FillColor.substring(0,7),"#FFFFFF")));if(a.edge){a.style+="rounded=1;arcSize=5;";if("diagonal"!=b.Shape)if(null!=b.ElbowPoints)for(a.geometry.points=[],k=0;k<b.ElbowPoints.length;k++)a.geometry.points.push(new mxPoint(Math.round(.6*
b.ElbowPoints[k].x+0),Math.round(.6*b.ElbowPoints[k].y+0)));else"elbow"==b.Shape?a.style=null!=b.Endpoint1.Block&&null!=b.Endpoint1.Block?a.style+"edgeStyle=orthogonalEdgeStyle;":a.style+"edgeStyle=elbowEdgeStyle;":null!=b.Endpoint1.Block&&null!=b.Endpoint1.Block&&(a.style+="edgeStyle=orthogonalEdgeStyle;","curve"==b.Shape&&(a.style+="curved=1;"));m(a,b.Endpoint1,!0);m(a,b.Endpoint2,!1)}}}}function x(a){var c=q(a).Properties.BoundingBox;null!=a.Class&&"AWS"===a.Class.substring(0,3)&&(c.h-=20);v=new mxCell("",
new mxGeometry(Math.round(.6*c.x+0),Math.round(.6*c.y+0),Math.round(.6*c.w),Math.round(.6*c.h)),"html=1;whiteSpace=wrap;");v.vertex=!0;w(v,a);return v}function l(a,c,d,b){null!=c&&null!=b&&(c=b(c));return null!=c&&c!=d?a+"="+c+";":""}function m(a,c,d){null!=c&&(null!=c.LinkX&&null!=c.LinkY&&(a.style+=(d?"exitX":"entryX")+"="+c.LinkX+";"+(d?"exitY":"entryY")+"="+c.LinkY+";"+(d?"exitPerimeter":"entryPerimeter")+"=0;"),"Arrow"==c.Style?a.style+=(d?"startArrow":"endArrow")+"=block;":"Hollow Arrow"==c.Style?
(a.style+=(d?"startArrow":"endArrow")+"=block;",a.style+=(d?"startFill":"endFill")+"=0;"):"Open Arrow"==c.Style&&(a.style+=(d?"startArrow":"endArrow")+"=open;",a.style+=(d?"startSize":"endSize")+"=12;"))}var y={DefaultTextBlockNew:"text;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;",DefaultTextBlock:"text;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;",DefaultSquareBlock:"rounded=1;arcSize=5;",DefaultNoteBlock:"shape=note;size=15;",DefaultNoteBlockV2:"shape=note;size=15;",
HotspotBlock:"strokeColor=none;opacity=50;",ImageSearchBlock2:"shape=image;",ProcessBlock:"rounded=1;arcSize=5;",DecisionBlock:"rhombus;rounded=1;arcSize=5;",TerminatorBlock:"rounded=1;arcSize=50;",PredefinedProcessBlock:"shape=process;rounded=1;arcSize=5;",DocumentBlock:"shape=document;",MultiDocumentBlock:"shape=mxgraph.flowchart.multi-document;",ManualInputBlock:"shape=manualInput;size=15;rounded=1;arcSize=5;",PreparationBlock:"shape=hexagon;rounded=1;arcSize=5;",DataBlock:"shape=parallelogram;rounded=1;arcSize=5;",
DataBlockNew:"shape=parallelogram;rounded=1;arcSize=5;",DatabaseBlock:"shape=cylinder;",DirectAccessStorageBlock:"shape=mxgraph.flowchart.direct_data;",InternalStorageBlock:"shape=internalStorage;rounded=1;arcSize=5;dx=10;dy=10;",PaperTapeBlock:"shape=tape;size=0.2;",ManualOperationBlockNew:"shape=trapezoid;rounded=1;arcSize=5;flipV=1;",DelayBlock:"shape=delay;",StoredDataBlock:"shape=dataStorage;",MergeBlock:"triangle;direction=south;rounded=1;arcSize=5;",ConnectorBlock:"ellipse;",OrBlock:"shape=mxgraph.flowchart.summing_function;",
SummingJunctionBlock:"shape=mxgraph.flowchart.or;",DisplayBlock:"shape=display;",OffPageLinkBlock:"shape=offPageConnector;rounded=1;arcSize=5;",BraceNoteBlock:"shape=curlyBracket;rounded=1;",NoteBlock:"shape=mxgraph.flowchart.annotation_1;",AdvancedSwimLaneBlock:"swimlane;rounded=1;arcSize=5;",AdvancedSwimLaneBlockRotated:"swimlane;horizontal=0;rounded=1;arcSize=5;",RectangleContainerBlock:"fillColor=none;container=1;rounded=1;arcSize=5;",DiamondContainerBlock:"shape=rhombus;fillColor=none;container=1;",
RoundedRectangleContainerBlock:"rounded=1;fillColor=none;container=1;",CircleContainerBlock:"shape=ellipse;fillColor=none;container=1;",PillContainerBlock:"rounded=1;arcSize=50;fillColor=none;container=1;",IsoscelesTriangleBlock:"triangle;direction=north;",RightTriangleBlock:"shape=mxgraph.basic.orthogonal_triangle;",PentagonBlock:"shape=mxgraph.basic.pentagon;",HexagonBlock:"shape=hexagon;rounded=1;arcSize=5;",OctagonBlock:"shape=mxgraph.basic.octagon;",CrossBlock:"shape=cross;size=0.6;",CloudBlock:"ellipse;shape=cloud;",
HeartBlock:"shape=mxgraph.basic.heart;",RightArrowBlock:"shape=singleArrow;arrowWidth=0.5;arrowSize=0.3;",DoubleArrowBlock:"shape=doubleArrow;arrowWidth=0.5;arrowSize=0.3;",CalloutBlock:"shape=mxgraph.basic.rectangular_callout;",ShapeCircleBlock:"ellipse;",ShapePolyStarBlock:"shape=mxgraph.basic.star;",ShapeDiamondBlock:"rhombus;rounded=1;arcSize=5;",UI2HotspotBlock:"shape=rect;opacity=50;strokeColor=none;rounded=1;",AndroidIconCheck:"shape=mxgraph.ios7.misc.check;",AndroidIconCancel:"shape=mxgraph.atlassian.x;",
AndroidIconCollapse:"shape=mxgraph.ios7.misc.up;",AndroidIconExpand:"shape=mxgraph.ios7.misc.down;",AndroidIconNext:"shape=mxgraph.ios7.misc.right;",AndroidIconPrevious:"shape=mxgraph.ios7.misc.left;",AndroidIconRefresh:NaN,AndroidIconInformation:"shape=mxgraph.ios7.icons.info;",AndroidIconSearch:"shape=mxgraph.ios7.icons.looking_glass;",AndroidIconSettings:"shape=mxgraph.ios7.icons.volume;direction=south;",AndroidIconTrash:"shape=mxgraph.ios7.icons.trashcan;",AndroidIconEmail:"shape=mxgraph.mockup.misc.mail2;",
AndroidIconNew:"shape=mxgraph.ios7.misc.flagged;",iOSDeviceiPhoneSE:"shape=mxgraph.ios7.misc.iphone;",iOSDeviceiPhone6s:"shape=mxgraph.ios7.misc.iphone;",iOSDeviceiPhone6sPlus:"shape=mxgraph.ios7.misc.iphone;",iOSDeviceiPadPortrait:"shape=mxgraph.ios7.misc.ipad7inch;",iOSDeviceiPadLandscape:"shape=mxgraph.ios7.misc.ipad7inch;",iOSDeviceiPadProPortrait:"shape=mxgraph.ios7.misc.ipad7inch;",iOSDeviceiPadProLandscape:"shape=mxgraph.ios7.misc.ipad10inch;",iOSButton:"shape=rect;",iOSStepper:"shape=mxgraph.ios7.misc.adjust;",
iOSToggle:"shape=mxgraph.ios7ui.onOffButton;buttonState=on;strokeColor2=#aaaaaa;fillColor2=#ffffff;",iOSSlider:"shape=mxgraph.ios7ui.slider;barPos=20;strokeColor2=#a0a0a0;",iOSProgressBar:"shape=mxgraph.ios.iCloudProgressBar;barPos=20;",iOSPageControls:"shape=mxgraph.ios.iCloudProgressBar;barPos=20;",iOSUniversalKeyboard:"shape=mxgraph.ios.iKeybLett;",MindMapBlock:"shape=rect;rounded=1;",MindMapStadiumBlock:"shape=rect;rounded=1;arcSize=50;",MindMapCloud:"shape=cloud;",MindMapCircle:"shape=ellipse;",
MindMapIsoscelesTriangleBlock:"shape=triangle;direction=north;",MindMapDiamondBlock:"shape=rhombus;",MindMapPentagonBlock:"shape=mxgraph.basic.pentagon;",MindMapHexagonBlock:"shape=hexagon;",MindMapOctagonBlock:"shape=mxgraph.basic.octagon;",MindMapCrossBlock:"shape=mxgraph.basic.cross2;dx=20;",UMLClassBlock:"rounded=1;",UMLActiveClassBlock:"shape=mxgraph.flowchart.predefined_process;",UMLPackageBlock:"shape=folder;tabPosition=left;",UMLNoteBlock:"shape=note;size=15;",UMLTextBlock:"shape=text;strokeColor=none;fillColor=none;",
UMLActorBlock:"shape=umlActor;",UMLUseCaseBlock:"shape=ellipse;",UMLCircleContainerBlock:"shape=ellipse;container=1;",UMLRectangleContainerBlock:"rounded=1;container=1;",UMLOptionLoopBlock:"shape=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill;",UMLStartBlock:"shape=ellipse;fillColor=#000000;",UMLStateBlock:"shape=rect;rounded=1;",UMLDecisionBlock:"shape=rhombus;rounded=1;",UMLHForkJoinBlock:"shape=rect;rounded=1;fillColor=#000000;",UMLVForkJoinBlock:"shape=rect;rounded=1;fillColor=#000000;",
UMLFlowFinalBlock:"shape=mxgraph.flowchart.or;",UMLHistoryStateBlock:"shape=ellipse;",UMLEndBlock:"shape=mxgraph.bpmn.shape;outline=end;symbol=terminate;",UMLObjectBlock:"shape=rect;rounded=1;",UMLSendSignalBlock:"shape=mxgraph.sysml.sendSigAct;",UMLReceiveSignalBlock:"shape=mxgraph.sysml.accEvent;flipH=1;",UMLAcceptTimeEventActionBlock:"shape=mxgraph.sysml.timeEvent;",UMLOffPageLinkBlock:"shape=mxgraph.sysml.sendSigAct;direction=south;",UMLActivationBlock:"shape=rect;rounded=1;",UMLDeletionBlock:"shape=mxgraph.sysml.x;strokeWidth=4;",
UMLSeqEntityBlock:"shape=mxgraph.electrical.radio.microphone_1;direction=north;",UMLComponentBlock:"shape=component;align=left;spacingLeft=36;",UMLNodeBlock:"shape=cube;size=12;flipH=1;",UMLComponentInterfaceBlock:"shape=ellipse;",UMLProvidedInterfaceBlock:"shape=lollipop;direction=south;",UMLRequiredInterfaceBlock:"shape=requires;direction=north;",UMLEntityBlock:"shape=rect;rounded=1;",UMLWeakEntityBlock:"shape=ext;double=1;rounded=1;",UMLAttributeBlock:"shape=ellipse;",UMLMultivaluedAttributeBlock:"shape=doubleEllipse;",
UMLRelationshipBlock:"shape=rhombus;rounded=1;",UMLWeakRelationshipBlock:"shape=rhombus;rounded=1;double=1;",DFDExternalEntityBlock2:"shape=rect;rounded=1;",YDMDFDProcessBlock:"shape=ellipse;",YDMDFDDataStoreBlock:"shape=partialRectangle;right=0;left=0;",GSDFDProcessBlock:"shape=swimlane;rounded=1;",GSDFDProcessBlock2:"shape=rect;rounded=1;",GSDFDDataStoreBlock2:"shape=partialRectangle;right=0;",OrgBlock:"shape=rect;rounded=1;",VSMCustomerSupplierBlock:"shape=mxgraph.lean_mapping.outside_sources;",
VSMDedicatedProcessBlock:"shape=mxgraph.lean_mapping.manufacturing_process;",VSMSharedProcessBlock:"shape=mxgraph.lean_mapping.manufacturing_process_shared;",VSMWorkcellBlock:"shape=mxgraph.lean_mapping.work_cell;",VSMInventoryBlock:"shape=mxgraph.lean_mapping.inventory_box;",VSMPhysicalPullBlock:"shape=mxgraph.lean_mapping.physical_pull;direction=south;",VSMFIFOLaneBlock:"shape=mxgraph.lean_mapping.fifo_sequence_flow;fontStyle=0;fontSize=20",VSMExternalShipmentAirplaneBlock:"shape=mxgraph.lean_mapping.airplane_7;",
VSMExternalShipmentForkliftBlock:"shape=mxgraph.lean_mapping.move_by_forklift;",VSMExternalShipmentTruckBlock:"shape=mxgraph.lean_mapping.truck_shipment;",VSMExternalShipmentBoatBlock:"shape=mxgraph.lean_mapping.boat_shipment;",VSMProductionControlBlock:"shape=mxgraph.lean_mapping.manufacturing_process;",VSMOtherInformationBlock:"shape=rect;rounded=1;",VSMSequencedPullBallBlock:"shape=mxgraph.lean_mapping.sequenced_pull_ball;",VSMMRPERPBlock:"shape=mxgraph.lean_mapping.mrp_erp;whiteSpace=wrap;",VSMLoadLevelingBlock:"shape=mxgraph.lean_mapping.load_leveling;",
VSMGoSeeBlock:"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1;",VSMGoSeeProductionBlock:"shape=ellipse;",VSMVerbalInfoBlock:"shape=mxgraph.lean_mapping.verbal;",VSMKaizenBurstBlock:"shape=mxgraph.lean_mapping.kaizen_lightening_burst;",VSMOperatorBlock:"shape=mxgraph.lean_mapping.operator;flipV=1;",VSMQualityProblemBlock:"shape=mxgraph.lean_mapping.quality_problem;",VSMProductionKanbanSingleBlock:"shape=mxgraph.lean_mapping.production_kanban;",VSMWithdrawalKanbanBlock:"shape=mxgraph.lean_mapping.withdrawal_kanban;",
VSMSignalKanbanBlock:"shape=mxgraph.lean_mapping.signal_kanban;",VSMKanbanPostBlock:"shape=mxgraph.lean_mapping.kanban_post;",VSMShipmentArrow:"shape=singleArrow;arrowWidth=0.5;arrowSize=0.13;",VSMPushArrow:"shape=mxgraph.lean_mapping.push_arrow;",AWSElasticComputeCloudBlock2:"strokeColor=none;shape=mxgraph.aws3.ec2;",AWSInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.instance;",AWSInstancesBlock2:"strokeColor=none;shape=mxgraph.aws3.instances;",AWSAMIBlock2:"strokeColor=none;shape=mxgraph.aws3.ami;",
AWSDBonInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.db_on_instance;",AWSInstanceCloudWatchBlock2:"strokeColor=none;shape=mxgraph.aws3.instance_with_cloudwatch;",AWSElasticIPBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_ip;",AWSHDFSClusterBlock2:"strokeColor=none;shape=mxgraph.aws3.hdfs_cluster;",AWSAutoScalingBlock2:"strokeColor=none;shape=mxgraph.aws3.auto_scaling;",AWSEC2OptimizedInstance2:"strokeColor=none;shape=mxgraph.aws3.optimized_instance;","AWSAmazonEC2(Spotinstance)":"strokeColor=none;shape=mxgraph.aws3.spot_instance;",
AWSAmazonECR:"strokeColor=none;shape=mxgraph.aws3.ecr;",AWSAmazonECS:"strokeColor=none;shape=mxgraph.aws3.ecs;",AWSLambda2:"strokeColor=none;shape=mxgraph.aws3.lambda;",AWSElasticLoadBalancing:"strokeColor=none;shape=mxgraph.aws3.elastic_load_balancing;",AWSElasticLoadBlock2:"strokeColor=none;shape=mxgraph.aws3.classic_load_balancer;",AWSDirectConnectBlock3:"strokeColor=none;shape=mxgraph.aws3.direct_connect;",AWSElasticNetworkBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_network_interface;",
AWSRoute53Block2:"strokeColor=none;shape=mxgraph.aws3.route_53;",AWSHostedZoneBlock2:"strokeColor=none;shape=mxgraph.aws3.hosted_zone;fontColor=#FFFFFF;fontStyle=1;",AWSRouteTableBlock2:"strokeColor=none;shape=mxgraph.aws3.route_table;",AWSVPCBlock2:"strokeColor=none;shape=mxgraph.aws3.vpc;",AWSVPNConnectionBlock2:"strokeColor=none;shape=mxgraph.aws3.vpn_connection;",AWSVPNGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.vpn_gateway;",AWSCustomerGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.customer_gateway;",
AWSCustomerGatewayBlock3:"strokeColor=none;shape=mxgraph.aws3.customer_gateway;",AWSInternetGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.internet_gateway;",AWSRouterBlock2:"strokeColor=none;shape=mxgraph.aws3.router;",AWSRouterBlock3:"strokeColor=none;shape=mxgraph.aws3.router;","AWSAmazonVPC(endpoints)":"strokeColor=none;shape=mxgraph.aws3.endpoints;","AWSAmazonVPC(flowlogs)":"strokeColor=none;shape=mxgraph.aws3.flow_logs;","AWSAmazonVPC(VPCNATgateway)":"strokeColor=none;shape=mxgraph.aws3.vpc_nat_gateway;",
AWSVPCPeering3:"strokeColor=none;shape=mxgraph.aws3.vpc_peering;",AWSSimpleStorageBlock2:"strokeColor=none;shape=mxgraph.aws3.s3;",AWSBucketBlock2:"strokeColor=none;shape=mxgraph.aws3.bucket;fontStyle=1;fontColor=#ffffff;",AWSBuckethWithObjectsBlock2:"strokeColor=none;shape=mxgraph.aws3.bucket_with_objects;",AWSObjectBlock2:"strokeColor=none;shape=mxgraph.aws3.object;fontStyle=1;fontColor=#ffffff;",AWSImportExportBlock2:"strokeColor=none;shape=mxgraph.aws3.import_export;",AWSStorageGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.storage_gateway;",
AWSElasticBlockStorageBlock2:"strokeColor=none;shape=mxgraph.aws3.volume;fontStyle=1;fontColor=#ffffff;",AWSVolumeBlock3:"strokeColor=none;shape=mxgraph.aws3.volume;fontStyle=1;fontColor=#ffffff;",AWSSnapshotBlock2:"strokeColor=none;shape=mxgraph.aws3.snapshot;fontStyle=1;fontColor=#ffffff;",AWSGlacierArchiveBlock3:"strokeColor=none;shape=mxgraph.aws3.archive;",AWSGlacierVaultBlock3:"strokeColor=none;shape=mxgraph.aws3.vault;",AWSAmazonEFS:"strokeColor=none;shape=mxgraph.aws3.efs;",AWSGlacierBlock2:"strokeColor=none;shape=mxgraph.aws3.glacier;",
AWSAWSImportExportSnowball:"strokeColor=none;shape=mxgraph.aws3.snowball;",AWSStorageGatewayCachedVolumn2:"strokeColor=none;shape=mxgraph.aws3.cached_volume;","AWSStorageGatewayNon-CachedVolumn2":"strokeColor=none;shape=mxgraph.aws3.non_cached_volume;",AWSStorageGatewayVirtualTapeLibrary2:"strokeColor=none;shape=mxgraph.aws3.virtual_tape_library;",AWSCloudFrontBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudfront;",AWSDownloadDistBlock2:"strokeColor=none;shape=mxgraph.aws3.download_distribution;",
AWSStreamingBlock2:"strokeColor=none;shape=mxgraph.aws3.streaming_distribution;",AWSEdgeLocationBlock2:"strokeColor=none;shape=mxgraph.aws3.edge_location;",AWSItemBlock2:"strokeColor=none;shape=mxgraph.aws3.item;",AWSItemsBlock2:"strokeColor=none;shape=mxgraph.aws3.items;",AWSAttributeBlock2:"strokeColor=none;shape=mxgraph.aws3.attribute;",AWSAttributesBlock2:"strokeColor=none;shape=mxgraph.aws3.attributes;",AWSRDBSBlock2:"strokeColor=none;shape=mxgraph.aws3.rds;",AWSRDSInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance;",
AWSRDSStandbyBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance_standby_multi_az;",AWSRDSInstanceReadBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance_read_replica;",AWSOracleDBBlock2:"strokeColor=none;shape=mxgraph.aws3.oracle_db_instance;",AWSMySQLDBBlock2:"strokeColor=none;shape=mxgraph.aws3.mysql_db_instance;",AWSDynamoDBBlock2:"strokeColor=none;shape=mxgraph.aws3.dynamo_db;",AWSSimpleDatabaseBlock3:"strokeColor=none;shape=mxgraph.aws2.database.simpledb;",AWSSimpleDatabaseDomainBlock3:"strokeColor=none;shape=mxgraph.aws2.database.simpledb_domain;",
AWSTableBlock2:"strokeColor=none;shape=mxgraph.aws3.table;",AWSAmazonRedShiftBlock3:"strokeColor=none;shape=mxgraph.aws3.redshift;",AWSElastiCacheNodeBlock2:"strokeColor=none;shape=mxgraph.aws3.cache_node;",AWSElastiCacheBlock2:"strokeColor=none;shape=mxgraph.aws3.elasticache;",AWSDynamoDBGlobalSecondaryIndexes2:"strokeColor=none;shape=mxgraph.aws3.global_secondary_index;",AWSAmazonElastiCacheMemcache2:"strokeColor=none;shape=mxgraph.aws3.memcached;",AWSAmazonElastiCacheRedis2:"strokeColor=none;shape=mxgraph.aws3.redis;",
AWSAmazonRDSMSSQLInstance2:"strokeColor=none;shape=mxgraph.aws3.ms_sql_instance_2;",AWSMSSQLDBBlock3:"strokeColor=none;shape=mxgraph.aws3.ms_sql_instance;",AWSAmazonRDSMySQLDBInstance2:"strokeColor=none;shape=mxgraph.aws3.mysql_db_instance_2;",AWSAmazonRDSOracleDBInstance2:"strokeColor=none;shape=mxgraph.aws3.oracle_db_instance_2;",AWSRDSReplicasetswithPIOP2:"strokeColor=none;shape=mxgraph.aws3.piop;",AWSAmazonRDSPostgreSQL2:"strokeColor=none;shape=mxgraph.aws3.postgre_sql_instance;",AWSRDSMasterSQL2:"strokeColor=none;shape=mxgraph.aws3.sql_master;",
AWSRDSSlaveSQL2:"strokeColor=none;shape=mxgraph.aws3.sql_slave;","AWSAmazonRedshift(densecomputenode)":"strokeColor=none;shape=mxgraph.aws3.dense_compute_node;","AWSAmazonRedshift(densestoragenode)":"strokeColor=none;shape=mxgraph.aws3.dense_storage_node;",AWSAWSDatabaseMigrationService:"strokeColor=none;shape=mxgraph.aws3.database_migration_service;",AWSACM:"strokeColor=none;shape=mxgraph.aws3.certificate_manager;",AWSAmazonInspector:"strokeColor=none;shape=mxgraph.aws3.inspector;",AWSAWSCloudHSM:"strokeColor=none;shape=mxgraph.aws3.cloudhsm;",
AWSDirectoryService2:"strokeColor=none;shape=mxgraph.aws3.directory_service;",AWSAWSKMS:"strokeColor=none;shape=mxgraph.aws3.kms;",AWSAWSWAF:"strokeColor=none;shape=mxgraph.aws3.waf;","AWSACM(certificate-manager)":"strokeColor=none;shape=mxgraph.aws3.certificate_manager_2;",AWSSESBlock2:"strokeColor=none;shape=mxgraph.aws3.ses;",AWSEmailBlock2:"strokeColor=none;shape=mxgraph.aws3.email;",AWSSNSBlock2:"strokeColor=none;shape=mxgraph.aws3.sns;",AWSSQSBlock3:"strokeColor=none;shape=mxgraph.aws3.sqs;",
AWSQueueBlock2:"strokeColor=none;shape=mxgraph.aws3.queue;",AWSMessageBlock2:"strokeColor=none;shape=mxgraph.aws3.message;",AWSDeciderBlock2:"strokeColor=none;shape=mxgraph.aws3.decider;",AWSSWFBlock2:"strokeColor=none;shape=mxgraph.aws3.swf;",AWSWorkerBlock2:"strokeColor=none;shape=mxgraph.aws3.worker;",AWSCloudSearchBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudsearch;",AWSCloudSearchMetadataBlock3:"strokeColor=none;shape=mxgraph.aws3.search_documents;",AWSElasticTranscoder3:"strokeColor=none;shape=mxgraph.aws3.elastic_transcoder;",
AWSAmazonAPIGateway:"strokeColor=none;shape=mxgraph.aws3.api_gateway;",AWSAppStream2:"strokeColor=none;shape=mxgraph.aws3.appstream;",AWSCloudFormationBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudformation;",AWSDataPipelineBlock3:"strokeColor=none;shape=mxgraph.aws3.data_pipeline;",AWSDataPipelineBlock2:"strokeColor=none;shape=mxgraph.aws3.data_pipeline;",AWSTemplageBlock2:"strokeColor=none;shape=mxgraph.aws3.template;",AWSStackBlock2:"strokeColor=none;shape=mxgraph.aws3.stack_aws_cloudformation;",
AWSBeanStockBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_beanstalk;",AWSApplicationBlock2:"strokeColor=none;shape=mxgraph.aws3.application;",AWSBeanstalkDeploymentBlock3:"strokeColor=none;shape=mxgraph.aws3.deployment;",AWSIAMBlock3:"strokeColor=none;shape=mxgraph.aws3.iam;",AWSIAMSTSBlock3:"strokeColor=none;shape=mxgraph.aws3.sts;",AWSIAMAddonBlock2:"strokeColor=none;shape=mxgraph.aws3.add_on;",AWSCloudWatchBlock3:"strokeColor=none;shape=mxgraph.aws3.cloudwatch;",AWSCloudWatchAlarmBlock2:"strokeColor=none;shape=mxgraph.aws3.alarm;",
AWSIAMSecurityTokenService2:"strokeColor=none;shape=mxgraph.aws3.sts_2;",AWSIAMDataEncryptionKey2:"strokeColor=none;shape=mxgraph.aws3.data_encryption_key;",AWSIAMEncryptedData2:"strokeColor=none;shape=mxgraph.aws3.encrypted_data;","AWSAWSIAM(long-termsecuritycredential)":"strokeColor=none;shape=mxgraph.aws3.long_term_security_credential;",AWSIAMMFAToken2:"strokeColor=none;shape=mxgraph.aws3.mfa_token;",AWSIAMPermissions2:"strokeColor=none;shape=mxgraph.aws3.permissions_2;",AWSIAMRoles2:"strokeColor=none;shape=mxgraph.aws3.role;",
"AWSAWSIAM(temporarysecuritycredential)":"strokeColor=none;shape=mxgraph.aws3.long_term_security_credential;",AWSCloudTrail2:"strokeColor=none;shape=mxgraph.aws3.cloudtrail;",AWSConfig2:"strokeColor=none;shape=mxgraph.aws3.config;",AWSOpsWorksBlock3:"strokeColor=none;shape=mxgraph.aws3.opsworks;",AWSAWSServiceCatalog:"strokeColor=none;shape=mxgraph.aws3.service_catalog;",AWSTrustedAdvisor2:"strokeColor=none;shape=mxgraph.aws3.trusted_advisor;",AWSOpsWorksApps2:"strokeColor=none;shape=mxgraph.aws3.apps;",
AWSOpsWorksDeployments2:"strokeColor=none;shape=mxgraph.aws3.deployments;",AWSOpsWorksInstances2:"strokeColor=none;shape=mxgraph.aws3.instances_2;",AWSOpsWorksLayers2:"strokeColor=none;shape=mxgraph.aws3.layers;",AWSOpsWorksMonitoring2:"strokeColor=none;shape=mxgraph.aws3.monitoring;",AWSOpsWorksPermissions2:"strokeColor=none;shape=mxgraph.aws3.permissions;",AWSOpsWorksResources2:"strokeColor=none;shape=mxgraph.aws3.resources;",AWSOpsWorksStack2:"strokeColor=none;shape=mxgraph.aws3.stack_aws_opsworks;",
AWSMechanicalTurkBlock3:"strokeColor=none;shape=mxgraph.aws3.mechanical_turk;",AWSHumanITBlock2:"strokeColor=none;shape=mxgraph.aws3.human_intelligence_tasks_hit;",AWSAssignmentTaskBlock2:"strokeColor=none;shape=mxgraph.aws3.requester;",AWSWorkersBlock2:"strokeColor=none;shape=mxgraph.aws3.users;",AWSRequesterBlock2:"strokeColor=none;shape=mxgraph.aws3.assignment_task;",AWSAndroidBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#96BF3D;",AWSiOSBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#CFCFCF;",
AWSJavaBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#EE472A;",AWSJavaScript:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#205E00;",AWSNetBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#115193;",AWSNodeJSBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#8CC64F;",AWSPHPBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#5A69A4;",AWSPythonBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#FFD44F;",AWSRubyBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#AE1F23;",
AWSXamarin:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#4090D7;",AWSCLIBlock3:"strokeColor=none;shape=mxgraph.aws3.cli;fillColor=#444444;",AWSEclipseToolkitBlock3:"strokeColor=none;shape=mxgraph.aws3.toolkit_for_eclipse;fillColor=#342074;",AWSVisualStudioToolkitBlock3:"strokeColor=none;shape=mxgraph.aws3.toolkit_for_visual_studio;fillColor=#53B1CB;",AWSWindowsPowershellToolkitBlock3:"strokeColor=none;shape=mxgraph.aws3.toolkit_for_windows_powershell;fillColor=#737373;",AWSAmazonElasticsearchService:"strokeColor=none;shape=mxgraph.aws3.elasticsearch_service;",
AWSElasticMapReduceBlock2:"strokeColor=none;shape=mxgraph.aws3.emr;",AWSClusterBlock2:"strokeColor=none;shape=mxgraph.aws3.emr_cluster;",AWSEMREngine2:"strokeColor=none;shape=mxgraph.aws3.emr_engine;",AWSEMRMapRM3Engine2:"strokeColor=none;shape=mxgraph.aws3.emr_engine_mapr_m3;",AWSEMRMapRM5Engine2:"strokeColor=none;shape=mxgraph.aws3.emr_engine_mapr_m5;",AWSEMRMapRM7Engine2:"strokeColor=none;shape=mxgraph.aws3.emr_engine_mapr_m7;",AWSKinesis2:"strokeColor=none;shape=mxgraph.aws3.kinesis;","AWSAmazonKinesis(AmazonKinesisAnalytics)":"strokeColor=none;shape=mxgraph.aws3.kinesis;",
AWSKinesisEnabledApp2:"strokeColor=none;shape=mxgraph.aws3.kinesis_enabled_app;","AWSAmazonKinesis(AmazonKinesisFirehose)":"strokeColor=none;shape=mxgraph.aws3.kinesis_firehose;","AWSAmazonKinesis(AmazonKinesisStreams)":"strokeColor=none;shape=mxgraph.aws3.kinesis_streams;",AWSAmazonMachineLearning:"strokeColor=none;shape=mxgraph.aws3.machine_learning;",AWSAmazonQuickSight:"strokeColor=none;shape=mxgraph.aws3.quicksight;",AWSCognito2:"strokeColor=none;shape=mxgraph.aws3.cognito;",AWSMobileAnalytics2:"strokeColor=none;shape=mxgraph.aws3.mobile_analytics;",
AWSAWSDeviceFarm:"strokeColor=none;shape=mxgraph.aws3.device_farm;",AWSAWSMobileHub:"strokeColor=none;shape=mxgraph.aws3.mobile_hub;gradientColor=#AD688A;gradientDirection=east;",AWSTopicBlock2:"strokeColor=none;shape=mxgraph.aws3.topic_2;fontStyle=1;fontColor=#ffffff;verticalAlign=top;spacingTop=-5;",AWSEmailNotificationBlock2:"strokeColor=none;shape=mxgraph.aws3.email_notification;",AWSHTTPNotificationBlock2:"strokeColor=none;shape=mxgraph.aws3.http_notification;",AWSAWSCodeCommit:"strokeColor=none;shape=mxgraph.aws3.codecommit;",
AWSCodeDeploy2:"strokeColor=none;shape=mxgraph.aws3.codedeploy;",AWSAWSCodePipeline:"strokeColor=none;shape=mxgraph.aws3.codepipeline;",AWSWorkDocs2:"strokeColor=none;shape=mxgraph.aws3.workdocs;",AWSAmazonWorkMail:"strokeColor=none;shape=mxgraph.aws3.workmail;",AWSAmazonWorkSpaces2:"strokeColor=none;shape=mxgraph.aws3.workspaces;",AWSAWSIoT:"strokeColor=none;shape=mxgraph.aws3.aws_iot;","AWSAWSIoT(action)":"strokeColor=none;shape=mxgraph.aws3.action;","AWSAWSIoT(actuator)":"strokeColor=none;shape=mxgraph.aws3.actuator;",
"AWSAWSIoT(certificate)":"strokeColor=none;shape=mxgraph.aws3.certificate;","AWSAWSIoT(desiredstate)":"strokeColor=none;shape=mxgraph.aws3.desired_state;","AWSAWSIoT(hardwareboard)":"strokeColor=none;shape=mxgraph.aws3.hardware_board;","AWSAWSIoT(HTTP2protocol)":"strokeColor=none;shape=mxgraph.aws3.http_2_protocol;","AWSAWSIoT(HTTPprotocol)":"strokeColor=none;shape=mxgraph.aws3.http_protocol;","AWSAWSIoT(MQTTprotocol)":"strokeColor=none;shape=mxgraph.aws3.mqtt_protocol;","AWSAWSIoT(policy)":"strokeColor=none;shape=mxgraph.aws3.policy;",
"AWSAWSIoT(reportedstate)":"strokeColor=none;shape=mxgraph.aws3.reported_state;","AWSAWSIoT(rule)":"strokeColor=none;shape=mxgraph.aws3.rule;","AWSAWSIoT(sensor)":"strokeColor=none;shape=mxgraph.aws3.sensor;","AWSAWSIoT(servo)":"strokeColor=none;shape=mxgraph.aws3.servo;","AWSAWSIoT(shadow)":"strokeColor=none;shape=mxgraph.aws3.shadow;","AWSAWSIoT(simulator)":"strokeColor=none;shape=mxgraph.aws3.simulator;","AWSAWSIoT(thingbank)":"strokeColor=none;shape=mxgraph.aws3.bank;","AWSAWSIoT(thingbicycle)":"strokeColor=none;shape=mxgraph.aws3.bicycle;",
"AWSAWSIoT(thingcamera)":"strokeColor=none;shape=mxgraph.aws3.camera;","AWSAWSIoT(thingcar)":"strokeColor=none;shape=mxgraph.aws3.car;","AWSAWSIoT(thingcart)":"strokeColor=none;shape=mxgraph.aws3.cart;","AWSAWSIoT(thingcoffeepot)":"strokeColor=none;shape=mxgraph.aws3.coffee_pot;","AWSAWSIoT(thingdoorlock)":"strokeColor=none;shape=mxgraph.aws3.door_lock;","AWSAWSIoT(thingfactory)":"strokeColor=none;shape=mxgraph.aws3.factory;","AWSAWSIoT(thinggeneric)":"strokeColor=none;shape=mxgraph.aws3.generic;",
"AWSAWSIoT(thinghouse)":"strokeColor=none;shape=mxgraph.aws3.house;","AWSAWSIoT(thinglightbulb)":"strokeColor=none;shape=mxgraph.aws3.lightbulb;","AWSAWSIoT(thingmedicalemergency)":"strokeColor=none;shape=mxgraph.aws3.medical_emergency;","AWSAWSIoT(thingpoliceemergency)":"strokeColor=none;shape=mxgraph.aws3.police_emergency;","AWSAWSIoT(thingthermostat)":"strokeColor=none;shape=mxgraph.aws3.thermostat;","AWSAWSIoT(thingtravel)":"strokeColor=none;shape=mxgraph.aws3.travel;","AWSAWSIoT(thingutility)":"strokeColor=none;shape=mxgraph.aws3.utility;",
"AWSAWSIoT(thingwindfarm)":"strokeColor=none;shape=mxgraph.aws3.windfarm;","AWSAWSIoT(topic)":"strokeColor=none;shape=mxgraph.aws3.topic;",AWSCloudBlock2:"strokeColor=none;shape=mxgraph.aws3.cloud;",AWSVPCloudBlock3:"strokeColor=none;shape=mxgraph.aws3.virtual_private_cloud;",AWSUserBlock2:"strokeColor=none;shape=mxgraph.aws3.user;",AWSUsersBlock2:"strokeColor=none;shape=mxgraph.aws3.users;",AWSClientBlock2:"strokeColor=none;shape=mxgraph.aws3.management_console;",AWSMobileClientBlock2:"strokeColor=none;shape=mxgraph.aws3.mobile_client;",
AWSGenericDatabaseBlock3:"strokeColor=none;shape=mxgraph.aws3.generic_database;",AWSDiskBlock3:"strokeColor=none;shape=mxgraph.aws3.disk;",AWSTapeStorageBlock3:"strokeColor=none;shape=mxgraph.aws3.tape_storage;",AWSMediaBlock2:"strokeColor=none;shape=mxgraph.aws3.multimedia;",AWSDataCenterBlock2:"strokeColor=none;shape=mxgraph.aws3.corporate_data_center;",AWSServerBlock2:"strokeColor=none;shape=mxgraph.aws3.traditional_server;",AWSInternetBlock2:"strokeColor=none;shape=mxgraph.aws2.non-service_specific.internet;",
AWSForumsBlock3:"strokeColor=none;shape=mxgraph.aws3.forums;",AWSManagementBlock2:"strokeColor=none;shape=mxgraph.aws3.management_console;",AWSAmazonElasticCacheNode2:"strokeColor=none;shape=mxgraph.aws3.cache_node;",AWSAmazonRedshiftDW1Cluster2:"strokeColor=none;shape=mxgraph.aws3.dense_compute_node;",AWSAmazonRedshiftDW2Cluster2:"strokeColor=none;shape=mxgraph.aws3.dense_storage_node;",AWSAmazonRedshiftSSDFamilyCluster2:"strokeColor=none;shape=mxgraph.aws3.dense_storage_node;",AWSAmazonRoute53RouteTable2:"strokeColor=none;shape=mxgraph.aws3.route_table;",
AWSSubnetBlock2:"strokeColor=none;shape=mxgraph.aws3.permissions;",ACAccessControlBlock:"strokeColor=none;shape=mxgraph.azure.access_control;",ACAPIAppsBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.api_app;",ACAPIManagementBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.api_management;",ACAppInsightsBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.application_insights;",ACAppServicesBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.app_service;",ACAutoscalingBlock:"strokeColor=none;shape=mxgraph.azure.autoscale;",
ACAzureActiveDirectoryBlock:"strokeColor=none;shape=mxgraph.azure.azure_active_directory;",ACAzurealertBlock:"strokeColor=none;shape=mxgraph.azure.azure_alert;",ACAzureAutomationBlock:"strokeColor=none;shape=mxgraph.azure.automation;",ACAzureBatchBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_batch;",ACAzureRedisBlock:"strokeColor=none;shape=mxgraph.azure.azure_cache;",ACAzureFilesBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_files_service;",ACAzureloadbalancerBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_automatic_load_balancer;",
ACAzureMarketplaceBlock:"strokeColor=none;shape=mxgraph.azure.azure_marketplace;",ACAzureRightManagementRMSBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_rights_management_rms;",ACAzureSDKBlock:"strokeColor=none;shape=mxgraph.azure.azure_sdk;",ACAzureSearchBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_search;",ACAzureSQLdatabaseBlock:"strokeColor=none;shape=mxgraph.azure.sql_database_sql_azure;",ACAzuresubscriptionBlock:"strokeColor=none;shape=mxgraph.azure.azure_subscription;",
ACAzureWebsitesBlock:"strokeColor=none;shape=mxgraph.azure.azure_website;",ACBackupServiceBlock:"strokeColor=none;shape=mxgraph.azure.backup_service;",ACBitbucketcodesourceBlock:"strokeColor=none;shape=mxgraph.azure.bitbucket_code_source;",ACBizTalkServicesBlock:"strokeColor=none;shape=mxgraph.azure.biztalk_services;",ACCloudServiceBlock:"strokeColor=none;shape=mxgraph.azure.cloud_service;",ACCodePlexBlock:"strokeColor=none;shape=mxgraph.azure.codeplex_code_source;",ACContentDeliveryNetworkBlock:"strokeColor=none;shape=mxgraph.azure.content_delivery_network;",
ACDataFactoryBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.data_factory;",ACDocumentDBBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.documentdb;",ACDropboxcodesourceBlock:"strokeColor=none;shape=mxgraph.azure.dropbox_code_source;",ACEventsHubBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.event_hubs;",ACExpressRouteBlock:"strokeColor=none;shape=mxgraph.azure.express_route;",ACGitHubBlock:"strokeColor=none;shape=mxgraph.azure.github_code;",ACGitrepositoryBlock:"strokeColor=none;shape=mxgraph.azure.git_repository;",
ACHDInsightBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.hdinsight;",ACHealthmonitoringBlock:"strokeColor=none;shape=mxgraph.azure.health_monitoring;",ACHealthyBlock:"strokeColor=none;shape=mxgraph.azure.healthy;",ACHybridConnectionBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.hybrid_connections;",ACBizTalkhybridconnectionBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.hybrid_connection_manager;",ACKeyVaultBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.key_vault;",ACLogicAppBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.logic_app;",
ACMachineLearningBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.machine_learning;",ACMediaServicesBlock:"strokeColor=none;shape=mxgraph.azure.media_service;",ACMicrosoftaccountBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.microsoft_account;",ACMicrosoftAzureBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.microsoft_azure;",ACMobileEngagementBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.mobile_engagement;",ACMobileServicesBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.mobile_app;",ACMultiFactorAuthBlock:"strokeColor=none;shape=mxgraph.azure.multi_factor_authentication;",
ACMySQLdatabaseBlock:"strokeColor=none;shape=mxgraph.azure.mysql_database;",ACNotificationHubsBlock:"strokeColor=none;shape=mxgraph.azure.notification_hub;",ACNotificationtopicBlock:"strokeColor=none;shape=mxgraph.azure.notification_topic;",ACOperationalInsightsBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.operational_insights;",ACOSimageBlock:"strokeColor=none;shape=mxgraph.azure.operating_system_image;",ACRemoteAppBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.remoteapp;",ACrpdRemotingfileBlock:"strokeColor=none;shape=mxgraph.azure.rdp_remoting_file;",
ACSchedulerBlock:"strokeColor=none;shape=mxgraph.azure.scheduler;",ACServiceBusBlock:"strokeColor=none;shape=mxgraph.azure.service_bus;",ACServiceBusQueueBlock:"strokeColor=none;shape=mxgraph.azure.service_bus_queues;",ACServiceBusRelayBlock:"strokeColor=none;shape=mxgraph.azure.service_bus_relay;",ACServiceBusTopicBlock:"strokeColor=none;shape=mxgraph.azure.service_bus_topics_and_subscriptions;",ACServiceEndpointBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.service_endpoint;",ACServicepackageBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.service_package;",
ACSiteRecoveryBlock:"strokeColor=none;shape=mxgraph.azure.hyper_v_recovery_manager;",ACSQLdatabasegenericBlock:"strokeColor=none;shape=mxgraph.azure.sql_database;",ACSQLdatasyncBlock:"strokeColor=none;shape=mxgraph.azure.sql_datasync;",ACSQLreportingdeprecatedBlock:"strokeColor=none;shape=mxgraph.azure.sql_reporting;",ACStartuptaskBlock:"strokeColor=none;shape=mxgraph.azure.startup_task;",ACStorageAzureBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_storage;",ACStorageblobBlock:"strokeColor=none;shape=mxgraph.azure.storage_blob;",
ACStoragequeueBlock:"strokeColor=none;shape=mxgraph.azure.storage_queue;",ACStoragetableBlock:"strokeColor=none;shape=mxgraph.azure.storage_table;",ACStorSimpleBlock:"strokeColor=none;shape=mxgraph.azure.storsimple;",ACStreamAnalyticsBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.stream_analytics;",ACTrafficManagerBlock:"strokeColor=none;shape=mxgraph.azure.traffic_manager;",ACAlienBlock:"strokeColor=none;shape=mxgraph.azure.unidentified_code_object;",ACVHDBlock:"strokeColor=none;shape=mxgraph.azure.vhd;",
ACVHDdatadiskBlock:"strokeColor=none;shape=mxgraph.azure.vhd_data_disk;",ACVirtualmachineBlock:"strokeColor=none;shape=mxgraph.azure.virtual_machine;",ACVirtualmachinecontainerBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.virtual_machine_container;",ACVirtualnetworkBlock:"strokeColor=none;shape=mxgraph.azure.virtual_network;",ACVisualStudioOnlineBlock:"strokeColor=none;shape=mxgraph.azure.visual_studio_online;",ACVMsymbolonlyBlock:"strokeColor=none;shape=mxgraph.azure.virtual_machine_feature;",
ACWebJobsBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.webjobs;",ACWebroleBlock:"strokeColor=none;shape=mxgraph.azure.web_role;",ACWebrolesBlock:"strokeColor=none;shape=mxgraph.azure.web_roles;",ACWorkaccountBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.work_account;",ACWorkerroleBlock:"strokeColor=none;shape=mxgraph.azure.worker_role;",ACWorkerrolesBlock:"strokeColor=none;shape=mxgraph.azure.worker_roles;",ADNSBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_dns;",ACLoadBalancerBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_load_balancer_feature;",
ACResourceGroupBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.resource_group;",ACVPNGatewayBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.vpn_gateway;",AEActiveDirectoryFSPBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.d;",AEADFSBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.ad_fs;",AEAndroidPhoneBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.android_phone;",AEappblankfortextBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.application_blank;",AEAppGenericBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.app_generic;",
AEAppserverBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.application_server;",AEBackuplocalBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.backup_local;",AEBackuponlineBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.backup_online;",AECalendarBlock:"strokeColor=none;shape=mxgraph.mscae.general.calendar;",AECertificateBlock:"strokeColor=none;shape=mxgraph.azure.certificate;",AEClientAppBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.client_application;",AECloudBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.internet;",
AEClusterserverBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.cluster_server;",AECodefileBlock:"strokeColor=none;shape=mxgraph.azure.code_file;",AEConnectorsBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.connectors;",AEDatabasegenericBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.database_generic;",AEDatabaseserverBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.database_server;",AEDatabasesyncBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.database_synchronization;",
AEDeviceBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.device;",AEDirectaccessBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.direct_access_feature;",AEDocumentBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.document;",AEDomaincontrollerBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.domain_controller;",AEEnterpriseBuildingBlock:"strokeColor=none;shape=mxgraph.azure.enterprise;",AEFilegeneralBlock:"strokeColor=none;shape=mxgraph.azure.file;",AEFilterBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.filter;",
AEFirewallBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.firewall;",AEFolderBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.folder;",AEGatewayBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.gateway;",AEGenericcodeBlock:"strokeColor=none;shape=mxgraph.azure.code_file;",AEGraphBlock:"strokeColor=none;shape=mxgraph.mscae.general.graph;",AEHealthmonitoringBlock:"strokeColor=none;shape=mxgraph.azure.health_monitoring;",AEHealthyBlock:"strokeColor=none;shape=mxgraph.azure.healthy;",
AEImportgenericBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.import_generic;",AEInternetBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.internet;",AEKeyboardBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.keyboard;",AEKeypermissionsBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.key_permissions;",AELaptopcomputerBlock:"strokeColor=none;shape=mxgraph.azure.laptop;",AELoadbalancerBlock:"strokeColor=none;shape=mxgraph.azure.load_balancer_generic;",AELoadTestingBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.load_testing;",
AELockprotectedBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.lock;",AELockunprotectedBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.lock_unlocked;",AEMaintenanceBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.maintenance;",AEManagementconsoleBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.management_console;",AEMessageBlock:"strokeColor=none;shape=mxgraph.azure.message;",AEMonitorBlock:"strokeColor=none;shape=mxgraph.azure.computer;",AEMonitorrunningappsBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.monitor_running_apps;",
AEMouseBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.mouse;",AENetworkcardBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.network_card;",AENotallowedBlock:"strokeColor=none;shape=mxgraph.mscae.general.not_allowed;",AEPerformanceBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.performance;",AEPerformancemonitorBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.performance_monitor;",AEPhoneBlock:"strokeColor=none;shape=mxgraph.azure.mobile;",AEPlugandplayBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.plug_and_play;",
AEPowershellscriptfileBlock:"strokeColor=none;shape=mxgraph.azure.powershell_file;",AEProtocolstackBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.protocol_stack;",AEQueuegeneralBlock:"strokeColor=none;shape=mxgraph.azure.queue_generic;",AERMSconnectorBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.rms_connector;",AERouterBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.router;",AEScriptfileBlock:"strokeColor=none;shape=mxgraph.azure.script_file;",AESecurevirtualmachineBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.secure_virtual_machine;",
AEServerbladeBlock:"strokeColor=none;shape=mxgraph.azure.server;",AEServerdirectoryBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.server_directory;",AEServerfarmBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.server_farm;",AEServergenericBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.server_generic;",AEServerrackBlock:"strokeColor=none;shape=mxgraph.azure.server_rack;",AESettingsBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.settings;",AESharedfolderBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.shared_folder;",
AESmartcardBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.smartcard;",AEStorageBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.storage;",AETableBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.table;",AETabletBlock:"strokeColor=none;shape=mxgraph.azure.tablet;",AEToolBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.tool;",AETunnelBlock:"strokeColor=none;shape=mxgraph.mscae.general.tunnel;",AEUnhealthyBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.unhealthy;",AEUSBBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.usb;",
AEUserBlock:"strokeColor=none;shape=mxgraph.azure.user;",AEVideoBlock:"strokeColor=none;shape=mxgraph.mscae.general.video;",AEVirtualmachineBlock:"strokeColor=none;shape=mxgraph.azure.virtual_machine_feature;",AEWebBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.web;",AEWebserverBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.web_server;",AEWindowsserverBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.windows_server;",AEWirelessconnectionBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.wireless_connection;",
AEWorkstationclientBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.workstation_client;",AEXMLwebserviceBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.xml_web_service;",AGSAudioBlock:"strokeColor=none;shape=mxgraph.mscae.general.audio;",AGSBugBlock:"strokeColor=none;shape=mxgraph.mscae.general.bug;",AGSCablesettopTVboxBlock:"strokeColor=none;shape=mxgraph.mscae.general.cable_settop_tv_box;",AGSCalendarBlock:"strokeColor=none;shape=mxgraph.mscae.general.calendar;",AGSChartBlock:"strokeColor=none;shape=mxgraph.mscae.general.chart;",
AGSCheckmarkSuccessBlock:"strokeColor=none;shape=mxgraph.mscae.general.checkmark;",AGSContinousCycleCircleBlock:"strokeColor=none;shape=mxgraph.mscae.general.continuous_cycle;",AGSCrossoutFailureBlock:"strokeColor=none;shape=mxgraph.mscae.general.crossout;",AGSCutandpasteBlock:"strokeColor=none;shape=mxgraph.mscae.general.cut_and_paste;",AGSFolderBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.folder;",AGSGamecontrollerBlock:"strokeColor=none;shape=mxgraph.mscae.general.game_controller;",AGSGearsBlock:"strokeColor=none;shape=mxgraph.mscae.general.gears;",
AGSGraphBlock:"strokeColor=none;shape=mxgraph.mscae.general.graph;",AGSLikeBlock:"strokeColor=none;shape=mxgraph.mscae.general.like;",AGSNotallowedBlock:"strokeColor=none;shape=mxgraph.mscae.general.not_allowed;",AGSSliderbarhorizontalBlock:"strokeColor=none;shape=mxgraph.mscae.general.slider_bar_horizontal;",AGSSliderbarvertBlock:"strokeColor=none;shape=mxgraph.mscae.general.slider_bar_vertical;",AGSTasklistorBacklogBlock:"strokeColor=none;shape=mxgraph.mscae.general.task_list;",AGSTasksBlock:"strokeColor=none;shape=mxgraph.mscae.general.tasks;",
AGSTunnelBlock:"strokeColor=none;shape=mxgraph.mscae.general.tunnel;",AGSUserBlock:"strokeColor=none;shape=mxgraph.azure.user;",AGSVideoBlock:"strokeColor=none;shape=mxgraph.mscae.general.video;",Cisco_cisco_androgenous_person:"shape=mxgraph.cisco.people.androgenous_person;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_atm_switch:"shape=mxgraph.cisco.switches.atm_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cloud:"shape=mxgraph.cisco.storage.cloud;strokeColor=#036897;fillColor=#ffffff;",
Cisco_cisco_fileserver:"shape=mxgraph.cisco.servers.fileserver;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_firewall:"shape=mxgraph.cisco.security.firewall;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_generic_building:"shape=mxgraph.cisco.buildings.generic_building;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_laptop:"shape=mxgraph.cisco.computers_and_peripherals.laptop;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_lock:"shape=mxgraph.cisco.security.lock;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_microwebserver:"shape=mxgraph.cisco.servers.microwebserver;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_pc:"shape=mxgraph.cisco.computers_and_peripherals.pc;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_pda:"shape=mxgraph.cisco.misc.pda;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_phone:"shape=mxgraph.cisco.modems_and_phones.hootphone;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_printer:"shape=mxgraph.cisco.computers_and_peripherals.printer;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_relational_database:"shape=mxgraph.cisco.storage.relational_database;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_router:"shape=mxgraph.cisco.routers.router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_standing_man:"shape=mxgraph.cisco.people.standing_man;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_standing_woman:"shape=mxgraph.cisco.people.standing_woman;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ups:"shape=mxgraph.cisco.misc.ups;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_wireless_router:"shape=mxgraph.cisco.routers.wireless_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_100baset_hub:"shape=mxgraph.cisco.hubs_and_gateways.100baset_hub;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_10700:"shape=mxgraph.cisco.routers.10700;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_10GE_FCoE:"shape=mxgraph.cisco.controllers_and_modules.10ge_fcoe;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_15200:"shape=mxgraph.cisco.misc.15200;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_3174__desktop_:"shape=mxgraph.cisco.controllers_and_modules.3174_(desktop)_cluster_controller;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_3200_mobile_access_router:"shape=mxgraph.cisco.routers.mobile_access_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_3x74__floor_:"shape=mxgraph.cisco.controllers_and_modules.3x74_(floor)_cluster_controller;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_6700_series:"shape=mxgraph.cisco.misc.6700_series;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_7500ars__7513_:"shape=mxgraph.cisco.misc.7500ars_(7513);fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_accesspoint:"shape=mxgraph.cisco.misc.access_point;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ace:"shape=mxgraph.cisco.misc.ace;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ACS:"shape=mxgraph.cisco.misc.acs;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_adm:"shape=mxgraph.cisco.misc.adm;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_antenna:"shape=mxgraph.cisco.wireless.antenna;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_asic_processor:"shape=mxgraph.cisco.misc.asic_processor;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ASR_1000_Series:"shape=mxgraph.cisco.misc.asr_1000_series;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ata:"shape=mxgraph.cisco.misc.ata;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_atm_3800:"shape=mxgraph.cisco.misc.atm_3800;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_atm_fast_gigabit_etherswitch:"shape=mxgraph.cisco.switches.atm_fast_gigabit_etherswitch;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_atm_router:"shape=mxgraph.cisco.routers.atm_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_atm_tag_switch_router:"shape=mxgraph.cisco.routers.atm_tag_switch_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_avs:"shape=mxgraph.cisco.misc.avs;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_AXP:"shape=mxgraph.cisco.misc.axp;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_bbsm:"shape=mxgraph.cisco.misc.bbsm;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_branch_office:"shape=mxgraph.cisco.buildings.branch_office;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_breakout_box:"shape=mxgraph.cisco.misc.breakout_box;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_bridge:"shape=mxgraph.cisco.misc.bridge;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_broadband_router:"shape=mxgraph.cisco.routers.broadcast_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_bts_10200:"shape=mxgraph.cisco.misc.bts_10200;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cable_modem:"shape=mxgraph.cisco.modems_and_phones.cable_modem;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_callmanager:"shape=mxgraph.cisco.misc.call_manager;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_car:"shape=mxgraph.cisco.misc.car;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_carrier_routing_system:"shape=mxgraph.cisco.misc.carrier_routing_system;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cddi_fddi:"shape=mxgraph.cisco.misc.cddi_fddi;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cdm:"shape=mxgraph.cisco.misc.cdm;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cellular_phone:"shape=mxgraph.cisco.modems_and_phones.cell_phone;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_centri_firewall:"shape=mxgraph.cisco.security.centri_firewall;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_1000:"shape=mxgraph.cisco.misc.cisco_1000;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_asa_5500:"shape=mxgraph.cisco.misc.asa_5500;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_ca:"shape=mxgraph.cisco.misc.cisco_ca;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_file_engine:"shape=mxgraph.cisco.storage.cisco_file_engine;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_cisco_hub:"shape=mxgraph.cisco.hubs_and_gateways.cisco_hub;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ciscosecurity:"shape=mxgraph.cisco.security.cisco_security;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_unified_presence_server:"shape=mxgraph.cisco.servers.cisco_unified_presence_server;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_unityexpress:"shape=mxgraph.cisco.misc.cisco_unity_express;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ciscoworks:"shape=mxgraph.cisco.misc.cisco_works;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_class_4_5_switch:"shape=mxgraph.cisco.switches.class_4_5_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_communications_server:"shape=mxgraph.cisco.servers.communications_server;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_contact_center:"shape=mxgraph.cisco.misc.contact_center;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_content_engine__cache_director_:"shape=mxgraph.cisco.directors.content_engine_(cache_director);fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_content_service_router:"shape=mxgraph.cisco.routers.content_service_router;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_content_service_switch_1100:"shape=mxgraph.cisco.switches.content_service_switch_1100;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_content_switch_module:"shape=mxgraph.cisco.controllers_and_modules.content_switch_module;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_content_switch:"shape=mxgraph.cisco.switches.content_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_content_transformation_engine__cte_:"shape=mxgraph.cisco.misc.content_transformation_engine_(cte);fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_cs_mars:"shape=mxgraph.cisco.misc.cs-mars;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_csm_s:"shape=mxgraph.cisco.misc.csm-s;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_csu_dsu:"shape=mxgraph.cisco.misc.csu_dsu;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_CUBE:"shape=mxgraph.cisco.misc.cube;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_detector:"shape=mxgraph.cisco.misc.detector;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_director_class_fibre_channel_director:"shape=mxgraph.cisco.directors.director-class_fibre_channel_director;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_directory_server:"shape=mxgraph.cisco.servers.directory_server;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_diskette:"shape=mxgraph.cisco.storage.diskette;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_distributed_director:"shape=mxgraph.cisco.directors.distributed_director;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_dot_dot:"shape=mxgraph.cisco.misc.dot-dot;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_dpt:"shape=mxgraph.cisco.misc.dpt;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_dslam:"shape=mxgraph.cisco.misc.dslam;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_dual_mode_ap:"shape=mxgraph.cisco.misc.dual_mode;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_dwdm_filter:"shape=mxgraph.cisco.misc.dwdm_filter;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_end_office:"shape=mxgraph.cisco.buildings.end_office;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_fax:"shape=mxgraph.cisco.modems_and_phones.fax;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_fc_storage:"shape=mxgraph.cisco.storage.fc_storage;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_fddi_ring:"shape=mxgraph.cisco.misc.fddi_ring;strokeColor=#036897;",Cisco_cisco_fibre_channel_disk_subsystem:"shape=mxgraph.cisco.storage.fibre_channel_disk_subsystem;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_fibre_channel_fabric_switch:"shape=mxgraph.cisco.switches.fibre_channel_fabric_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_file_cabinet:"shape=mxgraph.cisco.storage.file_cabinet;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_file_server:"shape=mxgraph.cisco.servers.file_server;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_firewall_service_module__fwsm_:"shape=mxgraph.cisco.controllers_and_modules.firewall_service_module_(fwsm);fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_front_end_processor:"shape=mxgraph.cisco.misc.front_end_processor;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_gatekeeper:"shape=mxgraph.cisco.security.gatekeeper;strokeColor=#036897;",Cisco_cisco_general_applicance:"shape=mxgraph.cisco.misc.general_appliance;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_generic_gateway:"shape=mxgraph.cisco.hubs_and_gateways.generic_gateway;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_generic_processor:"shape=mxgraph.cisco.misc.generic_processor;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_generic_softswitch:"shape=mxgraph.cisco.switches.generic_softswitch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_gigabit_switch_atm_tag_router:"shape=mxgraph.cisco.routers.gigabit_switch_atm_tag_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_government_building:"shape=mxgraph.cisco.buildings.government_building;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_Ground_terminal:"shape=mxgraph.cisco.wireless.ground_terminal;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_guard:"shape=mxgraph.cisco.security.guard;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_handheld:"shape=mxgraph.cisco.misc.handheld;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_hootphone:"shape=mxgraph.cisco.modems_and_phones.hootphone;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_host:"shape=mxgraph.cisco.servers.host;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_hp_mini:"shape=mxgraph.cisco.misc.hp_mini;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_h:"shape=mxgraph.cisco.misc.h_323;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_hub:"shape=mxgraph.cisco.hubs_and_gateways.hub;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_iad_router:"shape=mxgraph.cisco.routers.iad_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ibm_mainframe:"shape=mxgraph.cisco.computers_and_peripherals.ibm_mainframe;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ibm_mini_as400:"shape=mxgraph.cisco.computers_and_peripherals.ibm_mini_as400;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ibm_tower:"shape=mxgraph.cisco.computers_and_peripherals.ibm_tower;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_icm:"shape=mxgraph.cisco.misc.icm;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ics:"shape=mxgraph.cisco.misc.ics;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_intelliswitch_stack:"shape=mxgraph.cisco.switches.intelliswitch_stack;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ios_firewall:"shape=mxgraph.cisco.security.ios_firewall;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ios_slb:"shape=mxgraph.cisco.misc.ios_slb;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ip_communicator:"shape=mxgraph.cisco.misc.ip_communicator;fillColor=#036897;strokeColor=#ffffff;",
(function(){function t(a){a=null!=a.Text?a.Text:null!=a.Value?a.Value:a.Lane_0;return null!=a&&null!=a.t?a.t:""}function q(a){return null!=a.Action?a.Action:a}function u(a,g){var h=q(g);if(null!=h){var b=x[h.Class];null!=b&&(a.style+=b);b=null!=h.Properties?h.Properties:h;if(null!=b){a.value=t(b);var e=!1;if(null!=b.Text&&null!=b.Text.m)for(var f=b.Text.m,d=0;!e&&d<f.length;){var c=f[d];"s"==c.n&&null!=c.v&&(e=!0,c=c.v,c=1+Math.round(c/1.8),a.style+="fontSize="+c+";");d++}0==e&&(a.style+="fontSize=10;");
e=!1;if(null!=b.Text){if(null!=b.Text.m)for(f=b.Text.m,d=0;!e&&d<f.length;)c=f[d],"c"==c.n&&null!=c.v&&(e=!0,c=c.v,"#"!=c.charAt(0)&&(c="#"+c),c=c.substring(0,7),a.style+=mxConstants.STYLE_FONTCOLOR+"="+c+";"),d++;var e=0,m=!1;if(null!=b.Text.m)for(f=b.Text.m,d=0;!m&&d<f.length;)c=f[d],"b"==c.n&&null!=c.v&&c.v&&(m=!0,e+=1),d++;m=!1;if(null!=b.Text.m)for(f=b.Text.m,d=0;!m&&d<f.length;)c=f[d],"i"==c.n&&null!=c.v&&c.v&&(m=!0,e+=2),d++;m=!1;if(null!=b.Text.m)for(f=b.Text.m,d=0;!m&&d<f.length;)c=f[d],
"u"==c.n&&null!=c.v&&c.v&&(m=!0,e+=4),d++;0<e&&(a.style+="fontStyle="+e+";");e=!1;if(null!=b.Text&&null!=b.Text.m)for(f=b.Text.m,d=0;!e&&d<f.length;)c=f[d],"a"==c.n&&null!=c.v&&(e=!0,c=c.v,a.style+="align="+c+";"),d++;e=!1;if(null!=b.Text&&null!=b.Text.m)for(f=b.Text.m,d=0;!e&&d<f.length;)c=f[d],"il"==c.n&&null!=c.v&&(e=!0,c=c.v,a.style+="spacingLeft="+c+";"),d++;e=!1;if(null!=b.Text&&null!=b.Text.m)for(f=b.Text.m,d=0;!e&&d<f.length;)c=f[d],"ir"==c.n&&null!=c.v&&(e=!0,c=c.v,a.style+="spacingRight="+
c+";"),d++;e=!1;if(null!=b.Text&&null!=b.Text.m)for(f=b.Text.m,d=0;!e&&d<f.length;)c=f[d],"mt"==c.n&&null!=c.v&&(e=!0,c=c.v,a.style+="spacingTop="+c+";"),d++;e=!1;if(null!=b.Text&&null!=b.Text.m)for(f=b.Text.m,d=0;!e&&d<f.length;)c=f[d],"mb"==c.n&&null!=c.v&&(e=!0,c=c.v,a.style+="spacingBottom="+c+";"),d++;"number"===typeof b.InsetMargin&&(a.style+="spacing="+parseInt(b.InsetMargin)+";");"string"===typeof b.LineColor&&7<b.LineColor.length&&(f="0x"+b.LineColor.substring(b.LineColor.length-2,b.LineColor.length),
a.style+="strokeOpacity="+Math.round(parseInt(f)/2.55)+";");"string"===typeof b.FillColor&&7<b.FillColor.length&&(f="0x"+b.FillColor.substring(b.FillColor.length-2,b.FillColor.length),a.style+="fillOpacity="+Math.round(parseInt(f)/2.55)+";");null!=b.Text_VAlign&&"string"===typeof b.Text_VAlign&&(a.style+="verticalAlign="+b.Text_VAlign+";")}"ImageSearchBlock2"==h.Class&&(a.style+="image="+b.URL+";");a.style+=k(mxConstants.STYLE_STROKEWIDTH,b.LineWidth,"1");"VennPlainColor1 VennPlainColor2 VennPlainColor3 VennPlainColor4 VennPlainColor5 VennPlainColor6 VennPlainColor7 VennPlainColor8 VennGradientColor1 VennGradientColor2 VennGradientColor3 VennGradientColor4 VennGradientColor5 VennGradientColor6 VennGradientColor7 VennGradientColor8".split(" ").includes(h.Class)||
(a.style+=k(mxConstants.STYLE_STROKECOLOR,b.LineColor.substring(0,7),"#000000"));a.style+=k(mxConstants.STYLE_ALIGN,b.TextAlign,"center");a.style+=k(mxConstants.STYLE_VERTICAL_ALIGN,b.TextVAlign,"middle");"VennPlainColor1 VennPlainColor2 VennPlainColor3 VennPlainColor4 VennPlainColor5 VennPlainColor6 VennPlainColor7 VennPlainColor8 VennGradientColor1 VennGradientColor2 VennGradientColor3 VennGradientColor4 VennGradientColor5 VennGradientColor6 VennGradientColor7 VennGradientColor8".split(" ").includes(h.Class)||
(a.style+=k(mxConstants.STYLE_OPACITY,b.Opacity,"100"));null!=b.Rotation&&(f=mxUtils.toDegree(parseFloat(b.Rotation)),d=["AEUSBBlock","AGSCutandpasteBlock","iOSDeviceiPadLandscape","iOSDeviceiPadProLandscape"],"AdvancedSwimLaneBlockRotated"==h.Class?(f+=90,a.geometry.rotate90()):d.includes(h.Class)&&(f-=90,a.geometry.rotate90(),a.geometry.rotate90(),a.geometry.rotate90()),a.style+="rotation="+f+";");b.FlipX&&(a.style+="flipH=1;");b.FlipY&&(a.style+="flipV=1;");null!=b.Shadow&&(a.style+=mxConstants.STYLE_SHADOW+
"=1;");"dashed"==b.StrokeStyle?a.style+="dashed=1;":"dotted"==b.StrokeStyle&&(a.style+="dashed=1;dashPattern=1 4;");null==b.FillColor||"AWSAndroidBlock3 AWSiOSBlock3 AWSJavaBlock3 AWSJavaScript AWSNetBlock3 AWSNodeJSBlock3 AWSPHPBlock3 AWSPythonBlock3 AWSRubyBlock3 AWSXamarin AWSCLIBlock3 AWSEclipseToolkitBlock3 AWSVisualStudioToolkitBlock3 AWSWindowsPowershellToolkitBlock3 DefaultTextBlock".split(" ").includes(h.Class)||("object"===typeof b.FillColor?null!=b.FillColor.cs&&1<b.FillColor.cs.length&&
(a.style+=k(mxConstants.STYLE_FILLCOLOR,b.FillColor.cs[0].c.substring(0,7)),a.style+=k(mxConstants.STYLE_GRADIENTCOLOR,b.FillColor.cs[1].c.substring(0,7))):a.style="string"===typeof b.FillColor?a.style+k(mxConstants.STYLE_FILLCOLOR,b.FillColor.substring(0,7),"#FFFFFF"):a.style+k(mxConstants.STYLE_FILLCOLOR,"none"));if(a.edge){a.style+="rounded=1;arcSize=5;";if("diagonal"!=b.Shape)if(null!=b.ElbowPoints)for(a.geometry.points=[],d=0;d<b.ElbowPoints.length;d++)a.geometry.points.push(new mxPoint(Math.round(.6*
b.ElbowPoints[d].x+0),Math.round(.6*b.ElbowPoints[d].y+0)));else"elbow"==b.Shape?a.style=null!=b.Endpoint1.Block&&null!=b.Endpoint1.Block?a.style+"edgeStyle=orthogonalEdgeStyle;":a.style+"edgeStyle=elbowEdgeStyle;":null!=b.Endpoint1.Block&&null!=b.Endpoint1.Block&&(a.style+="edgeStyle=orthogonalEdgeStyle;","curve"==b.Shape&&(a.style+="curved=1;"));null!=b.Endpoint1.Style&&("None"==b.Endpoint1.Style?a.style+="startArrow=none;":"Arrow"==b.Endpoint1.Style?a.style+="startArrow=block;endFill=1;":"Hollow Arrow"==
b.Endpoint1.Style?a.style+="startArrow=block;endFill=0;":"Open Arrow"==b.Endpoint1.Style&&(a.style+="startArrow=open;"));null!=b.Endpoint2.Style&&("None"==b.Endpoint2.Style?a.style+="endArrow=none;":"Arrow"==b.Endpoint2.Style?a.style+="endArrow=block;endFill=1;":"Hollow Arrow"==b.Endpoint2.Style?a.style+="endArrow=block;endFill=0;":"Open Arrow"==b.Endpoint2.Style&&(a.style+="endArrow=open;"));n(a,b.Endpoint1,!0);n(a,b.Endpoint2,!1)}}}}function w(a){var g=q(a).Properties.BoundingBox;null!=a.Class&&
"AWS"===a.Class.substring(0,3)&&(g.h-=20);v=new mxCell("",new mxGeometry(Math.round(.6*g.x+0),Math.round(.6*g.y+0),Math.round(.6*g.w),Math.round(.6*g.h)),"html=1;whiteSpace=wrap;");v.vertex=!0;u(v,a);return v}function k(a,g,h,b){null!=g&&null!=b&&(g=b(g));return null!=g&&g!=h?a+"="+g+";":""}function n(a,g,h){null!=g&&(null!=g.LinkX&&null!=g.LinkY&&(a.style+=(h?"exitX":"entryX")+"="+g.LinkX+";"+(h?"exitY":"entryY")+"="+g.LinkY+";"+(h?"exitPerimeter":"entryPerimeter")+"=0;"),"Arrow"==g.Style?a.style+=
(h?"startArrow":"endArrow")+"=block;":"Hollow Arrow"==g.Style?(a.style+=(h?"startArrow":"endArrow")+"=block;",a.style+=(h?"startFill":"endFill")+"=0;"):"Open Arrow"==g.Style&&(a.style+=(h?"startArrow":"endArrow")+"=open;",a.style+=(h?"startSize":"endSize")+"=12;"))}var x={DefaultTextBlockNew:"text;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;",DefaultTextBlock:"text;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;",DefaultSquareBlock:"rounded=1;arcSize=5;",DefaultNoteBlock:"shape=note;size=15;",
DefaultNoteBlockV2:"shape=note;size=15;",HotspotBlock:"strokeColor=none;opacity=50;",ImageSearchBlock2:"shape=image;",ProcessBlock:"rounded=1;arcSize=5;",DecisionBlock:"rhombus;rounded=1;arcSize=5;",TerminatorBlock:"rounded=1;arcSize=50;",PredefinedProcessBlock:"shape=process;rounded=1;arcSize=5;",DocumentBlock:"shape=document;",MultiDocumentBlock:"shape=mxgraph.flowchart.multi-document;",ManualInputBlock:"shape=manualInput;size=15;rounded=1;arcSize=5;",PreparationBlock:"shape=hexagon;rounded=1;arcSize=5;",
DataBlock:"shape=parallelogram;rounded=1;arcSize=5;",DataBlockNew:"shape=parallelogram;rounded=1;arcSize=5;",DatabaseBlock:"shape=cylinder;",DirectAccessStorageBlock:"shape=mxgraph.flowchart.direct_data;",InternalStorageBlock:"shape=internalStorage;rounded=1;arcSize=5;dx=10;dy=10;",PaperTapeBlock:"shape=tape;size=0.2;",ManualOperationBlockNew:"shape=trapezoid;rounded=1;arcSize=5;flipV=1;",DelayBlock:"shape=delay;",StoredDataBlock:"shape=dataStorage;",MergeBlock:"triangle;direction=south;rounded=1;arcSize=5;",
ConnectorBlock:"ellipse;",OrBlock:"shape=mxgraph.flowchart.summing_function;",SummingJunctionBlock:"shape=mxgraph.flowchart.or;",DisplayBlock:"shape=display;",OffPageLinkBlock:"shape=offPageConnector;rounded=1;arcSize=5;",BraceNoteBlock:"shape=curlyBracket;rounded=1;",NoteBlock:"shape=mxgraph.flowchart.annotation_1;",AdvancedSwimLaneBlock:"swimlane;rounded=1;arcSize=5;",AdvancedSwimLaneBlockRotated:"swimlane;horizontal=0;rounded=1;arcSize=5;",RectangleContainerBlock:"fillColor=none;container=1;rounded=1;arcSize=5;",
DiamondContainerBlock:"shape=rhombus;fillColor=none;container=1;",RoundedRectangleContainerBlock:"rounded=1;fillColor=none;container=1;",CircleContainerBlock:"shape=ellipse;fillColor=none;container=1;",PillContainerBlock:"rounded=1;arcSize=50;fillColor=none;container=1;",IsoscelesTriangleBlock:"triangle;direction=north;",RightTriangleBlock:"shape=mxgraph.basic.orthogonal_triangle;",PentagonBlock:"shape=mxgraph.basic.pentagon;",HexagonBlock:"shape=hexagon;rounded=1;arcSize=5;",OctagonBlock:"shape=mxgraph.basic.octagon;",
CrossBlock:"shape=cross;size=0.6;",CloudBlock:"ellipse;shape=cloud;",HeartBlock:"shape=mxgraph.basic.heart;",RightArrowBlock:"shape=singleArrow;arrowWidth=0.5;arrowSize=0.3;",DoubleArrowBlock:"shape=doubleArrow;arrowWidth=0.5;arrowSize=0.3;",CalloutBlock:"shape=mxgraph.basic.rectangular_callout;",ShapeCircleBlock:"ellipse;",ShapePolyStarBlock:"shape=mxgraph.basic.star;",ShapeDiamondBlock:"rhombus;rounded=1;arcSize=5;",UI2HotspotBlock:"shape=rect;opacity=50;strokeColor=none;rounded=1;",AndroidIconCheck:"shape=mxgraph.ios7.misc.check;",
AndroidIconCancel:"shape=mxgraph.atlassian.x;",AndroidIconCollapse:"shape=mxgraph.ios7.misc.up;",AndroidIconExpand:"shape=mxgraph.ios7.misc.down;",AndroidIconNext:"shape=mxgraph.ios7.misc.right;",AndroidIconPrevious:"shape=mxgraph.ios7.misc.left;",AndroidIconRefresh:NaN,AndroidIconInformation:"shape=mxgraph.ios7.icons.info;",AndroidIconSearch:"shape=mxgraph.ios7.icons.looking_glass;",AndroidIconSettings:"shape=mxgraph.ios7.icons.volume;direction=south;",AndroidIconTrash:"shape=mxgraph.ios7.icons.trashcan;",
AndroidIconEmail:"shape=mxgraph.mockup.misc.mail2;",AndroidIconNew:"shape=mxgraph.ios7.misc.flagged;",iOSDeviceiPhoneSE:"shape=mxgraph.ios7.misc.iphone;",iOSDeviceiPhone6s:"shape=mxgraph.ios7.misc.iphone;",iOSDeviceiPhone6sPlus:"shape=mxgraph.ios7.misc.iphone;",iOSDeviceiPadPortrait:"shape=mxgraph.ios7.misc.ipad7inch;",iOSDeviceiPadLandscape:"shape=mxgraph.ios7.misc.ipad7inch;",iOSDeviceiPadProPortrait:"shape=mxgraph.ios7.misc.ipad7inch;",iOSDeviceiPadProLandscape:"shape=mxgraph.ios7.misc.ipad10inch;",
iOSButton:"shape=rect;",iOSStepper:"shape=mxgraph.ios7.misc.adjust;",iOSToggle:"shape=mxgraph.ios7ui.onOffButton;buttonState=on;strokeColor2=#aaaaaa;fillColor2=#ffffff;",iOSSlider:"shape=mxgraph.ios7ui.slider;barPos=20;strokeColor2=#a0a0a0;",iOSProgressBar:"shape=mxgraph.ios.iCloudProgressBar;barPos=20;",iOSPageControls:"shape=mxgraph.ios.iCloudProgressBar;barPos=20;",iOSUniversalKeyboard:"shape=mxgraph.ios.iKeybLett;",MindMapBlock:"shape=rect;rounded=1;",MindMapStadiumBlock:"shape=rect;rounded=1;arcSize=50;",
MindMapCloud:"shape=cloud;",MindMapCircle:"shape=ellipse;",MindMapIsoscelesTriangleBlock:"shape=triangle;direction=north;",MindMapDiamondBlock:"shape=rhombus;",MindMapPentagonBlock:"shape=mxgraph.basic.pentagon;",MindMapHexagonBlock:"shape=hexagon;",MindMapOctagonBlock:"shape=mxgraph.basic.octagon;",MindMapCrossBlock:"shape=mxgraph.basic.cross2;dx=20;",UMLClassBlock:"rounded=1;",UMLActiveClassBlock:"shape=mxgraph.flowchart.predefined_process;",UMLPackageBlock:"shape=folder;tabPosition=left;",UMLNoteBlock:"shape=note;size=15;",
UMLTextBlock:"shape=text;strokeColor=none;fillColor=none;",UMLActorBlock:"shape=umlActor;",UMLUseCaseBlock:"shape=ellipse;",UMLCircleContainerBlock:"shape=ellipse;container=1;",UMLRectangleContainerBlock:"rounded=1;container=1;",UMLOptionLoopBlock:"shape=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill;",UMLStartBlock:"shape=ellipse;fillColor=#000000;",UMLStateBlock:"shape=rect;rounded=1;",UMLDecisionBlock:"shape=rhombus;rounded=1;",UMLHForkJoinBlock:"shape=rect;rounded=1;fillColor=#000000;",
UMLVForkJoinBlock:"shape=rect;rounded=1;fillColor=#000000;",UMLFlowFinalBlock:"shape=mxgraph.flowchart.or;",UMLHistoryStateBlock:"shape=ellipse;",UMLEndBlock:"shape=mxgraph.bpmn.shape;outline=end;symbol=terminate;",UMLObjectBlock:"shape=rect;rounded=1;",UMLSendSignalBlock:"shape=mxgraph.sysml.sendSigAct;",UMLReceiveSignalBlock:"shape=mxgraph.sysml.accEvent;flipH=1;",UMLAcceptTimeEventActionBlock:"shape=mxgraph.sysml.timeEvent;",UMLOffPageLinkBlock:"shape=mxgraph.sysml.sendSigAct;direction=south;",
UMLActivationBlock:"shape=rect;rounded=1;",UMLDeletionBlock:"shape=mxgraph.sysml.x;strokeWidth=4;",UMLSeqEntityBlock:"shape=mxgraph.electrical.radio.microphone_1;direction=north;",UMLComponentBlock:"shape=component;align=left;spacingLeft=36;",UMLNodeBlock:"shape=cube;size=12;flipH=1;",UMLComponentInterfaceBlock:"shape=ellipse;",UMLProvidedInterfaceBlock:"shape=lollipop;direction=south;",UMLRequiredInterfaceBlock:"shape=requires;direction=north;",UMLEntityBlock:"shape=rect;rounded=1;",UMLWeakEntityBlock:"shape=ext;double=1;rounded=1;",
UMLAttributeBlock:"shape=ellipse;",UMLMultivaluedAttributeBlock:"shape=doubleEllipse;",UMLRelationshipBlock:"shape=rhombus;rounded=1;",UMLWeakRelationshipBlock:"shape=rhombus;rounded=1;double=1;",DFDExternalEntityBlock2:"shape=rect;rounded=1;",YDMDFDProcessBlock:"shape=ellipse;",YDMDFDDataStoreBlock:"shape=partialRectangle;right=0;left=0;",GSDFDProcessBlock:"shape=swimlane;rounded=1;",GSDFDProcessBlock2:"shape=rect;rounded=1;",GSDFDDataStoreBlock2:"shape=partialRectangle;right=0;",OrgBlock:"shape=rect;rounded=1;",
VSMCustomerSupplierBlock:"shape=mxgraph.lean_mapping.outside_sources;",VSMDedicatedProcessBlock:"shape=mxgraph.lean_mapping.manufacturing_process;",VSMSharedProcessBlock:"shape=mxgraph.lean_mapping.manufacturing_process_shared;",VSMWorkcellBlock:"shape=mxgraph.lean_mapping.work_cell;",VSMInventoryBlock:"shape=mxgraph.lean_mapping.inventory_box;",VSMPhysicalPullBlock:"shape=mxgraph.lean_mapping.physical_pull;direction=south;",VSMFIFOLaneBlock:"shape=mxgraph.lean_mapping.fifo_sequence_flow;fontStyle=0;fontSize=20",
VSMExternalShipmentAirplaneBlock:"shape=mxgraph.lean_mapping.airplane_7;",VSMExternalShipmentForkliftBlock:"shape=mxgraph.lean_mapping.move_by_forklift;",VSMExternalShipmentTruckBlock:"shape=mxgraph.lean_mapping.truck_shipment;",VSMExternalShipmentBoatBlock:"shape=mxgraph.lean_mapping.boat_shipment;",VSMProductionControlBlock:"shape=mxgraph.lean_mapping.manufacturing_process;",VSMOtherInformationBlock:"shape=rect;rounded=1;",VSMSequencedPullBallBlock:"shape=mxgraph.lean_mapping.sequenced_pull_ball;",
VSMMRPERPBlock:"shape=mxgraph.lean_mapping.mrp_erp;whiteSpace=wrap;",VSMLoadLevelingBlock:"shape=mxgraph.lean_mapping.load_leveling;",VSMGoSeeBlock:"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1;",VSMGoSeeProductionBlock:"shape=ellipse;",VSMVerbalInfoBlock:"shape=mxgraph.lean_mapping.verbal;",VSMKaizenBurstBlock:"shape=mxgraph.lean_mapping.kaizen_lightening_burst;",VSMOperatorBlock:"shape=mxgraph.lean_mapping.operator;flipV=1;",VSMQualityProblemBlock:"shape=mxgraph.lean_mapping.quality_problem;",
VSMProductionKanbanSingleBlock:"shape=mxgraph.lean_mapping.production_kanban;",VSMWithdrawalKanbanBlock:"shape=mxgraph.lean_mapping.withdrawal_kanban;",VSMSignalKanbanBlock:"shape=mxgraph.lean_mapping.signal_kanban;",VSMKanbanPostBlock:"shape=mxgraph.lean_mapping.kanban_post;",VSMShipmentArrow:"shape=singleArrow;arrowWidth=0.5;arrowSize=0.13;",VSMPushArrow:"shape=mxgraph.lean_mapping.push_arrow;",AWSElasticComputeCloudBlock2:"strokeColor=none;shape=mxgraph.aws3.ec2;",AWSInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.instance;",
AWSInstancesBlock2:"strokeColor=none;shape=mxgraph.aws3.instances;",AWSAMIBlock2:"strokeColor=none;shape=mxgraph.aws3.ami;",AWSDBonInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.db_on_instance;",AWSInstanceCloudWatchBlock2:"strokeColor=none;shape=mxgraph.aws3.instance_with_cloudwatch;",AWSElasticIPBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_ip;",AWSHDFSClusterBlock2:"strokeColor=none;shape=mxgraph.aws3.hdfs_cluster;",AWSAutoScalingBlock2:"strokeColor=none;shape=mxgraph.aws3.auto_scaling;",
AWSEC2OptimizedInstance2:"strokeColor=none;shape=mxgraph.aws3.optimized_instance;","AWSAmazonEC2(Spotinstance)":"strokeColor=none;shape=mxgraph.aws3.spot_instance;",AWSAmazonECR:"strokeColor=none;shape=mxgraph.aws3.ecr;",AWSAmazonECS:"strokeColor=none;shape=mxgraph.aws3.ecs;",AWSLambda2:"strokeColor=none;shape=mxgraph.aws3.lambda;",AWSElasticLoadBalancing:"strokeColor=none;shape=mxgraph.aws3.elastic_load_balancing;",AWSElasticLoadBlock2:"strokeColor=none;shape=mxgraph.aws3.classic_load_balancer;",
AWSDirectConnectBlock3:"strokeColor=none;shape=mxgraph.aws3.direct_connect;",AWSElasticNetworkBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_network_interface;",AWSRoute53Block2:"strokeColor=none;shape=mxgraph.aws3.route_53;",AWSHostedZoneBlock2:"strokeColor=none;shape=mxgraph.aws3.hosted_zone;fontColor=#FFFFFF;fontStyle=1;",AWSRouteTableBlock2:"strokeColor=none;shape=mxgraph.aws3.route_table;",AWSVPCBlock2:"strokeColor=none;shape=mxgraph.aws3.vpc;",AWSVPNConnectionBlock2:"strokeColor=none;shape=mxgraph.aws3.vpn_connection;",
AWSVPNGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.vpn_gateway;",AWSCustomerGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.customer_gateway;",AWSCustomerGatewayBlock3:"strokeColor=none;shape=mxgraph.aws3.customer_gateway;",AWSInternetGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.internet_gateway;",AWSRouterBlock2:"strokeColor=none;shape=mxgraph.aws3.router;",AWSRouterBlock3:"strokeColor=none;shape=mxgraph.aws3.router;","AWSAmazonVPC(endpoints)":"strokeColor=none;shape=mxgraph.aws3.endpoints;",
"AWSAmazonVPC(flowlogs)":"strokeColor=none;shape=mxgraph.aws3.flow_logs;","AWSAmazonVPC(VPCNATgateway)":"strokeColor=none;shape=mxgraph.aws3.vpc_nat_gateway;",AWSVPCPeering3:"strokeColor=none;shape=mxgraph.aws3.vpc_peering;",AWSSimpleStorageBlock2:"strokeColor=none;shape=mxgraph.aws3.s3;",AWSBucketBlock2:"strokeColor=none;shape=mxgraph.aws3.bucket;fontStyle=1;fontColor=#ffffff;",AWSBuckethWithObjectsBlock2:"strokeColor=none;shape=mxgraph.aws3.bucket_with_objects;",AWSObjectBlock2:"strokeColor=none;shape=mxgraph.aws3.object;fontStyle=1;fontColor=#ffffff;",
AWSImportExportBlock2:"strokeColor=none;shape=mxgraph.aws3.import_export;",AWSStorageGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.storage_gateway;",AWSElasticBlockStorageBlock2:"strokeColor=none;shape=mxgraph.aws3.volume;fontStyle=1;fontColor=#ffffff;",AWSVolumeBlock3:"strokeColor=none;shape=mxgraph.aws3.volume;fontStyle=1;fontColor=#ffffff;",AWSSnapshotBlock2:"strokeColor=none;shape=mxgraph.aws3.snapshot;fontStyle=1;fontColor=#ffffff;",AWSGlacierArchiveBlock3:"strokeColor=none;shape=mxgraph.aws3.archive;",
AWSGlacierVaultBlock3:"strokeColor=none;shape=mxgraph.aws3.vault;",AWSAmazonEFS:"strokeColor=none;shape=mxgraph.aws3.efs;",AWSGlacierBlock2:"strokeColor=none;shape=mxgraph.aws3.glacier;",AWSAWSImportExportSnowball:"strokeColor=none;shape=mxgraph.aws3.snowball;",AWSStorageGatewayCachedVolumn2:"strokeColor=none;shape=mxgraph.aws3.cached_volume;","AWSStorageGatewayNon-CachedVolumn2":"strokeColor=none;shape=mxgraph.aws3.non_cached_volume;",AWSStorageGatewayVirtualTapeLibrary2:"strokeColor=none;shape=mxgraph.aws3.virtual_tape_library;",
AWSCloudFrontBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudfront;",AWSDownloadDistBlock2:"strokeColor=none;shape=mxgraph.aws3.download_distribution;",AWSStreamingBlock2:"strokeColor=none;shape=mxgraph.aws3.streaming_distribution;",AWSEdgeLocationBlock2:"strokeColor=none;shape=mxgraph.aws3.edge_location;",AWSItemBlock2:"strokeColor=none;shape=mxgraph.aws3.item;",AWSItemsBlock2:"strokeColor=none;shape=mxgraph.aws3.items;",AWSAttributeBlock2:"strokeColor=none;shape=mxgraph.aws3.attribute;",AWSAttributesBlock2:"strokeColor=none;shape=mxgraph.aws3.attributes;",
AWSRDBSBlock2:"strokeColor=none;shape=mxgraph.aws3.rds;",AWSRDSInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance;",AWSRDSStandbyBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance_standby_multi_az;",AWSRDSInstanceReadBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance_read_replica;",AWSOracleDBBlock2:"strokeColor=none;shape=mxgraph.aws3.oracle_db_instance;",AWSMySQLDBBlock2:"strokeColor=none;shape=mxgraph.aws3.mysql_db_instance;",AWSDynamoDBBlock2:"strokeColor=none;shape=mxgraph.aws3.dynamo_db;",
AWSSimpleDatabaseBlock3:"strokeColor=none;shape=mxgraph.aws2.database.simpledb;",AWSSimpleDatabaseDomainBlock3:"strokeColor=none;shape=mxgraph.aws2.database.simpledb_domain;",AWSTableBlock2:"strokeColor=none;shape=mxgraph.aws3.table;",AWSAmazonRedShiftBlock3:"strokeColor=none;shape=mxgraph.aws3.redshift;",AWSElastiCacheNodeBlock2:"strokeColor=none;shape=mxgraph.aws3.cache_node;",AWSElastiCacheBlock2:"strokeColor=none;shape=mxgraph.aws3.elasticache;",AWSDynamoDBGlobalSecondaryIndexes2:"strokeColor=none;shape=mxgraph.aws3.global_secondary_index;",
AWSAmazonElastiCacheMemcache2:"strokeColor=none;shape=mxgraph.aws3.memcached;",AWSAmazonElastiCacheRedis2:"strokeColor=none;shape=mxgraph.aws3.redis;",AWSAmazonRDSMSSQLInstance2:"strokeColor=none;shape=mxgraph.aws3.ms_sql_instance_2;",AWSMSSQLDBBlock3:"strokeColor=none;shape=mxgraph.aws3.ms_sql_instance;",AWSAmazonRDSMySQLDBInstance2:"strokeColor=none;shape=mxgraph.aws3.mysql_db_instance_2;",AWSAmazonRDSOracleDBInstance2:"strokeColor=none;shape=mxgraph.aws3.oracle_db_instance_2;",AWSRDSReplicasetswithPIOP2:"strokeColor=none;shape=mxgraph.aws3.piop;",
AWSAmazonRDSPostgreSQL2:"strokeColor=none;shape=mxgraph.aws3.postgre_sql_instance;",AWSRDSMasterSQL2:"strokeColor=none;shape=mxgraph.aws3.sql_master;",AWSRDSSlaveSQL2:"strokeColor=none;shape=mxgraph.aws3.sql_slave;","AWSAmazonRedshift(densecomputenode)":"strokeColor=none;shape=mxgraph.aws3.dense_compute_node;","AWSAmazonRedshift(densestoragenode)":"strokeColor=none;shape=mxgraph.aws3.dense_storage_node;",AWSAWSDatabaseMigrationService:"strokeColor=none;shape=mxgraph.aws3.database_migration_service;",
AWSACM:"strokeColor=none;shape=mxgraph.aws3.certificate_manager;",AWSAmazonInspector:"strokeColor=none;shape=mxgraph.aws3.inspector;",AWSAWSCloudHSM:"strokeColor=none;shape=mxgraph.aws3.cloudhsm;",AWSDirectoryService2:"strokeColor=none;shape=mxgraph.aws3.directory_service;",AWSAWSKMS:"strokeColor=none;shape=mxgraph.aws3.kms;",AWSAWSWAF:"strokeColor=none;shape=mxgraph.aws3.waf;","AWSACM(certificate-manager)":"strokeColor=none;shape=mxgraph.aws3.certificate_manager_2;",AWSSESBlock2:"strokeColor=none;shape=mxgraph.aws3.ses;",
AWSEmailBlock2:"strokeColor=none;shape=mxgraph.aws3.email;",AWSSNSBlock2:"strokeColor=none;shape=mxgraph.aws3.sns;",AWSSQSBlock3:"strokeColor=none;shape=mxgraph.aws3.sqs;",AWSQueueBlock2:"strokeColor=none;shape=mxgraph.aws3.queue;",AWSMessageBlock2:"strokeColor=none;shape=mxgraph.aws3.message;",AWSDeciderBlock2:"strokeColor=none;shape=mxgraph.aws3.decider;",AWSSWFBlock2:"strokeColor=none;shape=mxgraph.aws3.swf;",AWSWorkerBlock2:"strokeColor=none;shape=mxgraph.aws3.worker;",AWSCloudSearchBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudsearch;",
AWSCloudSearchMetadataBlock3:"strokeColor=none;shape=mxgraph.aws3.search_documents;",AWSElasticTranscoder3:"strokeColor=none;shape=mxgraph.aws3.elastic_transcoder;",AWSAmazonAPIGateway:"strokeColor=none;shape=mxgraph.aws3.api_gateway;",AWSAppStream2:"strokeColor=none;shape=mxgraph.aws3.appstream;",AWSCloudFormationBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudformation;",AWSDataPipelineBlock3:"strokeColor=none;shape=mxgraph.aws3.data_pipeline;",AWSDataPipelineBlock2:"strokeColor=none;shape=mxgraph.aws3.data_pipeline;",
AWSTemplageBlock2:"strokeColor=none;shape=mxgraph.aws3.template;",AWSStackBlock2:"strokeColor=none;shape=mxgraph.aws3.stack_aws_cloudformation;",AWSBeanStockBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_beanstalk;",AWSApplicationBlock2:"strokeColor=none;shape=mxgraph.aws3.application;",AWSBeanstalkDeploymentBlock3:"strokeColor=none;shape=mxgraph.aws3.deployment;",AWSIAMBlock3:"strokeColor=none;shape=mxgraph.aws3.iam;",AWSIAMSTSBlock3:"strokeColor=none;shape=mxgraph.aws3.sts;",AWSIAMAddonBlock2:"strokeColor=none;shape=mxgraph.aws3.add_on;",
AWSCloudWatchBlock3:"strokeColor=none;shape=mxgraph.aws3.cloudwatch;",AWSCloudWatchAlarmBlock2:"strokeColor=none;shape=mxgraph.aws3.alarm;",AWSIAMSecurityTokenService2:"strokeColor=none;shape=mxgraph.aws3.sts_2;",AWSIAMDataEncryptionKey2:"strokeColor=none;shape=mxgraph.aws3.data_encryption_key;",AWSIAMEncryptedData2:"strokeColor=none;shape=mxgraph.aws3.encrypted_data;","AWSAWSIAM(long-termsecuritycredential)":"strokeColor=none;shape=mxgraph.aws3.long_term_security_credential;",AWSIAMMFAToken2:"strokeColor=none;shape=mxgraph.aws3.mfa_token;",
AWSIAMPermissions2:"strokeColor=none;shape=mxgraph.aws3.permissions_2;",AWSIAMRoles2:"strokeColor=none;shape=mxgraph.aws3.role;","AWSAWSIAM(temporarysecuritycredential)":"strokeColor=none;shape=mxgraph.aws3.long_term_security_credential;",AWSCloudTrail2:"strokeColor=none;shape=mxgraph.aws3.cloudtrail;",AWSConfig2:"strokeColor=none;shape=mxgraph.aws3.config;",AWSOpsWorksBlock3:"strokeColor=none;shape=mxgraph.aws3.opsworks;",AWSAWSServiceCatalog:"strokeColor=none;shape=mxgraph.aws3.service_catalog;",
AWSTrustedAdvisor2:"strokeColor=none;shape=mxgraph.aws3.trusted_advisor;",AWSOpsWorksApps2:"strokeColor=none;shape=mxgraph.aws3.apps;",AWSOpsWorksDeployments2:"strokeColor=none;shape=mxgraph.aws3.deployments;",AWSOpsWorksInstances2:"strokeColor=none;shape=mxgraph.aws3.instances_2;",AWSOpsWorksLayers2:"strokeColor=none;shape=mxgraph.aws3.layers;",AWSOpsWorksMonitoring2:"strokeColor=none;shape=mxgraph.aws3.monitoring;",AWSOpsWorksPermissions2:"strokeColor=none;shape=mxgraph.aws3.permissions;",AWSOpsWorksResources2:"strokeColor=none;shape=mxgraph.aws3.resources;",
AWSOpsWorksStack2:"strokeColor=none;shape=mxgraph.aws3.stack_aws_opsworks;",AWSMechanicalTurkBlock3:"strokeColor=none;shape=mxgraph.aws3.mechanical_turk;",AWSHumanITBlock2:"strokeColor=none;shape=mxgraph.aws3.human_intelligence_tasks_hit;",AWSAssignmentTaskBlock2:"strokeColor=none;shape=mxgraph.aws3.requester;",AWSWorkersBlock2:"strokeColor=none;shape=mxgraph.aws3.users;",AWSRequesterBlock2:"strokeColor=none;shape=mxgraph.aws3.assignment_task;",AWSAndroidBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#96BF3D;",
AWSiOSBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#CFCFCF;",AWSJavaBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#EE472A;",AWSJavaScript:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#205E00;",AWSNetBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#115193;",AWSNodeJSBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#8CC64F;",AWSPHPBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#5A69A4;",AWSPythonBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#FFD44F;",
AWSRubyBlock3:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#AE1F23;",AWSXamarin:"strokeColor=none;shape=mxgraph.aws3.android;fillColor=#4090D7;",AWSCLIBlock3:"strokeColor=none;shape=mxgraph.aws3.cli;fillColor=#444444;",AWSEclipseToolkitBlock3:"strokeColor=none;shape=mxgraph.aws3.toolkit_for_eclipse;fillColor=#342074;",AWSVisualStudioToolkitBlock3:"strokeColor=none;shape=mxgraph.aws3.toolkit_for_visual_studio;fillColor=#53B1CB;",AWSWindowsPowershellToolkitBlock3:"strokeColor=none;shape=mxgraph.aws3.toolkit_for_windows_powershell;fillColor=#737373;",
AWSAmazonElasticsearchService:"strokeColor=none;shape=mxgraph.aws3.elasticsearch_service;",AWSElasticMapReduceBlock2:"strokeColor=none;shape=mxgraph.aws3.emr;",AWSClusterBlock2:"strokeColor=none;shape=mxgraph.aws3.emr_cluster;",AWSEMREngine2:"strokeColor=none;shape=mxgraph.aws3.emr_engine;",AWSEMRMapRM3Engine2:"strokeColor=none;shape=mxgraph.aws3.emr_engine_mapr_m3;",AWSEMRMapRM5Engine2:"strokeColor=none;shape=mxgraph.aws3.emr_engine_mapr_m5;",AWSEMRMapRM7Engine2:"strokeColor=none;shape=mxgraph.aws3.emr_engine_mapr_m7;",
AWSKinesis2:"strokeColor=none;shape=mxgraph.aws3.kinesis;","AWSAmazonKinesis(AmazonKinesisAnalytics)":"strokeColor=none;shape=mxgraph.aws3.kinesis;",AWSKinesisEnabledApp2:"strokeColor=none;shape=mxgraph.aws3.kinesis_enabled_app;","AWSAmazonKinesis(AmazonKinesisFirehose)":"strokeColor=none;shape=mxgraph.aws3.kinesis_firehose;","AWSAmazonKinesis(AmazonKinesisStreams)":"strokeColor=none;shape=mxgraph.aws3.kinesis_streams;",AWSAmazonMachineLearning:"strokeColor=none;shape=mxgraph.aws3.machine_learning;",
AWSAmazonQuickSight:"strokeColor=none;shape=mxgraph.aws3.quicksight;",AWSCognito2:"strokeColor=none;shape=mxgraph.aws3.cognito;",AWSMobileAnalytics2:"strokeColor=none;shape=mxgraph.aws3.mobile_analytics;",AWSAWSDeviceFarm:"strokeColor=none;shape=mxgraph.aws3.device_farm;",AWSAWSMobileHub:"strokeColor=none;shape=mxgraph.aws3.mobile_hub;gradientColor=#AD688A;gradientDirection=east;",AWSTopicBlock2:"strokeColor=none;shape=mxgraph.aws3.topic_2;fontStyle=1;fontColor=#ffffff;verticalAlign=top;spacingTop=-5;",
AWSEmailNotificationBlock2:"strokeColor=none;shape=mxgraph.aws3.email_notification;",AWSHTTPNotificationBlock2:"strokeColor=none;shape=mxgraph.aws3.http_notification;",AWSAWSCodeCommit:"strokeColor=none;shape=mxgraph.aws3.codecommit;",AWSCodeDeploy2:"strokeColor=none;shape=mxgraph.aws3.codedeploy;",AWSAWSCodePipeline:"strokeColor=none;shape=mxgraph.aws3.codepipeline;",AWSWorkDocs2:"strokeColor=none;shape=mxgraph.aws3.workdocs;",AWSAmazonWorkMail:"strokeColor=none;shape=mxgraph.aws3.workmail;",AWSAmazonWorkSpaces2:"strokeColor=none;shape=mxgraph.aws3.workspaces;",
AWSAWSIoT:"strokeColor=none;shape=mxgraph.aws3.aws_iot;","AWSAWSIoT(action)":"strokeColor=none;shape=mxgraph.aws3.action;","AWSAWSIoT(actuator)":"strokeColor=none;shape=mxgraph.aws3.actuator;","AWSAWSIoT(certificate)":"strokeColor=none;shape=mxgraph.aws3.certificate;","AWSAWSIoT(desiredstate)":"strokeColor=none;shape=mxgraph.aws3.desired_state;","AWSAWSIoT(hardwareboard)":"strokeColor=none;shape=mxgraph.aws3.hardware_board;","AWSAWSIoT(HTTP2protocol)":"strokeColor=none;shape=mxgraph.aws3.http_2_protocol;",
"AWSAWSIoT(HTTPprotocol)":"strokeColor=none;shape=mxgraph.aws3.http_protocol;","AWSAWSIoT(MQTTprotocol)":"strokeColor=none;shape=mxgraph.aws3.mqtt_protocol;","AWSAWSIoT(policy)":"strokeColor=none;shape=mxgraph.aws3.policy;","AWSAWSIoT(reportedstate)":"strokeColor=none;shape=mxgraph.aws3.reported_state;","AWSAWSIoT(rule)":"strokeColor=none;shape=mxgraph.aws3.rule;","AWSAWSIoT(sensor)":"strokeColor=none;shape=mxgraph.aws3.sensor;","AWSAWSIoT(servo)":"strokeColor=none;shape=mxgraph.aws3.servo;","AWSAWSIoT(shadow)":"strokeColor=none;shape=mxgraph.aws3.shadow;",
"AWSAWSIoT(simulator)":"strokeColor=none;shape=mxgraph.aws3.simulator;","AWSAWSIoT(thingbank)":"strokeColor=none;shape=mxgraph.aws3.bank;","AWSAWSIoT(thingbicycle)":"strokeColor=none;shape=mxgraph.aws3.bicycle;","AWSAWSIoT(thingcamera)":"strokeColor=none;shape=mxgraph.aws3.camera;","AWSAWSIoT(thingcar)":"strokeColor=none;shape=mxgraph.aws3.car;","AWSAWSIoT(thingcart)":"strokeColor=none;shape=mxgraph.aws3.cart;","AWSAWSIoT(thingcoffeepot)":"strokeColor=none;shape=mxgraph.aws3.coffee_pot;","AWSAWSIoT(thingdoorlock)":"strokeColor=none;shape=mxgraph.aws3.door_lock;",
"AWSAWSIoT(thingfactory)":"strokeColor=none;shape=mxgraph.aws3.factory;","AWSAWSIoT(thinggeneric)":"strokeColor=none;shape=mxgraph.aws3.generic;","AWSAWSIoT(thinghouse)":"strokeColor=none;shape=mxgraph.aws3.house;","AWSAWSIoT(thinglightbulb)":"strokeColor=none;shape=mxgraph.aws3.lightbulb;","AWSAWSIoT(thingmedicalemergency)":"strokeColor=none;shape=mxgraph.aws3.medical_emergency;","AWSAWSIoT(thingpoliceemergency)":"strokeColor=none;shape=mxgraph.aws3.police_emergency;","AWSAWSIoT(thingthermostat)":"strokeColor=none;shape=mxgraph.aws3.thermostat;",
"AWSAWSIoT(thingtravel)":"strokeColor=none;shape=mxgraph.aws3.travel;","AWSAWSIoT(thingutility)":"strokeColor=none;shape=mxgraph.aws3.utility;","AWSAWSIoT(thingwindfarm)":"strokeColor=none;shape=mxgraph.aws3.windfarm;","AWSAWSIoT(topic)":"strokeColor=none;shape=mxgraph.aws3.topic;",AWSCloudBlock2:"strokeColor=none;shape=mxgraph.aws3.cloud;",AWSVPCloudBlock3:"strokeColor=none;shape=mxgraph.aws3.virtual_private_cloud;",AWSUserBlock2:"strokeColor=none;shape=mxgraph.aws3.user;",AWSUsersBlock2:"strokeColor=none;shape=mxgraph.aws3.users;",
AWSClientBlock2:"strokeColor=none;shape=mxgraph.aws3.management_console;",AWSMobileClientBlock2:"strokeColor=none;shape=mxgraph.aws3.mobile_client;",AWSGenericDatabaseBlock3:"strokeColor=none;shape=mxgraph.aws3.generic_database;",AWSDiskBlock3:"strokeColor=none;shape=mxgraph.aws3.disk;",AWSTapeStorageBlock3:"strokeColor=none;shape=mxgraph.aws3.tape_storage;",AWSMediaBlock2:"strokeColor=none;shape=mxgraph.aws3.multimedia;",AWSDataCenterBlock2:"strokeColor=none;shape=mxgraph.aws3.corporate_data_center;",
AWSServerBlock2:"strokeColor=none;shape=mxgraph.aws3.traditional_server;",AWSInternetBlock2:"strokeColor=none;shape=mxgraph.aws2.non-service_specific.internet;",AWSForumsBlock3:"strokeColor=none;shape=mxgraph.aws3.forums;",AWSManagementBlock2:"strokeColor=none;shape=mxgraph.aws3.management_console;",AWSAmazonElasticCacheNode2:"strokeColor=none;shape=mxgraph.aws3.cache_node;",AWSAmazonRedshiftDW1Cluster2:"strokeColor=none;shape=mxgraph.aws3.dense_compute_node;",AWSAmazonRedshiftDW2Cluster2:"strokeColor=none;shape=mxgraph.aws3.dense_storage_node;",
AWSAmazonRedshiftSSDFamilyCluster2:"strokeColor=none;shape=mxgraph.aws3.dense_storage_node;",AWSAmazonRoute53RouteTable2:"strokeColor=none;shape=mxgraph.aws3.route_table;",AWSSubnetBlock2:"strokeColor=none;shape=mxgraph.aws3.permissions;",ACAccessControlBlock:"strokeColor=none;shape=mxgraph.azure.access_control;",ACAPIAppsBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.api_app;",ACAPIManagementBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.api_management;",ACAppInsightsBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.application_insights;",
ACAppServicesBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.app_service;",ACAutoscalingBlock:"strokeColor=none;shape=mxgraph.azure.autoscale;",ACAzureActiveDirectoryBlock:"strokeColor=none;shape=mxgraph.azure.azure_active_directory;",ACAzurealertBlock:"strokeColor=none;shape=mxgraph.azure.azure_alert;",ACAzureAutomationBlock:"strokeColor=none;shape=mxgraph.azure.automation;",ACAzureBatchBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_batch;",ACAzureRedisBlock:"strokeColor=none;shape=mxgraph.azure.azure_cache;",
ACAzureFilesBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_files_service;",ACAzureloadbalancerBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_automatic_load_balancer;",ACAzureMarketplaceBlock:"strokeColor=none;shape=mxgraph.azure.azure_marketplace;",ACAzureRightManagementRMSBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_rights_management_rms;",ACAzureSDKBlock:"strokeColor=none;shape=mxgraph.azure.azure_sdk;",ACAzureSearchBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_search;",
ACAzureSQLdatabaseBlock:"strokeColor=none;shape=mxgraph.azure.sql_database_sql_azure;",ACAzuresubscriptionBlock:"strokeColor=none;shape=mxgraph.azure.azure_subscription;",ACAzureWebsitesBlock:"strokeColor=none;shape=mxgraph.azure.azure_website;",ACBackupServiceBlock:"strokeColor=none;shape=mxgraph.azure.backup_service;",ACBitbucketcodesourceBlock:"strokeColor=none;shape=mxgraph.azure.bitbucket_code_source;",ACBizTalkServicesBlock:"strokeColor=none;shape=mxgraph.azure.biztalk_services;",ACCloudServiceBlock:"strokeColor=none;shape=mxgraph.azure.cloud_service;",
ACCodePlexBlock:"strokeColor=none;shape=mxgraph.azure.codeplex_code_source;",ACContentDeliveryNetworkBlock:"strokeColor=none;shape=mxgraph.azure.content_delivery_network;",ACDataFactoryBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.data_factory;",ACDocumentDBBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.documentdb;",ACDropboxcodesourceBlock:"strokeColor=none;shape=mxgraph.azure.dropbox_code_source;",ACEventsHubBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.event_hubs;",ACExpressRouteBlock:"strokeColor=none;shape=mxgraph.azure.express_route;",
ACGitHubBlock:"strokeColor=none;shape=mxgraph.azure.github_code;",ACGitrepositoryBlock:"strokeColor=none;shape=mxgraph.azure.git_repository;",ACHDInsightBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.hdinsight;",ACHealthmonitoringBlock:"strokeColor=none;shape=mxgraph.azure.health_monitoring;",ACHealthyBlock:"strokeColor=none;shape=mxgraph.azure.healthy;",ACHybridConnectionBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.hybrid_connections;",ACBizTalkhybridconnectionBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.hybrid_connection_manager;",
ACKeyVaultBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.key_vault;",ACLogicAppBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.logic_app;",ACMachineLearningBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.machine_learning;",ACMediaServicesBlock:"strokeColor=none;shape=mxgraph.azure.media_service;",ACMicrosoftaccountBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.microsoft_account;",ACMicrosoftAzureBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.microsoft_azure;",ACMobileEngagementBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.mobile_engagement;",
ACMobileServicesBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.mobile_app;",ACMultiFactorAuthBlock:"strokeColor=none;shape=mxgraph.azure.multi_factor_authentication;",ACMySQLdatabaseBlock:"strokeColor=none;shape=mxgraph.azure.mysql_database;",ACNotificationHubsBlock:"strokeColor=none;shape=mxgraph.azure.notification_hub;",ACNotificationtopicBlock:"strokeColor=none;shape=mxgraph.azure.notification_topic;",ACOperationalInsightsBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.operational_insights;",
ACOSimageBlock:"strokeColor=none;shape=mxgraph.azure.operating_system_image;",ACRemoteAppBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.remoteapp;",ACrpdRemotingfileBlock:"strokeColor=none;shape=mxgraph.azure.rdp_remoting_file;",ACSchedulerBlock:"strokeColor=none;shape=mxgraph.azure.scheduler;",ACServiceBusBlock:"strokeColor=none;shape=mxgraph.azure.service_bus;",ACServiceBusQueueBlock:"strokeColor=none;shape=mxgraph.azure.service_bus_queues;",ACServiceBusRelayBlock:"strokeColor=none;shape=mxgraph.azure.service_bus_relay;",
ACServiceBusTopicBlock:"strokeColor=none;shape=mxgraph.azure.service_bus_topics_and_subscriptions;",ACServiceEndpointBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.service_endpoint;",ACServicepackageBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.service_package;",ACSiteRecoveryBlock:"strokeColor=none;shape=mxgraph.azure.hyper_v_recovery_manager;",ACSQLdatabasegenericBlock:"strokeColor=none;shape=mxgraph.azure.sql_database;",ACSQLdatasyncBlock:"strokeColor=none;shape=mxgraph.azure.sql_datasync;",
ACSQLreportingdeprecatedBlock:"strokeColor=none;shape=mxgraph.azure.sql_reporting;",ACStartuptaskBlock:"strokeColor=none;shape=mxgraph.azure.startup_task;",ACStorageAzureBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_storage;",ACStorageblobBlock:"strokeColor=none;shape=mxgraph.azure.storage_blob;",ACStoragequeueBlock:"strokeColor=none;shape=mxgraph.azure.storage_queue;",ACStoragetableBlock:"strokeColor=none;shape=mxgraph.azure.storage_table;",ACStorSimpleBlock:"strokeColor=none;shape=mxgraph.azure.storsimple;",
ACStreamAnalyticsBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.stream_analytics;",ACTrafficManagerBlock:"strokeColor=none;shape=mxgraph.azure.traffic_manager;",ACAlienBlock:"strokeColor=none;shape=mxgraph.azure.unidentified_code_object;",ACVHDBlock:"strokeColor=none;shape=mxgraph.azure.vhd;",ACVHDdatadiskBlock:"strokeColor=none;shape=mxgraph.azure.vhd_data_disk;",ACVirtualmachineBlock:"strokeColor=none;shape=mxgraph.azure.virtual_machine;",ACVirtualmachinecontainerBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.virtual_machine_container;",
ACVirtualnetworkBlock:"strokeColor=none;shape=mxgraph.azure.virtual_network;",ACVisualStudioOnlineBlock:"strokeColor=none;shape=mxgraph.azure.visual_studio_online;",ACVMsymbolonlyBlock:"strokeColor=none;shape=mxgraph.azure.virtual_machine_feature;",ACWebJobsBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.webjobs;",ACWebroleBlock:"strokeColor=none;shape=mxgraph.azure.web_role;",ACWebrolesBlock:"strokeColor=none;shape=mxgraph.azure.web_roles;",ACWorkaccountBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.work_account;",
ACWorkerroleBlock:"strokeColor=none;shape=mxgraph.azure.worker_role;",ACWorkerrolesBlock:"strokeColor=none;shape=mxgraph.azure.worker_roles;",ADNSBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_dns;",ACLoadBalancerBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.azure_load_balancer_feature;",ACResourceGroupBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.resource_group;",ACVPNGatewayBlock:"strokeColor=none;shape=mxgraph.mscae.cloud.vpn_gateway;",AEActiveDirectoryFSPBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.d;",
AEADFSBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.ad_fs;",AEAndroidPhoneBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.android_phone;",AEappblankfortextBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.application_blank;",AEAppGenericBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.app_generic;",AEAppserverBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.application_server;",AEBackuplocalBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.backup_local;",AEBackuponlineBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.backup_online;",
AECalendarBlock:"strokeColor=none;shape=mxgraph.mscae.general.calendar;",AECertificateBlock:"strokeColor=none;shape=mxgraph.azure.certificate;",AEClientAppBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.client_application;",AECloudBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.internet;",AEClusterserverBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.cluster_server;",AECodefileBlock:"strokeColor=none;shape=mxgraph.azure.code_file;",AEConnectorsBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.connectors;",
AEDatabasegenericBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.database_generic;",AEDatabaseserverBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.database_server;",AEDatabasesyncBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.database_synchronization;",AEDeviceBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.device;",AEDirectaccessBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.direct_access_feature;",AEDocumentBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.document;",
AEDomaincontrollerBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.domain_controller;",AEEnterpriseBuildingBlock:"strokeColor=none;shape=mxgraph.azure.enterprise;",AEFilegeneralBlock:"strokeColor=none;shape=mxgraph.azure.file;",AEFilterBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.filter;",AEFirewallBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.firewall;",AEFolderBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.folder;",AEGatewayBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.gateway;",
AEGenericcodeBlock:"strokeColor=none;shape=mxgraph.azure.code_file;",AEGraphBlock:"strokeColor=none;shape=mxgraph.mscae.general.graph;",AEHealthmonitoringBlock:"strokeColor=none;shape=mxgraph.azure.health_monitoring;",AEHealthyBlock:"strokeColor=none;shape=mxgraph.azure.healthy;",AEImportgenericBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.import_generic;",AEInternetBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.internet;",AEKeyboardBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.keyboard;",
AEKeypermissionsBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.key_permissions;",AELaptopcomputerBlock:"strokeColor=none;shape=mxgraph.azure.laptop;",AELoadbalancerBlock:"strokeColor=none;shape=mxgraph.azure.load_balancer_generic;",AELoadTestingBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.load_testing;",AELockprotectedBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.lock;",AELockunprotectedBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.lock_unlocked;",AEMaintenanceBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.maintenance;",
AEManagementconsoleBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.management_console;",AEMessageBlock:"strokeColor=none;shape=mxgraph.azure.message;",AEMonitorBlock:"strokeColor=none;shape=mxgraph.azure.computer;",AEMonitorrunningappsBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.monitor_running_apps;",AEMouseBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.mouse;",AENetworkcardBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.network_card;",AENotallowedBlock:"strokeColor=none;shape=mxgraph.mscae.general.not_allowed;",
AEPerformanceBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.performance;",AEPerformancemonitorBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.performance_monitor;",AEPhoneBlock:"strokeColor=none;shape=mxgraph.azure.mobile;",AEPlugandplayBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.plug_and_play;",AEPowershellscriptfileBlock:"strokeColor=none;shape=mxgraph.azure.powershell_file;",AEProtocolstackBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.protocol_stack;",AEQueuegeneralBlock:"strokeColor=none;shape=mxgraph.azure.queue_generic;",
AERMSconnectorBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.rms_connector;",AERouterBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.router;",AEScriptfileBlock:"strokeColor=none;shape=mxgraph.azure.script_file;",AESecurevirtualmachineBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.secure_virtual_machine;",AEServerbladeBlock:"strokeColor=none;shape=mxgraph.azure.server;",AEServerdirectoryBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.server_directory;",AEServerfarmBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.server_farm;",
AEServergenericBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.server_generic;",AEServerrackBlock:"strokeColor=none;shape=mxgraph.azure.server_rack;",AESettingsBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.settings;",AESharedfolderBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.shared_folder;",AESmartcardBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.smartcard;",AEStorageBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.storage;",AETableBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.table;",
AETabletBlock:"strokeColor=none;shape=mxgraph.azure.tablet;",AEToolBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.tool;",AETunnelBlock:"strokeColor=none;shape=mxgraph.mscae.general.tunnel;",AEUnhealthyBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.unhealthy;",AEUSBBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.usb;",AEUserBlock:"strokeColor=none;shape=mxgraph.azure.user;",AEVideoBlock:"strokeColor=none;shape=mxgraph.mscae.general.video;",AEVirtualmachineBlock:"strokeColor=none;shape=mxgraph.azure.virtual_machine_feature;",
AEWebBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.web;",AEWebserverBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.web_server;",AEWindowsserverBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.windows_server;",AEWirelessconnectionBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.wireless_connection;",AEWorkstationclientBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.workstation_client;",AEXMLwebserviceBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.xml_web_service;",
AGSAudioBlock:"strokeColor=none;shape=mxgraph.mscae.general.audio;",AGSBugBlock:"strokeColor=none;shape=mxgraph.mscae.general.bug;",AGSCablesettopTVboxBlock:"strokeColor=none;shape=mxgraph.mscae.general.cable_settop_tv_box;",AGSCalendarBlock:"strokeColor=none;shape=mxgraph.mscae.general.calendar;",AGSChartBlock:"strokeColor=none;shape=mxgraph.mscae.general.chart;",AGSCheckmarkSuccessBlock:"strokeColor=none;shape=mxgraph.mscae.general.checkmark;",AGSContinousCycleCircleBlock:"strokeColor=none;shape=mxgraph.mscae.general.continuous_cycle;",
AGSCrossoutFailureBlock:"strokeColor=none;shape=mxgraph.mscae.general.crossout;",AGSCutandpasteBlock:"strokeColor=none;shape=mxgraph.mscae.general.cut_and_paste;",AGSFolderBlock:"strokeColor=none;shape=mxgraph.mscae.enterprise.folder;",AGSGamecontrollerBlock:"strokeColor=none;shape=mxgraph.mscae.general.game_controller;",AGSGearsBlock:"strokeColor=none;shape=mxgraph.mscae.general.gears;",AGSGraphBlock:"strokeColor=none;shape=mxgraph.mscae.general.graph;",AGSLikeBlock:"strokeColor=none;shape=mxgraph.mscae.general.like;",
AGSNotallowedBlock:"strokeColor=none;shape=mxgraph.mscae.general.not_allowed;",AGSSliderbarhorizontalBlock:"strokeColor=none;shape=mxgraph.mscae.general.slider_bar_horizontal;",AGSSliderbarvertBlock:"strokeColor=none;shape=mxgraph.mscae.general.slider_bar_vertical;",AGSTasklistorBacklogBlock:"strokeColor=none;shape=mxgraph.mscae.general.task_list;",AGSTasksBlock:"strokeColor=none;shape=mxgraph.mscae.general.tasks;",AGSTunnelBlock:"strokeColor=none;shape=mxgraph.mscae.general.tunnel;",AGSUserBlock:"strokeColor=none;shape=mxgraph.azure.user;",
AGSVideoBlock:"strokeColor=none;shape=mxgraph.mscae.general.video;",Cisco_cisco_androgenous_person:"shape=mxgraph.cisco.people.androgenous_person;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_atm_switch:"shape=mxgraph.cisco.switches.atm_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cloud:"shape=mxgraph.cisco.storage.cloud;strokeColor=#036897;fillColor=#ffffff;",Cisco_cisco_fileserver:"shape=mxgraph.cisco.servers.fileserver;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_firewall:"shape=mxgraph.cisco.security.firewall;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_generic_building:"shape=mxgraph.cisco.buildings.generic_building;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_laptop:"shape=mxgraph.cisco.computers_and_peripherals.laptop;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_lock:"shape=mxgraph.cisco.security.lock;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_microwebserver:"shape=mxgraph.cisco.servers.microwebserver;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_pc:"shape=mxgraph.cisco.computers_and_peripherals.pc;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_pda:"shape=mxgraph.cisco.misc.pda;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_phone:"shape=mxgraph.cisco.modems_and_phones.hootphone;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_printer:"shape=mxgraph.cisco.computers_and_peripherals.printer;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_relational_database:"shape=mxgraph.cisco.storage.relational_database;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_router:"shape=mxgraph.cisco.routers.router;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_standing_man:"shape=mxgraph.cisco.people.standing_man;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_standing_woman:"shape=mxgraph.cisco.people.standing_woman;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ups:"shape=mxgraph.cisco.misc.ups;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_wireless_router:"shape=mxgraph.cisco.routers.wireless_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_100baset_hub:"shape=mxgraph.cisco.hubs_and_gateways.100baset_hub;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_10700:"shape=mxgraph.cisco.routers.10700;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_10GE_FCoE:"shape=mxgraph.cisco.controllers_and_modules.10ge_fcoe;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_15200:"shape=mxgraph.cisco.misc.15200;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_3174__desktop_:"shape=mxgraph.cisco.controllers_and_modules.3174_(desktop)_cluster_controller;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_3200_mobile_access_router:"shape=mxgraph.cisco.routers.mobile_access_router;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_3x74__floor_:"shape=mxgraph.cisco.controllers_and_modules.3x74_(floor)_cluster_controller;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_6700_series:"shape=mxgraph.cisco.misc.6700_series;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_7500ars__7513_:"shape=mxgraph.cisco.misc.7500ars_(7513);fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_accesspoint:"shape=mxgraph.cisco.misc.access_point;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ace:"shape=mxgraph.cisco.misc.ace;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_ACS:"shape=mxgraph.cisco.misc.acs;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_adm:"shape=mxgraph.cisco.misc.adm;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_antenna:"shape=mxgraph.cisco.wireless.antenna;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_asic_processor:"shape=mxgraph.cisco.misc.asic_processor;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ASR_1000_Series:"shape=mxgraph.cisco.misc.asr_1000_series;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ata:"shape=mxgraph.cisco.misc.ata;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_atm_3800:"shape=mxgraph.cisco.misc.atm_3800;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_atm_fast_gigabit_etherswitch:"shape=mxgraph.cisco.switches.atm_fast_gigabit_etherswitch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_atm_router:"shape=mxgraph.cisco.routers.atm_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_atm_tag_switch_router:"shape=mxgraph.cisco.routers.atm_tag_switch_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_avs:"shape=mxgraph.cisco.misc.avs;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_AXP:"shape=mxgraph.cisco.misc.axp;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_bbsm:"shape=mxgraph.cisco.misc.bbsm;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_branch_office:"shape=mxgraph.cisco.buildings.branch_office;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_breakout_box:"shape=mxgraph.cisco.misc.breakout_box;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_bridge:"shape=mxgraph.cisco.misc.bridge;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_broadband_router:"shape=mxgraph.cisco.routers.broadcast_router;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_bts_10200:"shape=mxgraph.cisco.misc.bts_10200;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cable_modem:"shape=mxgraph.cisco.modems_and_phones.cable_modem;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_callmanager:"shape=mxgraph.cisco.misc.call_manager;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_car:"shape=mxgraph.cisco.misc.car;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_carrier_routing_system:"shape=mxgraph.cisco.misc.carrier_routing_system;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_cddi_fddi:"shape=mxgraph.cisco.misc.cddi_fddi;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cdm:"shape=mxgraph.cisco.misc.cdm;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cellular_phone:"shape=mxgraph.cisco.modems_and_phones.cell_phone;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_centri_firewall:"shape=mxgraph.cisco.security.centri_firewall;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_1000:"shape=mxgraph.cisco.misc.cisco_1000;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_cisco_asa_5500:"shape=mxgraph.cisco.misc.asa_5500;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_ca:"shape=mxgraph.cisco.misc.cisco_ca;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_file_engine:"shape=mxgraph.cisco.storage.cisco_file_engine;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_hub:"shape=mxgraph.cisco.hubs_and_gateways.cisco_hub;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ciscosecurity:"shape=mxgraph.cisco.security.cisco_security;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_cisco_unified_presence_server:"shape=mxgraph.cisco.servers.cisco_unified_presence_server;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cisco_unityexpress:"shape=mxgraph.cisco.misc.cisco_unity_express;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ciscoworks:"shape=mxgraph.cisco.misc.cisco_works;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_class_4_5_switch:"shape=mxgraph.cisco.switches.class_4_5_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_communications_server:"shape=mxgraph.cisco.servers.communications_server;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_contact_center:"shape=mxgraph.cisco.misc.contact_center;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_content_engine__cache_director_:"shape=mxgraph.cisco.directors.content_engine_(cache_director);fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_content_service_router:"shape=mxgraph.cisco.routers.content_service_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_content_service_switch_1100:"shape=mxgraph.cisco.switches.content_service_switch_1100;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_content_switch_module:"shape=mxgraph.cisco.controllers_and_modules.content_switch_module;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_content_switch:"shape=mxgraph.cisco.switches.content_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_content_transformation_engine__cte_:"shape=mxgraph.cisco.misc.content_transformation_engine_(cte);fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_cs_mars:"shape=mxgraph.cisco.misc.cs-mars;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_csm_s:"shape=mxgraph.cisco.misc.csm-s;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_csu_dsu:"shape=mxgraph.cisco.misc.csu_dsu;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_CUBE:"shape=mxgraph.cisco.misc.cube;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_detector:"shape=mxgraph.cisco.misc.detector;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_director_class_fibre_channel_director:"shape=mxgraph.cisco.directors.director-class_fibre_channel_director;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_directory_server:"shape=mxgraph.cisco.servers.directory_server;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_diskette:"shape=mxgraph.cisco.storage.diskette;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_distributed_director:"shape=mxgraph.cisco.directors.distributed_director;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_dot_dot:"shape=mxgraph.cisco.misc.dot-dot;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_dpt:"shape=mxgraph.cisco.misc.dpt;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_dslam:"shape=mxgraph.cisco.misc.dslam;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_dual_mode_ap:"shape=mxgraph.cisco.misc.dual_mode;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_dwdm_filter:"shape=mxgraph.cisco.misc.dwdm_filter;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_end_office:"shape=mxgraph.cisco.buildings.end_office;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_fax:"shape=mxgraph.cisco.modems_and_phones.fax;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_fc_storage:"shape=mxgraph.cisco.storage.fc_storage;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_fddi_ring:"shape=mxgraph.cisco.misc.fddi_ring;strokeColor=#036897;",Cisco_cisco_fibre_channel_disk_subsystem:"shape=mxgraph.cisco.storage.fibre_channel_disk_subsystem;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_fibre_channel_fabric_switch:"shape=mxgraph.cisco.switches.fibre_channel_fabric_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_file_cabinet:"shape=mxgraph.cisco.storage.file_cabinet;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_file_server:"shape=mxgraph.cisco.servers.file_server;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_firewall_service_module__fwsm_:"shape=mxgraph.cisco.controllers_and_modules.firewall_service_module_(fwsm);fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_front_end_processor:"shape=mxgraph.cisco.misc.front_end_processor;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_gatekeeper:"shape=mxgraph.cisco.security.gatekeeper;strokeColor=#036897;",Cisco_cisco_general_applicance:"shape=mxgraph.cisco.misc.general_appliance;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_generic_gateway:"shape=mxgraph.cisco.hubs_and_gateways.generic_gateway;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_generic_processor:"shape=mxgraph.cisco.misc.generic_processor;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_generic_softswitch:"shape=mxgraph.cisco.switches.generic_softswitch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_gigabit_switch_atm_tag_router:"shape=mxgraph.cisco.routers.gigabit_switch_atm_tag_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_government_building:"shape=mxgraph.cisco.buildings.government_building;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_Ground_terminal:"shape=mxgraph.cisco.wireless.ground_terminal;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_guard:"shape=mxgraph.cisco.security.guard;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_handheld:"shape=mxgraph.cisco.misc.handheld;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_hootphone:"shape=mxgraph.cisco.modems_and_phones.hootphone;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_host:"shape=mxgraph.cisco.servers.host;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_hp_mini:"shape=mxgraph.cisco.misc.hp_mini;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_h:"shape=mxgraph.cisco.misc.h_323;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_hub:"shape=mxgraph.cisco.hubs_and_gateways.hub;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_iad_router:"shape=mxgraph.cisco.routers.iad_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ibm_mainframe:"shape=mxgraph.cisco.computers_and_peripherals.ibm_mainframe;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ibm_mini_as400:"shape=mxgraph.cisco.computers_and_peripherals.ibm_mini_as400;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ibm_tower:"shape=mxgraph.cisco.computers_and_peripherals.ibm_tower;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_icm:"shape=mxgraph.cisco.misc.icm;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_ics:"shape=mxgraph.cisco.misc.ics;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_intelliswitch_stack:"shape=mxgraph.cisco.switches.intelliswitch_stack;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ios_firewall:"shape=mxgraph.cisco.security.ios_firewall;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ios_slb:"shape=mxgraph.cisco.misc.ios_slb;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ip_communicator:"shape=mxgraph.cisco.misc.ip_communicator;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_ip_dsl:"shape=mxgraph.cisco.misc.ip_dsl;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ip_phone:"shape=mxgraph.cisco.modems_and_phones.ip_phone;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ip:"shape=mxgraph.cisco.misc.ip;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_iptc:"shape=mxgraph.cisco.misc.iptc;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_ip_telephony_router:"shape=mxgraph.cisco.routers.ip_telephony_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_iptv_content_manager:"shape=mxgraph.cisco.misc.iptv_content_manager;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_iptv_server:"shape=mxgraph.cisco.servers.iptv_server;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_iscsi_router:"shape=mxgraph.cisco.routers.isci_router;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_isdn_switch:"shape=mxgraph.cisco.switches.isdn_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_itp:"shape=mxgraph.cisco.misc.itp;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_jbod:"shape=mxgraph.cisco.misc.jbod;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_key:"shape=mxgraph.cisco.misc.key;fillColor=#036897;strokeColor=#ffffff;",
Cisco_cisco_keys:"shape=mxgraph.cisco.misc.keys;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_lan_to_lan:"shape=mxgraph.cisco.misc.lan_to_lan;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_layer_2_remote_switch:"shape=mxgraph.cisco.switches.layer_2_remote_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_layer_3_switch:"shape=mxgraph.cisco.switches.layer_3_switch;fillColor=#036897;strokeColor=#ffffff;",Cisco_cisco_lightweight_ap:"shape=mxgraph.cisco.misc.lightweight_ap;fillColor=#036897;strokeColor=#ffffff;",
@ -190,22 +196,23 @@ PEFanBlades2Block:"shape=mxgraph.pid2misc.fan;fanType=common;",PECentrifugalPump
PEScrewPump:"shape=mxgraph.pid.pumps.screw_pump;",PEScrewPump2:"shape=mxgraph.pid.pumps.screw_pump_2;flipH=1;",PESumpPump:"shape=mxgraph.pid.pumps.sump_pump;",PEVacuumPump:"shape=mxgraph.pid.pumps.vacuum_pump;",PEVerticalPump:"shape=mxgraph.pid.pumps.vertical_pump;",PEVerticalPump2:"shape=mxgraph.pid.pumps.vertical_pump;",PEIndicatorBlock:"shape=mxgraph.pid2inst.discInst;mounting=room;",PEIndicator2Block:"shape=mxgraph.pid2inst.indicator;mounting=room;indType=inst;",PEIndicator3Block:"shape=mxgraph.pid2inst.discInst;mounting=field;",
PEIndicator4Block:"shape=mxgraph.pid2inst.indicator;mounting=field;indType=inst;",PESharedIndicatorBlock:"shape=mxgraph.pid2inst.sharedCont;mounting=room;",PESharedIndicator2Block:"shape=mxgraph.pid2inst.indicator;mounting=room;indType=ctrl;",PEProgrammableIndicatorBlock:"shape=mxgraph.pid2inst.progLogCont;mounting=room;",PEGateValveBlock:"shape=mxgraph.pid2valves.valve;valveType=gate;",PEGlobeValveBlock:"shape=mxgraph.pid2valves.valve;valveType=globe;",PEControlValveBlock:"shape=mxgraph.pid2valves.valve;valveType=gate;actuator=diaph;",
PENeedleValveBlock:"shape=mxgraph.pid2valves.valve;valveType=needle;",PEButterflyValve2Block:"shape=mxgraph.pid2valves.valve;valveType=butterfly;",PEDiaphragmBlock:"shape=mxgraph.pid2valves.valve;valveType=ball;",PECheckValveBlock:"shape=mxgraph.pid2valves.valve;valveType=check;",PECheckValve2Block:"shape=mxgraph.pid2valves.valve;valveType=check;",PEAngleValveBlock:"shape=mxgraph.pid2valves.valve;valveType=angle;actuator=none;",PEAngleGlobeValveBlock:"shape=mxgraph.pid2valves.valve;valveType=angleGlobe;actuator=man;flipH=1;",
PEPoweredValveBlock:"shape=mxgraph.pid2valves.valve;valveType=gate;actuator=digital;",PEFloatOperatedValveBlock:"shape=mxgraph.pid2valves.valve;valveType=gate;actuator=singActing;",PEThreeWayValveBlock:"shape=mxgraph.pid2valves.valve;valveType=threeWay;actuator=none;",PEBleederValveBlock:"shape=mxgraph.pid2valves.blockBleedValve;actuator=none;",PERotameterBlock:"shape=mxgraph.pid.flow_sensors.rotameter;flipH=1;",VennGradientColor1:"shape=ellipse;",VennGradientColor2:"shape=ellipse;",VennGradientColor3:"shape=ellipse;",
VennGradientColor4:"shape=ellipse;",VennGradientColor5:"shape=ellipse;",VennGradientColor6:"shape=ellipse;",VennGradientColor7:"shape=ellipse;",VennGradientColor8:"shape=ellipse;",VennPlainColor1:"shape=ellipse;",VennPlainColor2:"shape=ellipse;",VennPlainColor3:"shape=ellipse;",VennPlainColor4:"shape=ellipse;",VennPlainColor5:"shape=ellipse;",VennPlainColor6:"shape=ellipse;",VennPlainColor7:"shape=ellipse;",VennPlainColor8:"shape=ellipse;",iOS7DeviceiPhone5Portrait:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",
iOS7DeviceiPhone5Landscape:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",iOS7DeviceiPadPortrait:"shape=mxgraph.ios.iPad;bgStyle=bgGreen;",iOS7DeviceiPadLandscape:"shape=mxgraph.ios.iPad;bgStyle=bgGreen;",iOS7DeviceiPhone6Portrait:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",iOS7DeviceiPhone6Landscape:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",iOS7DeviceiPhone6PlusPortrait:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",iOS7DeviceiPhone6PlusLandscape:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",iOS7StatusBariPhone:"shape=mxgraph.ios7ui.appBar;",
iOS7iPhoneKeyboard:"shape=mxgraph.ios7.misc.keyboard_(letters);",iOS7StatusBariPad:"shape=mxgraph.ios7ui.appBar;",iOS7iPadKeyboard:"shape=mxgraph.ios7.misc.keyboard_(letters);",iOS7ProgressBar:"shape=mxgraph.ios7ui.downloadBar;",iOS7Slider:"shape=mxgraph.ios7ui.searchBox;",iOS7SearchBar:"shape=mxgraph.ios7ui.searchBox;",iOS7Button:"shape=rect;",iOS7TextField:"shape=rect;",iOS7TextView:"shape=rect;",iOS7Toggle:"shape=mxgraph.ios7ui.onOffButton;buttonState=on;strokeColor=#38D145;strokeColor2=#aaaaaa;fillColor=#38D145;fillColor2=#ffffff;",
iOS7Stepper:"shape=mxgraph.ios7.misc.adjust;fillColor=#ffffff;gradientColor=none;",iOS7PageControls:"shape=mxgraph.ios7ui.pageControl;fillColor=#666666;strokeColor=#bbbbbb;",iOS7Block:"shape=rect;","iOS7IconArrow left":"shape=mxgraph.ios7.misc.left;",iOS7IconArrow:"shape=mxgraph.ios7.misc.right;","iOS7IconArrow up":"shape=mxgraph.ios7.misc.up;","iOS7IconArrow down":"shape=mxgraph.ios7.misc.down;",iOS7IconWifi:"shape=mxgraph.ios7.icons.wifi;",iOS7IconBluetooth:"shape=mxgraph.ios7.icons.bluetooth;",
iOS7IconBattery:"shape=mxgraph.ios7.icons.battery;",iOS7IconSiri:"shape=mxgraph.ios7.icons.microphone;",iOS7IconCheck:"shape=mxgraph.ios7.icons.select;",iOS7IconCreate:"shape=mxgraph.ios7.icons.add;",iOS7IconInfo:"shape=mxgraph.ios7.icons.info;",iOS7IconLocation:"shape=mxgraph.ios7.icons.location_2;",iOS7IconQuestion:"shape=mxgraph.ios7.icons.help;",iOS7IconSearch:"shape=mxgraph.ios7.icons.looking_glass;",iOS7IconToolbox:"shape=mxgraph.ios7.icons.briefcase;",iOS7IconOptions:"shape=mxgraph.ios7.icons.options;",
iOS7IconShare:"shape=mxgraph.ios7.icons.share;",iOS7IconTyping:"shape=mxgraph.ios7.icons.message;",iOS7IconCopy:"shape=mxgraph.ios7.icons.folders_2;",iOS7IconChat:"shape=mxgraph.ios7.icons.messages;",iOS7IconOrganize:"shape=mxgraph.ios7.icons.folder;",iOS7IconTrash:"shape=mxgraph.ios7.icons.trashcan;",iOS7IconReply:"shape=mxgraph.ios7.icons.back;",iOS7IconArchive:"shape=mxgraph.ios7.icons.box;",iOS7IconCompose:"shape=mxgraph.ios7.icons.compose;",iOS7IconSend:"shape=mxgraph.ios7.icons.pointer;",iOS7IconDrawer:"shape=mxgraph.ios7.icons.storage;",
iOS7IconMail:"shape=mxgraph.ios7.icons.mail;",iOS7IconDocument:"shape=mxgraph.ios7.icons.document;",iOS7IconFlag:"shape=mxgraph.ios7.icons.flag;",iOS7IconBookmarks:"shape=mxgraph.ios7.icons.book;",iOS7IconGlasses:"shape=mxgraph.ios7.icons.glasses;",iOS7IconFiles:"shape=mxgraph.ios7.icons.folders;",iOS7IconDownloads:"shape=mxgraph.ios7.icons.down;",iOS7IconLock:"shape=mxgraph.ios7.icons.locked;",iOS7IconCloud:"shape=mxgraph.ios7.icons.cloud;","iOS7IconOrientation Lock":"shape=mxgraph.ios7.icons.orientation_lock;",
iOS7IconContacts:"shape=mxgraph.ios7.icons.user;",iOS7IconGlobal:"shape=mxgraph.ios7.icons.globe;",iOS7IconSettings:"shape=mxgraph.ios7.icons.settings;",iOS7IconAirplay:"shape=mxgraph.ios7.icons.move_to_folder;",iOS7IconCamera:"shape=mxgraph.ios7.icons.camera;",iOS7IconAirplane:"shape=mxgraph.signs.transportation.airplane_6;direction=south;",iOS7IconCalculator:"shape=mxgraph.ios7.icons.calculator;",iOS7IconPreferences:"shape=mxgraph.ios7.icons.most_viewed;",iOS7IconPhone:"shape=mxgraph.signs.tech.telephone_3;",
iOS7IconKeypad:"shape=mxgraph.ios7.icons.keypad;",iOS7IconVoicemail:"shape=mxgraph.ios7.icons.tape;",iOS7IconStar:"shape=mxgraph.ios7.icons.star;","iOS7IconMost Viewed":"shape=mxgraph.ios7.icons.most_viewed;",iOS7IconVideo:"shape=mxgraph.ios7.icons.video_conversation;","iOS7IconVolumne Controls":"shape=mxgraph.ios7.icons.volume;","iOS7IconLocation pin":"shape=mxgraph.ios7.icons.location;",iOS7IconCalendar:"shape=mxgraph.ios7.icons.calendar;",iOS7IconAlarm:"shape=mxgraph.ios7.icons.alarm_clock;",iOS7IconClock:"shape=mxgraph.ios7.icons.clock;",
iOS7IconTimer:"shape=mxgraph.ios7.icons.gauge;","iOS7IconVolume down":"shape=mxgraph.ios7.icons.silent;",iOS7IconVolume:"shape=mxgraph.ios7.icons.volume_2;","iOS7IconVolume up":"shape=mxgraph.ios7.icons.loud;",iOS7IconRepeat:"shape=mxgraph.ios7.icons.reload;",iOS7IconRewind:"shape=mxgraph.ios7.icons.backward;",iOS7IconPlay:"shape=mxgraph.ios7.icons.play;",iOS7IconPause:"shape=mxgraph.ios7.icons.pause;","iOS7IconFast forward":"shape=mxgraph.ios7.icons.forward;",iOS7IconControls:"shape=mxgraph.ios7.icons.controls;",
iOS7IconPrivacy:"shape=mxgraph.ios7.icons.privacy;",iOS7IconLink:"shape=mxgraph.ios7.icons.link;",iOS7IconLight:"shape=mxgraph.ios7.icons.flashlight;",iOS7IconBrightness:"shape=mxgraph.ios7.icons.sun;",iOS7IconHeart:"shape=mxgraph.ios7.icons.heart;",iOS7IconJava:"shape=mxgraph.ios7.icons.cup;",iOS7IconBox:"shape=mxgraph.ios7.icons.bag;",iOS7IconEye:"shape=mxgraph.ios7.icons.eye;","iOS7IconDo not disturb":"shape=mxgraph.ios7.icons.moon;",UI2BrowserBlock:"shape=mxgraph.mockup.containers.browserWindow;mainText=,;",
UI2WindowBlock:"shape=mxgraph.mockup.containers.window;strokeColor2=#008cff;strokeColor3=#c4c4c4;fontColor=#666666;mainText=;",UI2AreaBlock:"shape=rect;",UI2ElementBlock:"shape=rect;",UI2VScrollBlock:"shape=mxgraph.mockup.navigation.scrollBar;direction=north;",UI2HScrollBlock:"shape=mxgraph.mockup.navigation.scrollBar;",UI2VerticalSplitterBlock:"shape=mxgraph.mockup.forms.splitter;direction=north;",UI2HorizontalSplitterBlock:"shape=mxgraph.mockup.forms.splitter;",UI2ImageBlock:"shape=mxgraph.mockup.graphics.simpleIcon;",
UI2VideoBlock:"shape=mxgraph.mockup.containers.videoPlayer;barHeight=30;",UI2AudioBlock:"shape=mxgraph.mockup.misc.playbackControls;",UI2MapBlock:"shape=mxgraph.mockup.misc.map;",UI2BarChartBlock:"shape=mxgraph.mockup.graphics.barChart;strokeColor=none;strokeColor2=none;",UI2ColumnChartBlock:"shape=mxgraph.mockup.graphics.columnChart;strokeColor=none;strokeColor2=none;",UI2LineChartBlock:"shape=mxgraph.mockup.graphics.lineChart;strokeColor=none;",UI2PieChartBlock:"shape=mxgraph.mockup.graphics.pieChart;parts=10,20,35;",
UI2WebcamBlock:"shape=mxgraph.mockup.containers.userMale;",UI2CaptchaBlock:"shape=mxgraph.mockup.text.captcha;mainText=;",UI2ButtonBlock:"shape=rect;rounded=1;",UI2ColorPickerBlock:"shape=mxgraph.mockup.forms.colorPicker;chosenColor=#aaddff;",UI2TextInputBlock:"shape=rect;rounded=1;",UI2SelectBlock:"shape=mxgraph.mockup.forms.comboBox;strokeColor=#999999;fillColor=#ddeeff;align=left;fillColor2=#aaddff;mainText=;fontColor=#666666;",UI2VSliderBlock:"shape=mxgraph.mockup.forms.horSlider;sliderStyle=basic;sliderPos=20;handleStyle=circle;direction=north;",
UI2HSliderBlock:"shape=mxgraph.mockup.forms.horSlider;sliderStyle=basic;sliderPos=20;handleStyle=circle;",UI2SearchBlock:"shape=mxgraph.mockup.forms.searchBox;mainText=;flipH=1;",UI2NumericStepperBlock:"shape=mxgraph.mockup.forms.spinner;spinLayout=right;spinStyle=normal;adjStyle=triangle;fillColor=#000000;mainText=;",UI2AtoZBlock:"shape=mxgraph.mockup.text.alphanumeric;linkText=;fontStyle=4;",UI2PaginationBlock:"shape=mxgraph.mockup.navigation.pagination;linkText=;fontStyle=4;",UI2PlaybackControlsBlock:"shape=mxgraph.mockup.misc.playbackControls;fillColor=#ffffff;strokeColor=#999999;fillColor2=#99ddff;strokeColor2=none;fillColor3=#ffffff;strokeColor3=none;",
PEPoweredValveBlock:"shape=mxgraph.pid2valves.valve;valveType=gate;actuator=digital;",PEFloatOperatedValveBlock:"shape=mxgraph.pid2valves.valve;valveType=gate;actuator=singActing;",PEThreeWayValveBlock:"shape=mxgraph.pid2valves.valve;valveType=threeWay;actuator=none;",PEBleederValveBlock:"shape=mxgraph.pid2valves.blockBleedValve;actuator=none;",PERotameterBlock:"shape=mxgraph.pid.flow_sensors.rotameter;flipH=1;",VennGradientColor1:"shape=ellipse;strokeColor=#49c1a1;fillOpacity=35;",VennGradientColor2:"shape=ellipse;strokeColor=#7769e0;fillOpacity=35;",
VennGradientColor3:"shape=ellipse;strokeColor=#efd95d;fillOpacity=35;",VennGradientColor4:"shape=ellipse;strokeColor=#e24adb;fillOpacity=35;",VennGradientColor5:"shape=ellipse;strokeColor=#e55050;fillOpacity=35;",VennGradientColor6:"shape=ellipse;strokeColor=#f49769;fillOpacity=35;",VennGradientColor7:"shape=ellipse;strokeColor=#7ae266;fillOpacity=35;",VennGradientColor8:"shape=ellipse;strokeColor=#47b0e5;fillOpacity=35;",VennPlainColor1:"shape=ellipse;strokeColor=#49c1a1;fillOpacity=35;",VennPlainColor2:"shape=ellipse;strokeColor=#7769e0;fillOpacity=35;",
VennPlainColor3:"shape=ellipse;strokeColor=#efd95d;fillOpacity=35;",VennPlainColor4:"shape=ellipse;strokeColor=#e24adb;fillOpacity=35;",VennPlainColor5:"shape=ellipse;strokeColor=#e55050;fillOpacity=35;",VennPlainColor6:"shape=ellipse;strokeColor=#f49769;fillOpacity=35;",VennPlainColor7:"shape=ellipse;strokeColor=#7ae266;fillOpacity=35;",VennPlainColor8:"shape=ellipse;strokeColor=#47b0e5;fillOpacity=35;",iOS7DeviceiPhone5Portrait:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",iOS7DeviceiPhone5Landscape:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",
iOS7DeviceiPadPortrait:"shape=mxgraph.ios.iPad;bgStyle=bgGreen;",iOS7DeviceiPadLandscape:"shape=mxgraph.ios.iPad;bgStyle=bgGreen;",iOS7DeviceiPhone6Portrait:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",iOS7DeviceiPhone6Landscape:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",iOS7DeviceiPhone6PlusPortrait:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",iOS7DeviceiPhone6PlusLandscape:"shape=mxgraph.ios.iPhone;bgStyle=bgGreen;",iOS7StatusBariPhone:"shape=mxgraph.ios7ui.appBar;",iOS7iPhoneKeyboard:"shape=mxgraph.ios7.misc.keyboard_(letters);",
iOS7StatusBariPad:"shape=mxgraph.ios7ui.appBar;",iOS7iPadKeyboard:"shape=mxgraph.ios7.misc.keyboard_(letters);",iOS7ProgressBar:"shape=mxgraph.ios7ui.downloadBar;",iOS7Slider:"shape=mxgraph.ios7ui.searchBox;",iOS7SearchBar:"shape=mxgraph.ios7ui.searchBox;",iOS7Button:"shape=rect;",iOS7TextField:"shape=rect;",iOS7TextView:"shape=rect;",iOS7Toggle:"shape=mxgraph.ios7ui.onOffButton;buttonState=on;strokeColor=#38D145;strokeColor2=#aaaaaa;fillColor=#38D145;fillColor2=#ffffff;",iOS7Stepper:"shape=mxgraph.ios7.misc.adjust;fillColor=#ffffff;gradientColor=none;",
iOS7PageControls:"shape=mxgraph.ios7ui.pageControl;fillColor=#666666;strokeColor=#bbbbbb;",iOS7Block:"shape=rect;","iOS7IconArrow left":"shape=mxgraph.ios7.misc.left;",iOS7IconArrow:"shape=mxgraph.ios7.misc.right;","iOS7IconArrow up":"shape=mxgraph.ios7.misc.up;","iOS7IconArrow down":"shape=mxgraph.ios7.misc.down;",iOS7IconWifi:"shape=mxgraph.ios7.icons.wifi;",iOS7IconBluetooth:"shape=mxgraph.ios7.icons.bluetooth;",iOS7IconBattery:"shape=mxgraph.ios7.icons.battery;",iOS7IconSiri:"shape=mxgraph.ios7.icons.microphone;",
iOS7IconCheck:"shape=mxgraph.ios7.icons.select;",iOS7IconCreate:"shape=mxgraph.ios7.icons.add;",iOS7IconInfo:"shape=mxgraph.ios7.icons.info;",iOS7IconLocation:"shape=mxgraph.ios7.icons.location_2;",iOS7IconQuestion:"shape=mxgraph.ios7.icons.help;",iOS7IconSearch:"shape=mxgraph.ios7.icons.looking_glass;",iOS7IconToolbox:"shape=mxgraph.ios7.icons.briefcase;",iOS7IconOptions:"shape=mxgraph.ios7.icons.options;",iOS7IconShare:"shape=mxgraph.ios7.icons.share;",iOS7IconTyping:"shape=mxgraph.ios7.icons.message;",
iOS7IconCopy:"shape=mxgraph.ios7.icons.folders_2;",iOS7IconChat:"shape=mxgraph.ios7.icons.messages;",iOS7IconOrganize:"shape=mxgraph.ios7.icons.folder;",iOS7IconTrash:"shape=mxgraph.ios7.icons.trashcan;",iOS7IconReply:"shape=mxgraph.ios7.icons.back;",iOS7IconArchive:"shape=mxgraph.ios7.icons.box;",iOS7IconCompose:"shape=mxgraph.ios7.icons.compose;",iOS7IconSend:"shape=mxgraph.ios7.icons.pointer;",iOS7IconDrawer:"shape=mxgraph.ios7.icons.storage;",iOS7IconMail:"shape=mxgraph.ios7.icons.mail;",iOS7IconDocument:"shape=mxgraph.ios7.icons.document;",
iOS7IconFlag:"shape=mxgraph.ios7.icons.flag;",iOS7IconBookmarks:"shape=mxgraph.ios7.icons.book;",iOS7IconGlasses:"shape=mxgraph.ios7.icons.glasses;",iOS7IconFiles:"shape=mxgraph.ios7.icons.folders;",iOS7IconDownloads:"shape=mxgraph.ios7.icons.down;",iOS7IconLock:"shape=mxgraph.ios7.icons.locked;",iOS7IconCloud:"shape=mxgraph.ios7.icons.cloud;","iOS7IconOrientation Lock":"shape=mxgraph.ios7.icons.orientation_lock;",iOS7IconContacts:"shape=mxgraph.ios7.icons.user;",iOS7IconGlobal:"shape=mxgraph.ios7.icons.globe;",
iOS7IconSettings:"shape=mxgraph.ios7.icons.settings;",iOS7IconAirplay:"shape=mxgraph.ios7.icons.move_to_folder;",iOS7IconCamera:"shape=mxgraph.ios7.icons.camera;",iOS7IconAirplane:"shape=mxgraph.signs.transportation.airplane_6;direction=south;",iOS7IconCalculator:"shape=mxgraph.ios7.icons.calculator;",iOS7IconPreferences:"shape=mxgraph.ios7.icons.most_viewed;",iOS7IconPhone:"shape=mxgraph.signs.tech.telephone_3;",iOS7IconKeypad:"shape=mxgraph.ios7.icons.keypad;",iOS7IconVoicemail:"shape=mxgraph.ios7.icons.tape;",
iOS7IconStar:"shape=mxgraph.ios7.icons.star;","iOS7IconMost Viewed":"shape=mxgraph.ios7.icons.most_viewed;",iOS7IconVideo:"shape=mxgraph.ios7.icons.video_conversation;","iOS7IconVolumne Controls":"shape=mxgraph.ios7.icons.volume;","iOS7IconLocation pin":"shape=mxgraph.ios7.icons.location;",iOS7IconCalendar:"shape=mxgraph.ios7.icons.calendar;",iOS7IconAlarm:"shape=mxgraph.ios7.icons.alarm_clock;",iOS7IconClock:"shape=mxgraph.ios7.icons.clock;",iOS7IconTimer:"shape=mxgraph.ios7.icons.gauge;","iOS7IconVolume down":"shape=mxgraph.ios7.icons.silent;",
iOS7IconVolume:"shape=mxgraph.ios7.icons.volume_2;","iOS7IconVolume up":"shape=mxgraph.ios7.icons.loud;",iOS7IconRepeat:"shape=mxgraph.ios7.icons.reload;",iOS7IconRewind:"shape=mxgraph.ios7.icons.backward;",iOS7IconPlay:"shape=mxgraph.ios7.icons.play;",iOS7IconPause:"shape=mxgraph.ios7.icons.pause;","iOS7IconFast forward":"shape=mxgraph.ios7.icons.forward;",iOS7IconControls:"shape=mxgraph.ios7.icons.controls;",iOS7IconPrivacy:"shape=mxgraph.ios7.icons.privacy;",iOS7IconLink:"shape=mxgraph.ios7.icons.link;",
iOS7IconLight:"shape=mxgraph.ios7.icons.flashlight;",iOS7IconBrightness:"shape=mxgraph.ios7.icons.sun;",iOS7IconHeart:"shape=mxgraph.ios7.icons.heart;",iOS7IconJava:"shape=mxgraph.ios7.icons.cup;",iOS7IconBox:"shape=mxgraph.ios7.icons.bag;",iOS7IconEye:"shape=mxgraph.ios7.icons.eye;","iOS7IconDo not disturb":"shape=mxgraph.ios7.icons.moon;",UI2BrowserBlock:"shape=mxgraph.mockup.containers.browserWindow;mainText=,;",UI2WindowBlock:"shape=mxgraph.mockup.containers.window;strokeColor2=#008cff;strokeColor3=#c4c4c4;fontColor=#666666;mainText=;",
UI2AreaBlock:"shape=rect;",UI2ElementBlock:"shape=rect;",UI2VScrollBlock:"shape=mxgraph.mockup.navigation.scrollBar;direction=north;",UI2HScrollBlock:"shape=mxgraph.mockup.navigation.scrollBar;",UI2VerticalSplitterBlock:"shape=mxgraph.mockup.forms.splitter;direction=north;",UI2HorizontalSplitterBlock:"shape=mxgraph.mockup.forms.splitter;",UI2ImageBlock:"shape=mxgraph.mockup.graphics.simpleIcon;",UI2VideoBlock:"shape=mxgraph.mockup.containers.videoPlayer;barHeight=30;",UI2AudioBlock:"shape=mxgraph.mockup.misc.playbackControls;",
UI2MapBlock:"shape=mxgraph.mockup.misc.map;",UI2BarChartBlock:"shape=mxgraph.mockup.graphics.barChart;strokeColor=none;strokeColor2=none;",UI2ColumnChartBlock:"shape=mxgraph.mockup.graphics.columnChart;strokeColor=none;strokeColor2=none;",UI2LineChartBlock:"shape=mxgraph.mockup.graphics.lineChart;strokeColor=none;",UI2PieChartBlock:"shape=mxgraph.mockup.graphics.pieChart;parts=10,20,35;",UI2WebcamBlock:"shape=mxgraph.mockup.containers.userMale;",UI2CaptchaBlock:"shape=mxgraph.mockup.text.captcha;mainText=;",
UI2ButtonBlock:"shape=rect;rounded=1;",UI2ColorPickerBlock:"shape=mxgraph.mockup.forms.colorPicker;chosenColor=#aaddff;",UI2TextInputBlock:"shape=rect;rounded=1;",UI2SelectBlock:"shape=mxgraph.mockup.forms.comboBox;strokeColor=#999999;fillColor=#ddeeff;align=left;fillColor2=#aaddff;mainText=;fontColor=#666666;",UI2VSliderBlock:"shape=mxgraph.mockup.forms.horSlider;sliderStyle=basic;sliderPos=20;handleStyle=circle;direction=north;",UI2HSliderBlock:"shape=mxgraph.mockup.forms.horSlider;sliderStyle=basic;sliderPos=20;handleStyle=circle;",
UI2SearchBlock:"shape=mxgraph.mockup.forms.searchBox;mainText=;flipH=1;",UI2NumericStepperBlock:"shape=mxgraph.mockup.forms.spinner;spinLayout=right;spinStyle=normal;adjStyle=triangle;fillColor=#000000;mainText=;",UI2AtoZBlock:"shape=mxgraph.mockup.text.alphanumeric;linkText=;fontStyle=4;",UI2PaginationBlock:"shape=mxgraph.mockup.navigation.pagination;linkText=;fontStyle=4;",UI2PlaybackControlsBlock:"shape=mxgraph.mockup.misc.playbackControls;fillColor=#ffffff;strokeColor=#999999;fillColor2=#99ddff;strokeColor2=none;fillColor3=#ffffff;strokeColor3=none;",
Image_ui_formatting_toolbar:"shape=mxgraph.mockup.menus_and_buttons.font_style_selector_2;",UI2ProgressBarBlock:"shape=mxgraph.mockup.misc.progressBar;fillColor2=#888888;barPos=25;",UI2HelpIconBlock:"shape=mxgraph.mockup.misc.help_icon;",UI2BraceNoteBlock:"shape=mxgraph.mockup.markup.curlyBrace;direction=north;",UI2TooltipBlock:"shape=mxgraph.basic.rectangular_callout;flipV=1;",UI2CalloutBlock:"shape=ellipse;",Image_ipad_ipad:"shape=mxgraph.ios.iPad;bgStyle=bgGreen;",iPadGrayBackgroundBlock:"shape=rect;",
Image_ipad_top_bar:"shape=mxgraph.ios.iTopBar2;opacity=50;fillColor=#999999;strokeColor=#cccccc;",Image_ipad_search:"shape=mxgraph.mockup.forms.searchBox;mainText=;flipH=1;",Image_ipad_popover:"shape=mxgraph.ios.iOption;barPos=50;pointerPos=top;buttonText=;",Image_ipad_button_black:"shape=rect;roudned=1;",Image_ipad_button_blue:"shape=rect;roudned=1;",Image_ipad_button_grayblue:"shape=rect;roudned=1;",Image_ipad_button_red:"shape=rect;roudned=1;",Image_ipad_back_button_gray:"shape=mxgraph.ios.iButtonBack;buttonText=;fillColor=#eeeeee;fillColor2=#aaaaaa;",
Image_ipad_back_button_black:"shape=mxgraph.ios.iButtonBack;buttonText=;fillColor=#888888;fillColor2=#000000;",Image_ipad_sort_handle:"shape=mxgraph.ios7.icons.options;",Image_ipad_dropdown:"shape=mxgraph.ios.iComboBox;buttonText=;fillColor=#dddddd;fillColor2=#3D5565;",Image_ipad_email_name:"shape=rect;rounded=1;",Image_ipad_prev_next:"shape=mxgraph.ios.iPrevNext;strokeColor=#444444;fillColor=#dddddd;fillColor2=#3D5565;fillColor3=#ffffff;",Image_ipad_keyboard_portrait:"shape=mxgraph.ios.iKeybLett;",
@ -217,7 +224,7 @@ Image_iphone_button_blue:"shape=rect;rounded=1;",Image_iphone_button_grayblue:"s
Image_iphone_prev_next:"shape=mxgraph.ios.iPrevNext;strokeColor=#444444;fillColor=#dddddd;fillColor2=#3D5565;fillColor3=#ffffff;",Image_iphone_sort_handle:"shape=mxgraph.ios7.icons.options;",Image_iphone_slider:"shape=mxgraph.ios.iSlider;barPos=60;",Image_iphone_dropdown:"shape=mxgraph.ios.iComboBox;buttonText=;fillColor=#dddddd;fillColor2=#3D5565;",Image_iphone_email_name:"shape=rect;rounded=1;",Image_iphone_switch_off:"shape=mxgraph.android.switch_off;fillColor=#666666;",Image_iphone_keyboard_button_blue:"shape=rect;rounded=1;",
Image_iphone_keyboard_letters:"shape=mxgraph.ios.iKeybLett;",Image_iphone_keyboard_landscape:"shape=mxgraph.ios.iKeybLett;",Image_iphone_add_icon_blue:"shape=mxgraph.ios.iAddIcon;fillColor=#8BbEff;fillColor2=#135Ec8;strokeColor=#ffffff;",Image_iphone_add_icon_green:"shape=mxgraph.ios.iAddIcon;fillColor=#7AdF78;fillColor2=#1A9917;strokeColor=#ffffff;",Image_iphone_remove_icon:"shape=mxgraph.ios.iDeleteIcon;fillColor=#e8878E;fillColor2=#BD1421;strokeColor=#ffffff;",Image_iphone_arrow_icon:"shape=mxgraph.ios.iArrowIcon;fillColor=#8BbEff;fillColor2=#135Ec8;strokeColor=#ffffff;",
Image_iphone_arrow:"shape=mxgraph.ios7.misc.more;",Image_iphone_checkmark:"shape=mxgraph.ios7.misc.check;",Image_iphone_check_off:"shape=ellipse;",Image_iphone_location_dot:"shape=ellipse;",Image_iphone_mark_as_read:"shape=ellipse;",Image_iphone_pin_green:"shape=mxgraph.ios.iPin;fillColor2=#00dd00;fillColor3=#004400;strokeColor=#006600;",Image_iphone_pin_red:"shape=mxgraph.ios.iPin;fillColor2=#dd0000;fillColor3=#440000;strokeColor=#660000;",Image_iphone_radio_off:"shape=ellipse;",Image_iphone_checkbox_off:"shape=rect;rounded=1;",
Image_iphone_indicator:"shape=rect;rounded=1;fillColor=#e8878E;gradientColor=#BD1421;strokeColor=#ffffff;",Image_iphone_thread_count:"shape=rect;rounded=1;"};EditorUi.prototype.pasteLucidChart=function(a,c,d,b){var g=this.editor.graph;g.getModel().beginUpdate();try{var h=function(a,b){var f=null!=b.Endpoint1.Block?e[b.Endpoint1.Block]:null,l=null!=b.Endpoint2.Block?e[b.Endpoint2.Block]:null,h=new mxCell("",new mxGeometry(0,0,100,100),"html=1;");h.geometry.relative=!0;h.edge=!0;w(h,a);var p=q(a).Properties,
p=null!=p?p.TextAreas:a.TextAreas;if(null!=p)for(var n=0;null!=p["t"+n];){var p=p["t"+n],m=2*(parseFloat(p.Location)-.5),m=new mxCell(u(p),new mxGeometry(m,0,0,0),"text;html=1;resizable=0;align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;");m.geometry.relative=!0;m.vertex=!0;h.insert(m);n++}null==f&&null!=b.Endpoint1&&h.geometry.setTerminalPoint(new mxPoint(Math.round(.6*b.Endpoint1.x+c),Math.round(.6*b.Endpoint1.y+d)),!0);null==l&&null!=b.Endpoint2&&h.geometry.setTerminalPoint(new mxPoint(Math.round(.6*
b.Endpoint2.x+c),Math.round(.6*b.Endpoint2.y+d)),!1);k.push(g.addCell(h,null,null,f,l))},k=[],e={},l=[];if(null!=a.Blocks)for(var r in a.Blocks){var f=a.Blocks[r];f.id=r;e[f.id]=x(f);l.push(f)}else for(var n=0;n<a.Objects.length;n++)f=a.Objects[n],f.IsBlock&&null!=f.Action&&null!=f.Action.Properties&&(e[f.id]=x(f)),l.push(f);l.sort(function(a,b){a=q(a);b=q(b);return null!=a.Properties&&null!=b.Properties?a.Properties.ZOrder-b.Properties.ZOrder:0});for(n=0;n<l.length;n++){var f=l[n],m=e[f.id];null!=
m?k.push(g.addCell(m)):f.IsLine&&null!=f.Action&&null!=f.Action.Properties&&h(f,f.Action.Properties)}if(null!=a.Lines)for(r in a.Lines)f=a.Lines[r],h(f,f);if(b&&null!=c&&null!=d){g.isGridEnabled()&&(c=g.snap(c),d=g.snap(d));var t=g.getBoundingBoxFromGeometry(k,!0);null!=t&&g.moveCells(k,c-t.x,d-t.y)}g.setSelectionCells(k)}finally{g.getModel().endUpdate()}g.isSelectionEmpty()||(g.scrollCellToVisible(g.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(g.view.getState(g.getSelectionCell())))}})();
Image_iphone_indicator:"shape=rect;rounded=1;fillColor=#e8878E;gradientColor=#BD1421;strokeColor=#ffffff;",Image_iphone_thread_count:"shape=rect;rounded=1;"};EditorUi.prototype.pasteLucidChart=function(a,g,h,b){var e=this.editor.graph;e.getModel().beginUpdate();try{var f=function(a,b){var f=null!=b.Endpoint1.Block?c[b.Endpoint1.Block]:null,l=null!=b.Endpoint2.Block?c[b.Endpoint2.Block]:null,m=new mxCell("",new mxGeometry(0,0,100,100),"html=1;");m.geometry.relative=!0;m.edge=!0;u(m,a);var k=q(a).Properties,
k=null!=k?k.TextAreas:a.TextAreas;if(null!=k)for(var p=0;null!=k["t"+p];){var k=k["t"+p],n=2*(parseFloat(k.Location)-.5),n=new mxCell(t(k),new mxGeometry(n,0,0,0),"text;html=1;resizable=0;align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;");n.geometry.relative=!0;n.vertex=!0;m.insert(n);p++}null==f&&null!=b.Endpoint1&&m.geometry.setTerminalPoint(new mxPoint(Math.round(.6*b.Endpoint1.x+g),Math.round(.6*b.Endpoint1.y+h)),!0);null==l&&null!=b.Endpoint2&&m.geometry.setTerminalPoint(new mxPoint(Math.round(.6*
b.Endpoint2.x+g),Math.round(.6*b.Endpoint2.y+h)),!1);d.push(e.addCell(m,null,null,f,l))},d=[],c={},m=[];if(null!=a.Blocks)for(var k in a.Blocks){var l=a.Blocks[k];l.id=k;c[l.id]=w(l);m.push(l)}else for(var p=0;p<a.Objects.length;p++)l=a.Objects[p],l.IsBlock&&null!=l.Action&&null!=l.Action.Properties&&(c[l.id]=w(l)),m.push(l);m.sort(function(a,b){a=q(a);b=q(b);return null!=a.Properties&&null!=b.Properties?a.Properties.ZOrder-b.Properties.ZOrder:0});for(p=0;p<m.length;p++){var l=m[p],n=c[l.id];null!=
n?d.push(e.addCell(n)):l.IsLine&&null!=l.Action&&null!=l.Action.Properties&&f(l,l.Action.Properties)}if(null!=a.Lines)for(k in a.Lines)l=a.Lines[k],f(l,l);if(b&&null!=g&&null!=h){e.isGridEnabled()&&(g=e.snap(g),h=e.snap(h));var r=e.getBoundingBoxFromGeometry(d,!0);null!=r&&e.moveCells(d,g-r.x,h-r.y)}e.setSelectionCells(d)}finally{e.getModel().endUpdate()}e.isSelectionEmpty()||(e.scrollCellToVisible(e.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(e.view.getState(e.getSelectionCell())))}})();

View file

@ -345,7 +345,32 @@
c.close();
c.end();
};
TapeShape.prototype.getLabelBounds = function(rect)
{
if (mxUtils.getValue(this.style, 'boundedLbl', false))
{
var size = mxUtils.getValue(this.style, 'size', this.size);
var w = rect.width;
var h = rect.height;
if (this.direction == null ||
this.direction == mxConstants.DIRECTION_EAST ||
this.direction == mxConstants.DIRECTION_WEST)
{
var dy = h * size;
return new mxRectangle(rect.x, rect.y + dy, w, h - 2 * dy);
}
else
{
var dx = w * size;
return new mxRectangle(rect.x + dx, rect.y, w - 2 * dx, h);
}
}
return rect;
};
mxCellRenderer.prototype.defaultShapes['tape'] = TapeShape;
// Document shape
@ -1387,16 +1412,32 @@
size = mxUtils.getValue(vertex.style, 'size', size);
}
var dx = bounds.width * Math.max(0, Math.min(1, size));
var x = bounds.x;
var y = bounds.y;
var w = bounds.width;
var h = bounds.height;
var points = [new mxPoint(x + dx, y), new mxPoint(x + w, y),
new mxPoint(x + w - dx, y + h), new mxPoint(x, y + h), new mxPoint(x + dx, y)];
var direction = (vertex != null) ? mxUtils.getValue(
vertex.style, mxConstants.STYLE_DIRECTION,
mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST;
var vertical = direction == mxConstants.DIRECTION_NORTH
|| direction == mxConstants.DIRECTION_SOUTH;
var points;
if (vertical)
{
var dy = h * Math.max(0, Math.min(1, size));
points = [new mxPoint(x, y), new mxPoint(x + w, y + dy),
new mxPoint(x + w, y + h), new mxPoint(x, y + h - dy), new mxPoint(x, y)];
}
else
{
var dx = w * Math.max(0, Math.min(1, size));
points = [new mxPoint(x + dx, y), new mxPoint(x + w, y),
new mxPoint(x + w - dx, y + h), new mxPoint(x, y + h), new mxPoint(x + dx, y)];
}
var cx = bounds.getCenterX();
var cy = bounds.getCenterY();
@ -1425,15 +1466,41 @@
size = mxUtils.getValue(vertex.style, 'size', size);
}
var dx = bounds.width * Math.max(0, Math.min(1, size));
var x = bounds.x;
var y = bounds.y;
var w = bounds.width;
var h = bounds.height;
var points = [new mxPoint(x + dx, y), new mxPoint(x + w - dx, y),
var direction = (vertex != null) ? mxUtils.getValue(
vertex.style, mxConstants.STYLE_DIRECTION,
mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST;
var points;
if (direction == mxConstants.DIRECTION_EAST)
{
var dx = w * Math.max(0, Math.min(1, size));
points = [new mxPoint(x + dx, y), new mxPoint(x + w - dx, y),
new mxPoint(x + w, y + h), new mxPoint(x, y + h), new mxPoint(x + dx, y)];
}
else if (direction == mxConstants.DIRECTION_WEST)
{
var dx = w * Math.max(0, Math.min(1, size));
points = [new mxPoint(x, y), new mxPoint(x + w, y),
new mxPoint(x + w - dx, y + h), new mxPoint(x + dx, y + h), new mxPoint(x, y)];
}
else if (direction == mxConstants.DIRECTION_NORTH)
{
var dy = h * Math.max(0, Math.min(1, size));
points = [new mxPoint(x, y + dy), new mxPoint(x + w, y),
new mxPoint(x + w, y + h), new mxPoint(x, y + h - dy), new mxPoint(x, y + dy)];
}
else
{
var dy = h * Math.max(0, Math.min(1, size));
points = [new mxPoint(x, y), new mxPoint(x + w, y + dy),
new mxPoint(x + w, y + h - dy), new mxPoint(x, y + h), new mxPoint(x, y)];
}
var cx = bounds.getCenterX();
var cy = bounds.getCenterY();
@ -1463,8 +1530,6 @@
size = mxUtils.getValue(vertex.style, 'size', size);
}
var dx = bounds.width * Math.max(0, Math.min(1, size));
var x = bounds.x;
var y = bounds.y;
var w = bounds.width;
@ -1473,9 +1538,40 @@
var cx = bounds.getCenterX();
var cy = bounds.getCenterY();
var points = [new mxPoint(x, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, cy),
new mxPoint(x + w - dx, y + h), new mxPoint(x, y + h),
new mxPoint(x + dx, cy), new mxPoint(x, y)];
var direction = (vertex != null) ? mxUtils.getValue(
vertex.style, mxConstants.STYLE_DIRECTION,
mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST;
var points;
if (direction == mxConstants.DIRECTION_EAST)
{
var dx = w * Math.max(0, Math.min(1, size));
points = [new mxPoint(x, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, cy),
new mxPoint(x + w - dx, y + h), new mxPoint(x, y + h),
new mxPoint(x + dx, cy), new mxPoint(x, y)];
}
else if (direction == mxConstants.DIRECTION_WEST)
{
var dx = w * Math.max(0, Math.min(1, size));
points = [new mxPoint(x + dx, y), new mxPoint(x + w, y), new mxPoint(x + w - dx, cy),
new mxPoint(x + w, y + h), new mxPoint(x + dx, y + h),
new mxPoint(x, cy), new mxPoint(x + dx, y)];
}
else if (direction == mxConstants.DIRECTION_NORTH)
{
var dy = h * Math.max(0, Math.min(1, size));
points = [new mxPoint(x, y + dy), new mxPoint(cx, y), new mxPoint(x + w, y + dy),
new mxPoint(x + w, y + h), new mxPoint(cx, y + h - dy),
new mxPoint(x, y + h), new mxPoint(x, y + dy)];
}
else
{
var dy = h * Math.max(0, Math.min(1, size));
points = [new mxPoint(x, y), new mxPoint(cx, y + dy), new mxPoint(x + w, y),
new mxPoint(x + w, y + h - dy), new mxPoint(cx, y + h),
new mxPoint(x, y + h - dy), new mxPoint(x, y)];
}
var p1 = new mxPoint(cx, cy);
@ -1502,8 +1598,6 @@
size = mxUtils.getValue(vertex.style, 'size', size);
}
var dx = bounds.width * Math.max(0, Math.min(1, size));
var x = bounds.x;
var y = bounds.y;
var w = bounds.width;
@ -1512,10 +1606,29 @@
var cx = bounds.getCenterX();
var cy = bounds.getCenterY();
var points = [new mxPoint(x + dx, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, cy),
var direction = (vertex != null) ? mxUtils.getValue(
vertex.style, mxConstants.STYLE_DIRECTION,
mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST;
var vertical = direction == mxConstants.DIRECTION_NORTH
|| direction == mxConstants.DIRECTION_SOUTH;
var points;
if (vertical)
{
var dy = h * Math.max(0, Math.min(1, size));
points = [new mxPoint(cx, y), new mxPoint(x + w, y + dy), new mxPoint(x + w, y + h - dy),
new mxPoint(cx, y + h), new mxPoint(x, y + h - dy),
new mxPoint(x, y + dy), new mxPoint(cx, y)];
}
else
{
var dx = w * Math.max(0, Math.min(1, size));
points = [new mxPoint(x + dx, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, cy),
new mxPoint(x + w - dx, y + h), new mxPoint(x + dx, y + h),
new mxPoint(x, cy), new mxPoint(x + dx, y)];
}
var p1 = new mxPoint(cx, cy);
if (orthogonal)

260
war/js/reader.min.js vendored
View file

@ -81,7 +81,7 @@ v,k,f));else if(c.c&a.c.RCDATA)d.F&&d.F(e(l),f,g,h(d,b,v,k,f));else throw Error(
e[1].toLowerCase(),n;if(e[2]){n=e[3];var v=n.charCodeAt(0);if(34===v||39===v)n=n.substr(1,n.length-2);n=c(n.replace(F,""))}else n="";l.push(m,n);g=g.substr(e[0].length)}else g=g.replace(/^[\s\S][^a-z\s]*/,"");f.R=l;f.next=h+1;return f}}function n(b){function c(a,b){f||b.push(a)}var e,f;return g({startDoc:function(){e=[];f=!1},startTag:function(c,g,h){if(!f&&a.f.hasOwnProperty(c)){var k=a.f[c];if(!(k&a.c.FOLDABLE)){var l=b(c,g);if(l){if("object"!==typeof l)throw Error("tagPolicy did not return object (old API?)");
if("attribs"in l)g=l.attribs;else throw Error("tagPolicy gave no attribs");var m;"tagName"in l?(m=l.tagName,l=a.f[m]):(m=c,l=k);if(k&a.c.OPTIONAL_ENDTAG){var n=e[e.length-1];n&&n.D===c&&(n.v!==m||c!==m)&&h.push("</",n.v,">")}k&a.c.EMPTY||e.push({D:c,v:m});h.push("<",m);c=0;for(n=g.length;c<n;c+=2){var v=g[c],C=g[c+1];null!==C&&void 0!==C&&h.push(" ",v,'="',d(C),'"')}h.push(">");k&a.c.EMPTY&&!(l&a.c.EMPTY)&&h.push("</",m,">")}else f=!(k&a.c.EMPTY)}}},endTag:function(b,c){if(f)f=!1;else if(a.f.hasOwnProperty(b)){var d=
a.f[b];if(!(d&(a.c.EMPTY|a.c.FOLDABLE))){if(d&a.c.OPTIONAL_ENDTAG)for(d=e.length;0<=--d;){var g=e[d].D;if(g===b)break;if(!(a.f[g]&a.c.OPTIONAL_ENDTAG))return}else for(d=e.length;0<=--d&&e[d].D!==b;);if(!(0>d)){for(g=e.length;--g>d;){var h=e[g].v;a.f[h]&a.c.OPTIONAL_ENDTAG||c.push("</",h,">")}d<e.length&&(b=e[d].v);e.length=d;c.push("</",b,">")}}}},pcdata:c,rcdata:c,cdata:c,endDoc:function(a){for(;e.length;e.length--)a.push("</",e[e.length-1].v,">")}})}function p(a,b,c,d,e){if(!e)return null;try{var g=
f.parse(""+a);if(g&&(!g.K()||fa.test(g.W()))){var h=e(g,b,c,d);return h?h.toString():null}}catch(wa){}return null}function r(a,b,c,d,e){c||a(b+" removed",{S:"removed",tagName:b});if(d!==e){var f="changed";d&&!e?f="removed":!d&&e&&(f="added");a(b+"."+c+" "+f,{S:f,tagName:b,la:c,oldValue:d,newValue:e})}}function C(a,b,c){b=b+"::"+c;if(a.hasOwnProperty(b))return a[b];b="*::"+c;if(a.hasOwnProperty(b))return a[b]}function H(b,c,d,e,f){for(var g=0;g<c.length;g+=2){var h=c[g],k=c[g+1],l=k,m=null,n;if((n=
f.parse(""+a);if(g&&(!g.K()||fa.test(g.W()))){var h=e(g,b,c,d);return h?h.toString():null}}catch(va){}return null}function r(a,b,c,d,e){c||a(b+" removed",{S:"removed",tagName:b});if(d!==e){var f="changed";d&&!e?f="removed":!d&&e&&(f="added");a(b+"."+c+" "+f,{S:f,tagName:b,la:c,oldValue:d,newValue:e})}}function C(a,b,c){b=b+"::"+c;if(a.hasOwnProperty(b))return a[b];b="*::"+c;if(a.hasOwnProperty(b))return a[b]}function H(b,c,d,e,f){for(var g=0;g<c.length;g+=2){var h=c[g],k=c[g+1],l=k,m=null,n;if((n=
b+"::"+h,a.m.hasOwnProperty(n))||(n="*::"+h,a.m.hasOwnProperty(n)))m=a.m[n];if(null!==m)switch(m){case a.d.NONE:break;case a.d.SCRIPT:k=null;f&&r(f,b,h,l,k);break;case a.d.STYLE:if("undefined"===typeof U){k=null;f&&r(f,b,h,l,k);break}var v=[];U(k,{declaration:function(b,c){var e=b.toLowerCase();S(e,c,d?function(b){return p(b,a.P.ja,a.M.ka,{TYPE:"CSS",CSS_PROP:e},d)}:null);c.length&&v.push(e+": "+c.join(" "))}});k=0<v.length?v.join(" ; "):null;f&&r(f,b,h,l,k);break;case a.d.ID:case a.d.IDREF:case a.d.IDREFS:case a.d.GLOBAL_NAME:case a.d.LOCAL_NAME:case a.d.CLASSES:k=
e?e(k):k;f&&r(f,b,h,l,k);break;case a.d.URI:k=p(k,C(a.J,b,h),C(a.I,b,h),{TYPE:"MARKUP",XML_ATTR:h,XML_TAG:b},d);f&&r(f,b,h,l,k);break;case a.d.URI_FRAGMENT:k&&"#"===k.charAt(0)?(k=k.substring(1),k=e?e(k):k,null!==k&&void 0!==k&&(k="#"+k)):k=null;f&&r(f,b,h,l,k);break;default:k=null,f&&r(f,b,h,l,k)}else k=null,f&&r(f,b,h,l,k);c[g+1]=k}return c}function M(b,c,d){return function(e,f){if(a.f[e]&a.c.UNSAFE)d&&r(d,e,void 0,void 0,void 0);else return{attribs:H(e,f,b,c,d)}}}function J(a,b){var c=[];n(b)(a,
c);return c.join("")}var U,S;"undefined"!==typeof window&&(U=window.parseCssDeclarations,S=window.sanitizeCssProperty);var aa={lt:"<",LT:"<",gt:">",GT:">",amp:"&",AMP:"&",quot:'"',apos:"'",nbsp:" "},A=/^#(\d+)$/,v=/^#x([0-9A-Fa-f]+)$/,R=/^[A-Za-z][A-za-z0-9]+$/,K="undefined"!==typeof window&&window.document?window.document.createElement("textarea"):null,F=/\0/g,ca=/&(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/g,N=/^(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/,G=/&/g,Y=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,T=
@ -184,7 +184,7 @@ f)+"\n"+t+"}":"{"+x.join(",")+"}";f=t;return l}}"function"!==typeof Date.prototy
e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f,g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;"function"!==typeof JSON.stringify&&(JSON.stringify=function(a,b,d){var e;g=f="";if("number"===typeof d)for(e=0;e<d;e+=1)g+=" ";else"string"===typeof d&&(g=d);if((k=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return c("",{"":a})});
"function"!==typeof JSON.parse&&(JSON.parse=function(a,b){function c(a,d){var e,f,g=a[d];if(g&&"object"===typeof g)for(e in g)Object.prototype.hasOwnProperty.call(g,e)&&(f=c(g,e),void 0!==f?g[e]=f:delete g[e]);return b.call(a,d,g)}var e;a=""+a;d.lastIndex=0;d.test(a)&&(a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof b?c({"":e},""):e;throw new SyntaxError("JSON.parse");})})();var mxBasePath="https://www.draw.io/mxgraph/",mxLoadStylesheets=mxLoadResources=!1,mxLanguage="en";window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";
window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"7.0.8",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&
window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"7.1.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&
0>navigator.userAgent.indexOf("Edge/"),IS_OP:0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/"),IS_OT:0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&
0>navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_IOS:navigator.userAgent.match(/(iPad|iPhone|iPod)/g)?!0:!1,IS_GC:0<=navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:0<=navigator.userAgent.indexOf("Firefox/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&
0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||
@ -1054,7 +1054,8 @@ mxGraphView.prototype.getEdgeStyle=function(a,b,c,d){a=this.isLoopStyleEnabled(a
mxGraphView.prototype.updateFloatingTerminalPoints=function(a,b,c){var d=a.absolutePoints,e=d[0];null==d[d.length-1]&&null!=c&&this.updateFloatingTerminalPoint(a,c,b,!1);null==e&&null!=b&&this.updateFloatingTerminalPoint(a,b,c,!0)};mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){a.setAbsoluteTerminalPoint(this.getFloatingTerminalPoint(a,b,c,d),d)};
mxGraphView.prototype.getFloatingTerminalPoint=function(a,b,c,d){b=this.getTerminalPort(a,b,d);var e=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a);c=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0"));var g=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=c)var h=Math.cos(-c),k=Math.sin(-c),e=mxUtils.getRotatedPoint(e,h,k,g);h=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);h+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||
0);a=this.getPerimeterPoint(b,e,0==c&&f,h);0!=c&&(h=Math.cos(c),k=Math.sin(c),a=mxUtils.getRotatedPoint(a,h,k,g));return a};mxGraphView.prototype.getTerminalPort=function(a,b,c){a=mxUtils.getValue(a.style,c?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT);null!=a&&(a=this.getState(this.graph.getModel().getCell(a)),null!=a&&(b=a));return b};
mxGraphView.prototype.getPerimeterPoint=function(a,b,c,d){var e=null;if(null!=a){var f=this.getPerimeterFunction(a);null!=f&&null!=b&&(d=this.getPerimeterBounds(a,d),0<d.width||0<d.height)&&(e=f(d,a,b,c));null==e&&(e=this.getPoint(a))}return e};mxGraphView.prototype.getRoutingCenterX=function(a){var b=null!=a.style?parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_X])||0:0;return a.getCenterX()+b*a.width};
mxGraphView.prototype.getPerimeterPoint=function(a,b,c,d){var e=null;if(null!=a){var f=this.getPerimeterFunction(a);if(null!=f&&null!=b&&(d=this.getPerimeterBounds(a,d),0<d.width||0<d.height)){var e=new mxPoint(b.x,b.y),g=b=!1;this.graph.model.isVertex(a.cell)&&(b=1==mxUtils.getValue(a.style,mxConstants.STYLE_FLIPH,0),g=1==mxUtils.getValue(a.style,mxConstants.STYLE_FLIPV,0),null!=a.shape&&null!=a.shape.stencil&&(b=1==mxUtils.getValue(a.style,"stencilFlipH",0)||b,g=1==mxUtils.getValue(a.style,"stencilFlipV",
0)||g),b&&(e.x=2*d.getCenterX()-e.x),g&&(e.y=2*d.getCenterY()-e.y));e=f(d,a,e,c);b&&(e.x=2*d.getCenterX()-e.x);g&&(e.y=2*d.getCenterY()-e.y)}null==e&&(e=this.getPoint(a))}return e};mxGraphView.prototype.getRoutingCenterX=function(a){var b=null!=a.style?parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_X])||0:0;return a.getCenterX()+b*a.width};
mxGraphView.prototype.getRoutingCenterY=function(a){var b=null!=a.style?parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0:0;return a.getCenterY()+b*a.height};mxGraphView.prototype.getPerimeterBounds=function(a,b){b=null!=b?b:0;null!=a&&(b+=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0));return a.getPerimeterBounds(b*this.scale)};
mxGraphView.prototype.getPerimeterFunction=function(a){a=a.style[mxConstants.STYLE_PERIMETER];if("string"==typeof a){var b=mxStyleRegistry.getValue(a);null==b&&this.isAllowEval()&&(b=mxUtils.eval(a));a=b}return"function"==typeof a?a:null};mxGraphView.prototype.getNextPoint=function(a,b,c){a=a.absolutePoints;var d=null;null!=a&&2<=a.length&&(d=a.length,d=a[c?Math.min(1,d-1):Math.max(0,d-2)]);null==d&&null!=b&&(d=new mxPoint(b.getCenterX(),b.getCenterY()));return d};
mxGraphView.prototype.getVisibleTerminal=function(a,b){for(var c=this.graph.getModel(),d=c.getTerminal(a,b),e=d;null!=d&&d!=this.currentRoot;){if(!this.graph.isCellVisible(e)||this.isCellCollapsed(d))e=d;d=c.getParent(d)}c.getParent(e)==c.getRoot()&&(e=null);return e};
@ -1205,9 +1206,9 @@ mxGraph.prototype.getOutlineConstraint=function(a,b,c){if(null!=b.shape){c=this.
mxGraph.prototype.getConnectionConstraint=function(a,b,c){b=null;var d=a.style[c?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=d){var e=a.style[c?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=e&&(b=new mxPoint(parseFloat(d),parseFloat(e)))}d=!1;null!=b&&(d=mxUtils.getValue(a.style,c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0));return new mxConnectionConstraint(b,d)};
mxGraph.prototype.setConnectionConstraint=function(a,b,c,d){if(null!=d){this.model.beginUpdate();try{null==d||null==d.point?(this.setCellStyles(c?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[a]),this.setCellStyles(c?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[a]),this.setCellStyles(c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[a])):null!=d.point&&(this.setCellStyles(c?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,d.point.x,[a]),this.setCellStyles(c?
mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,d.point.y,[a]),d.perimeter?this.setCellStyles(c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[a]):this.setCellStyles(c?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[a]))}finally{this.model.endUpdate()}}};
mxGraph.prototype.getConnectionPoint=function(a,b){var c=null;if(null!=a&&null!=b.point){var d=this.view.getPerimeterBounds(a),e=new mxPoint(d.getCenterX(),d.getCenterY()),c=a.style[mxConstants.STYLE_DIRECTION],f=0;null!=c&&(c==mxConstants.DIRECTION_NORTH?f+=270:c==mxConstants.DIRECTION_WEST?f+=180:c==mxConstants.DIRECTION_SOUTH&&(f+=90),c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_SOUTH||d.rotate90());var c=new mxPoint(d.x+b.point.x*d.width,d.y+b.point.y*d.height),g=a.style[mxConstants.STYLE_ROTATION]||
0;if(b.perimeter){if(0!=f){var h=0,k=0;90==f?k=1:180==f?h=-1:270==f&&(k=-1);c=mxUtils.getRotatedPoint(c,h,k,e)}c=this.view.getPerimeterPoint(a,c,!1)}else g+=f;this.getModel().isVertex(a.cell)&&(f=1==a.style[mxConstants.STYLE_FLIPH],h=1==a.style[mxConstants.STYLE_FLIPV],null!=a.shape&&null!=a.shape.stencil&&(f=1==mxUtils.getValue(a.style,"stencilFlipH",0)||f,h=1==mxUtils.getValue(a.style,"stencilFlipV",0)||h),f&&(c.x=2*d.getCenterX()-c.x),h&&(c.y=2*d.getCenterY()-c.y));0!=g&&null!=c&&(d=mxUtils.toRadians(g),
h=Math.cos(d),k=Math.sin(d),c=mxUtils.getRotatedPoint(c,h,k,e))}null!=c&&(c.x=Math.round(c.x),c.y=Math.round(c.y));return c};mxGraph.prototype.connectCell=function(a,b,c,d){this.model.beginUpdate();try{var e=this.model.getTerminal(a,c);this.cellConnected(a,b,c,d);this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",a,"terminal",b,"source",c,"previous",e))}finally{this.model.endUpdate()}return a};
mxGraph.prototype.getConnectionPoint=function(a,b){var c=null;if(null!=a&&null!=b.point){var c=this.view.getPerimeterBounds(a),d=new mxPoint(c.getCenterX(),c.getCenterY()),e=a.style[mxConstants.STYLE_DIRECTION],f=0;null!=e&&(e==mxConstants.DIRECTION_NORTH?f+=270:e==mxConstants.DIRECTION_WEST?f+=180:e==mxConstants.DIRECTION_SOUTH&&(f+=90),e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_SOUTH||c.rotate90());var c=new mxPoint(c.x+b.point.x*c.width,c.y+b.point.y*c.height),g=a.style[mxConstants.STYLE_ROTATION]||
0;if(b.perimeter){if(0!=f){var h=e=0;90==f?h=1:180==f?e=-1:270==f&&(h=-1);c=mxUtils.getRotatedPoint(c,e,h,d)}c=this.view.getPerimeterPoint(a,c,!1)}else g+=f;0!=g&&null!=c&&(f=mxUtils.toRadians(g),e=Math.cos(f),h=Math.sin(f),c=mxUtils.getRotatedPoint(c,e,h,d))}null!=c&&(c.x=Math.round(c.x),c.y=Math.round(c.y));return c};
mxGraph.prototype.connectCell=function(a,b,c,d){this.model.beginUpdate();try{var e=this.model.getTerminal(a,c);this.cellConnected(a,b,c,d);this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",a,"terminal",b,"source",c,"previous",e))}finally{this.model.endUpdate()}return a};
mxGraph.prototype.cellConnected=function(a,b,c,d){if(null!=a){this.model.beginUpdate();try{var e=this.model.getTerminal(a,c);this.setConnectionConstraint(a,b,c,d);this.isPortsEnabled()&&(d=null,this.isPort(b)&&(d=b.getId(),b=this.getTerminalForPort(b,c)),this.setCellStyles(c?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,d,[a]));this.model.setTerminal(a,b,c);this.resetEdgesOnConnect&&this.resetEdge(a);this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",a,"terminal",b,"source",
c,"previous",e))}finally{this.model.endUpdate()}}};
mxGraph.prototype.disconnectGraph=function(a){if(null!=a){this.model.beginUpdate();try{for(var b=this.view.scale,c=this.view.translate,d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++)if(this.model.isEdge(a[e])){var f=this.model.getGeometry(a[e]);if(null!=f){var g=this.view.getState(a[e]),h=this.view.getState(this.model.getParent(a[e]));if(null!=g&&null!=h){var f=f.clone(),k=-h.origin.x,l=-h.origin.y,m=g.absolutePoints,n=this.model.getTerminal(a[e],!0);if(null!=n&&this.isCellDisconnectable(a[e],
@ -1741,130 +1742,135 @@ var A=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function()
a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,q.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,q.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,q.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,q.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;
this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function t(){mxRectangleShape.call(this)}function x(){mxActor.call(this)}function w(){mxActor.call(this)}function z(){mxRectangleShape.call(this)}function y(){mxRectangleShape.call(this)}function u(){mxCylinder.call(this)}function I(){mxShape.call(this)}function L(){mxShape.call(this)}function D(){mxEllipse.call(this)}function B(){mxShape.call(this)}
function E(){mxShape.call(this)}function C(){mxRectangleShape.call(this)}function H(){mxShape.call(this)}function M(){mxShape.call(this)}function J(){mxShape.call(this)}function U(){mxCylinder.call(this)}function S(){mxDoubleEllipse.call(this)}function aa(){mxDoubleEllipse.call(this)}function A(){mxArrowConnector.call(this);this.spacing=0}function v(){mxArrowConnector.call(this);this.spacing=0}function R(){mxActor.call(this)}function K(){mxRectangleShape.call(this)}function F(){mxActor.call(this)}
function ca(){mxActor.call(this)}function N(){mxActor.call(this)}function G(){mxActor.call(this)}function Y(){mxActor.call(this)}function T(){mxActor.call(this)}function Z(){mxActor.call(this)}function da(){mxActor.call(this)}function P(){mxActor.call(this)}function ea(){mxActor.call(this)}function W(){mxEllipse.call(this)}function O(){mxEllipse.call(this)}function Q(){mxEllipse.call(this)}function fa(){mxRhombus.call(this)}function V(){mxEllipse.call(this)}function X(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}
function pa(){mxEllipse.call(this)}function qa(){mxActor.call(this)}function la(){mxActor.call(this)}function ma(){mxActor.call(this)}function ja(){mxConnector.call(this)}function wa(a,b,c,d,e,f,g,h,k,l){g+=k;var m=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(m.x-e-g,m.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxCylinder);a.prototype.size=20;a.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));f?(a.moveTo(b,e),a.lineTo(b,b),a.lineTo(0,0),a.moveTo(b,b),a.lineTo(d,b)):(a.moveTo(0,0),a.lineTo(d-b,0),a.lineTo(d,b),a.lineTo(d,e),a.lineTo(b,e),a.lineTo(0,e-b),a.lineTo(0,0),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.cube=a;var xa=Math.tan(mxUtils.toRadians(30)),ka=(.5-xa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/xa);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5*b,b*ka);a.lineTo(b,
.25*b);a.lineTo(.5*b,(.5-ka)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.isoRectangle=b;mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+xa));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-ka)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-ka)*b),a.lineTo(.5*b,(1-ka)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*ka),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-ka)*b),a.lineTo(0,.75*b),
function ca(){mxActor.call(this)}function N(){mxActor.call(this)}function G(){mxActor.call(this)}function Y(){mxActor.call(this)}function T(){mxActor.call(this)}function Z(){mxActor.call(this)}function da(){mxActor.call(this)}function P(){mxActor.call(this)}function ea(){mxActor.call(this)}function W(){mxEllipse.call(this)}function O(){mxEllipse.call(this)}function Q(){mxEllipse.call(this)}function fa(){mxRhombus.call(this)}function V(){mxEllipse.call(this)}function X(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}
function oa(){mxEllipse.call(this)}function pa(){mxActor.call(this)}function la(){mxActor.call(this)}function ma(){mxActor.call(this)}function ja(){mxConnector.call(this)}function va(a,b,c,d,e,f,g,h,k,l){g+=k;var m=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(m.x-e-g,m.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxCylinder);a.prototype.size=20;a.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));f?(a.moveTo(b,e),a.lineTo(b,b),a.lineTo(0,0),a.moveTo(b,b),a.lineTo(d,b)):(a.moveTo(0,0),a.lineTo(d-b,0),a.lineTo(d,b),a.lineTo(d,e),a.lineTo(b,e),a.lineTo(0,e-b),a.lineTo(0,0),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.cube=a;var wa=Math.tan(mxUtils.toRadians(30)),ka=(.5-wa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/wa);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5*b,b*ka);a.lineTo(b,
.25*b);a.lineTo(.5*b,(.5-ka)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.isoRectangle=b;mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+wa));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-ka)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-ka)*b),a.lineTo(.5*b,(1-ka)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*ka),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-ka)*b),a.lineTo(0,.75*b),
a.close());a.end()};mxCellRenderer.prototype.defaultShapes.isoCube=c;mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,-b);f||(a.moveTo(0,
b),a.curveTo(0,-b/3,d,-b/3,d,b),a.lineTo(d,e-b),a.curveTo(d,e+b/3,0,e+b/3,0,e-b),a.close())};d.prototype.getLabelBounds=function(a){var b=2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1);if(!this.flipV&&(null==this.direction||this.direction==mxConstants.DIRECTION_EAST)||this.flipV&&this.direction==mxConstants.DIRECTION_WEST)a.y+=b,a.height-=b;else if(!this.flipV&&this.direction==mxConstants.DIRECTION_SOUTH||this.flipV&&this.direction==mxConstants.DIRECTION_NORTH)a.width-=b;else if(!this.flipV&&
this.direction==mxConstants.DIRECTION_WEST||this.flipV&&(null==this.direction||this.direction==mxConstants.DIRECTION_EAST))a.height-=b;else if(!this.flipV&&this.direction==mxConstants.DIRECTION_NORTH||this.flipV&&this.direction==mxConstants.DIRECTION_SOUTH)a.x+=b,a.width-=b;return a};mxCellRenderer.prototype.defaultShapes.datastore=d;mxUtils.extend(e,mxCylinder);e.prototype.size=30;e.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));f?(a.moveTo(d-b,0),a.lineTo(d-b,b),a.lineTo(d,b)):(a.moveTo(0,0),a.lineTo(d-b,0),a.lineTo(d,b),a.lineTo(d,e),a.lineTo(0,e),a.lineTo(0,0),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.note=e;mxUtils.extend(f,mxActor);f.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d/2,.5*e,d,0);a.quadTo(.5*d,e/2,d,e);a.quadTo(d/2,.5*e,0,e);a.quadTo(.5*d,e/2,0,0);a.end()};mxCellRenderer.prototype.defaultShapes["switch"]=f;mxUtils.extend(g,mxCylinder);g.prototype.tabWidth=
60;g.prototype.tabHeight=20;g.prototype.tabPosition="right";g.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var g=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);f?"left"==g?(a.moveTo(0,c),a.lineTo(b,c)):(a.moveTo(d-b,c),a.lineTo(d,c)):("left"==g?(a.moveTo(0,0),a.lineTo(b,0),a.lineTo(b,c),a.lineTo(d,c)):(a.moveTo(0,
c),a.lineTo(d-b,c),a.lineTo(d-b,0),a.lineTo(d,0)),a.lineTo(d,e),a.lineTo(0,e),a.lineTo(0,c),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.folder=g;mxUtils.extend(h,mxActor);h.prototype.size=30;h.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d,0),new mxPoint(d,e),new mxPoint(0,
e),new mxPoint(0,b)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.card=h;mxUtils.extend(k,mxActor);k.prototype.size=.4;k.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,b/2);a.quadTo(d/4,1.4*b,d/2,b/2);a.quadTo(3*d/4,b*(1-1.4),d,b/2);a.lineTo(d,e-b/2);a.quadTo(3*d/4,e-1.4*b,d/2,e-b/2);a.quadTo(d/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.tape=
k;mxUtils.extend(l,mxActor);l.prototype.size=.3;l.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,0);a.lineTo(d,0);a.lineTo(d,e-b/2);a.quadTo(3*d/4,e-1.4*b,d/2,e-b/2);a.quadTo(d/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.document=l;mxUtils.extend(m,mxActor);m.prototype.size=.2;m.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d,0),new mxPoint(d-b,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.parallelogram=m;mxUtils.extend(n,mxActor);n.prototype.size=.2;n.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,e)],this.isRounded,c,!0)};mxCellRenderer.prototype.defaultShapes.trapezoid=n;mxUtils.extend(p,mxActor);p.prototype.size=.5;p.prototype.redrawPath=function(a,b,c,d,e){a.setFillColor(null);b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,
0),new mxPoint(b,0),new mxPoint(b,e/2),new mxPoint(0,e/2),new mxPoint(b,e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);a.end()};mxCellRenderer.prototype.defaultShapes.curlyBracket=p;mxUtils.extend(r,mxActor);r.prototype.redrawPath=function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.parallelMarker=r;q.prototype.moveTo=
function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};q.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};q.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};q.prototype.curveTo=function(a,b,c,d,e,f){this.originalCurveTo.apply(this.canvas,
arguments);this.lastX=e;this.lastY=f};q.prototype.arcTo=function(a,b,c,d,e,f,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=g};q.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),f=Math.sqrt(d*d+e*e);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var g=Math.round(f/10),h=this.defaultVariation;
5>g&&(g=5,h/=3);for(var k=c(a-this.lastX)*d/g,c=c(b-this.lastY)*e/g,d=d/f,e=e/f,f=0;f<g;f++){var l=(Math.random()-.5)*h;this.originalLineTo.call(this.canvas,k*f+this.lastX-l*e,c*f+this.lastY-l*d)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};q.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;
this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};var Da=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new q(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Da.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Ea=mxRectangleShape.prototype.isHtmlAllowed;
mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Ea.apply(this,arguments)};var Fa=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,c,d,e){if(null==a.handJiggle)Fa.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=
mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1),a.begin(),this.isRounded?(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.min(d*f,e*f),a.moveTo(b+f,c),a.lineTo(b+d-f,c),a.quadTo(b+d,c,b+d,c+f),a.lineTo(b+d,c+e-f),a.quadTo(b+d,c+e,b+d-f,c+e),a.lineTo(b+f,c+e),a.quadTo(b,c+e,b,c+e-f),a.lineTo(b,c+f),a.quadTo(b,c,b+f,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),
a.close(),a.end(),a.fillAndStroke()}};var Ga=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&Ga.apply(this,arguments)};mxUtils.extend(t,mxRectangleShape);t.prototype.size=.1;t.prototype.isHtmlAllowed=function(){return!1};t.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=
a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=d;a.width-=2*d}return a};t.prototype.paintForeground=function(a,b,c,d,e){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.moveTo(b+d-f,c);a.lineTo(b+d-f,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.prototype.defaultShapes.process=t;mxUtils.extend(x,mxActor);x.prototype.size=.2;x.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.step=x;mxUtils.extend(w,mxHexagon);w.prototype.size=.25;w.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.prototype.defaultShapes.hexagon=w;mxUtils.extend(z,mxRectangleShape);z.prototype.isHtmlAllowed=function(){return!1};z.prototype.paintForeground=function(a,b,c,d,e){var f=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+f);a.lineTo(b+d/2,c+e-f);a.moveTo(b+f,c+e/2);a.lineTo(b+d-f,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.prototype.defaultShapes.plus=z;var Aa=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Aa.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+
1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&(a.setShadow(!1),Aa.apply(this,[a,b,c,d,e]))}};mxUtils.extend(y,mxRectangleShape);y.prototype.isHtmlAllowed=function(){return!1};y.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};y.prototype.paintForeground=function(a,b,c,
d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.prototype.defaultShapes[this.style["symbol"+f]];if(null!=g){var h=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],l=this.style["symbol"+f+"Width"],m=this.style["symbol"+f+"Height"],
sa=this.style["symbol"+f+"Spacing"]||0,n=this.style["symbol"+f+"VSpacing"]||sa,p=this.style["symbol"+f+"ArcSpacing"];null!=p&&(p*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),sa+=p,n+=p);var p=b,oa=c,p=h==mxConstants.ALIGN_CENTER?p+(d-l)/2:h==mxConstants.ALIGN_RIGHT?p+(d-l-sa):p+sa,oa=k==mxConstants.ALIGN_MIDDLE?oa+(e-m)/2:k==mxConstants.ALIGN_BOTTOM?oa+(e-m-n):oa+n;a.save();h=new g;h.style=this.style;g.prototype.paintVertexShape.call(h,a,p,oa,l,m);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.prototype.defaultShapes.ext=y;mxUtils.extend(u,mxCylinder);u.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.prototype.defaultShapes.message=u;mxUtils.extend(I,mxShape);I.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,
e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlActor=I;mxUtils.extend(L,mxShape);L.prototype.getLabelBounds=function(a){return new mxRectangle(a.x+a.width/6,a.y,5*a.width/6,a.height)};L.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();
a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.umlBoundary=L;mxUtils.extend(D,mxEllipse);D.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlEntity=D;mxUtils.extend(B,mxShape);B.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,
0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlDestroy=B;mxUtils.extend(E,mxShape);E.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,e/8,d,7*e/8);a.fillAndStroke()};E.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);
a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlControl=E;mxUtils.extend(C,mxRectangleShape);C.prototype.size=40;C.prototype.isHtmlAllowed=function(){return!1};C.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};C.prototype.paintBackground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,
"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,c,d,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=C&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,b,c,d,f),a.restore()));f<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+f),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};C.prototype.paintForeground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,
a,b,c,d,Math.min(e,f))};mxCellRenderer.prototype.defaultShapes.umlLifeline=C;mxUtils.extend(H,mxShape);H.prototype.width=60;H.prototype.height=30;H.prototype.corner=10;H.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.style,"width",this.width))*this.scale)),c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"height",this.height))*this.scale));return new mxRectangle(a.x,a.y,b,c)};H.prototype.paintBackground=function(a,b,c,d,
e){var f=this.corner,g=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height))));a.begin();a.moveTo(b,c);a.lineTo(b+g,c);a.lineTo(b+g,c+Math.max(0,h-1.5*f));a.lineTo(b+Math.max(0,g-f),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.prototype.defaultShapes.umlFrame=
H;mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=C.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};
mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&
(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)),a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.lineIntersection=function(a,b,c,d){var e=(d.y-c.y)*(b.x-a.x)-(d.x-c.x)*(b.y-a.y);if(0==e)return null;var f=a.y-c.y,f=((d.x-c.x)*f-(d.y-c.y)*(a.x-c.x))/e;c=a.x+f*(b.x-a.x);a=a.y+f*(b.y-a.y);return 0<=f&&1>=f?(f=d.x-c,d=d.y-a,{dist:Math.sqrt(d*d+f*f),p:new mxPoint(c,a)}):null};mxPerimeter.getPerimeterPoint=function(a,b,c){for(var d=
!1,e=0;e<a.length-1;e++){var f=mxPerimeter.lineIntersection(a[e],a[e+1],b,c);null!=f&&(!d||d.dist>f.dist)&&(d=f)}return d.p};mxPerimeter.ParallelogramPerimeter=function(a,b,c,d){var e=m.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.width*Math.max(0,Math.min(1,e));b=a.x;var g=a.y,e=a.width,h=a.height,f=[new mxPoint(b+f,g),new mxPoint(b+e,g),new mxPoint(b+e-f,g+h),new mxPoint(b,g+h),new mxPoint(b+f,g)],g=a.getCenterX();a=a.getCenterY();a=new mxPoint(g,a);d&&(c.x<b||c.x>b+e?
a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(f,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,c,d){var e=n.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.width*Math.max(0,Math.min(1,e));b=a.x;var g=a.y,e=a.width,h=a.height,f=[new mxPoint(b+f,g),new mxPoint(b+e-f,g),new mxPoint(b+e,g+h),new mxPoint(b,g+h),new mxPoint(b+f,g)],g=a.getCenterX();a=a.getCenterY();a=new mxPoint(g,a);
d&&(c.x<b||c.x>b+e?a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(f,a,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,c,d){var e=x.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.width*Math.max(0,Math.min(1,e));b=a.x;var g=a.y,e=a.width,h=a.height,k=a.getCenterX();a=a.getCenterY();f=[new mxPoint(b,g),new mxPoint(b+e-f,g),new mxPoint(b+e,a),new mxPoint(b+e-f,g+h),new mxPoint(b,g+h),new mxPoint(b+
f,a),new mxPoint(b,g)];a=new mxPoint(k,a);d&&(c.x<b||c.x>b+e?a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(f,a,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,c,d){var e=w.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.width*Math.max(0,Math.min(1,e));b=a.x;var g=a.y,e=a.width,h=a.height,k=a.getCenterX();a=a.getCenterY();f=[new mxPoint(b+f,g),new mxPoint(b+e-f,g),new mxPoint(b+e,a),new mxPoint(b+e-f,
g+h),new mxPoint(b+f,g+h),new mxPoint(b,a),new mxPoint(b+f,g)];a=new mxPoint(k,a);d&&(c.x<b||c.x>b+e?a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(f,a,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(M,mxShape);M.prototype.size=10;M.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,c);a.ellipse((d-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(d/2,f);a.lineTo(d/2,e);a.end();
a.stroke()};mxCellRenderer.prototype.defaultShapes.lollipop=M;mxUtils.extend(J,mxShape);J.prototype.size=10;J.prototype.inset=2;J.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.begin();a.moveTo(d/2,f+g);a.lineTo(d/2,e);a.end();a.stroke();a.begin();a.moveTo((d-f)/2-g,f/2);a.quadTo((d-f)/2-g,f+g,d/2,f+g);a.quadTo((d+f)/2+g,f+g,(d+f)/2+g,f/2);
a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.requires=J;mxUtils.extend(U,mxCylinder);U.prototype.jettyWidth=32;U.prototype.jettyHeight=12;U.prototype.redrawPath=function(a,b,c,d,e,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=g/2;var g=c+g/2,h=.3*e-b/2,k=.7*e-b/2;f?(a.moveTo(c,h),a.lineTo(g,h),a.lineTo(g,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(g,k),a.lineTo(g,k+b),a.lineTo(c,
k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e),a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.component=U;mxUtils.extend(S,mxDoubleEllipse);S.prototype.outerStroke=!0;S.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,
c,d,e),a.stroke())};mxCellRenderer.prototype.defaultShapes.endState=S;mxUtils.extend(aa,S);aa.prototype.outerStroke=!1;mxCellRenderer.prototype.defaultShapes.startState=aa;mxUtils.extend(A,mxArrowConnector);A.prototype.defaultWidth=4;A.prototype.isOpenEnded=function(){return!0};A.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};A.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.prototype.defaultShapes.link=
A;mxUtils.extend(v,mxArrowConnector);v.prototype.defaultWidth=10;v.prototype.defaultArrowWidth=20;v.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};v.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};v.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.prototype.defaultShapes.flexArrow=
v;mxUtils.extend(R,mxActor);R.prototype.size=30;R.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.manualInput=R;mxUtils.extend(K,mxRectangleShape);K.prototype.dx=20;K.prototype.dy=20;K.prototype.isHtmlAllowed=
function(){return!1};K.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);
a.end();a.stroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.internalStorage=K;mxUtils.extend(F,mxActor);F.prototype.dx=20;F.prototype.dy=20;F.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.prototype.defaultShapes.corner=F;mxUtils.extend(ca,mxActor);ca.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.prototype.defaultShapes.crossbar=ca;mxUtils.extend(N,mxActor);N.prototype.dx=
20;N.prototype.dy=20;N.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/
2,e),new mxPoint((d-b)/2,c),new mxPoint(0,c)],this.isRounded,f,!0);a.end()};mxCellRenderer.prototype.defaultShapes.tee=N;mxUtils.extend(G,mxActor);G.prototype.arrowWidth=.3;G.prototype.arrowSize=.2;G.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.prototype.defaultShapes.singleArrow=G;mxUtils.extend(Y,mxActor);Y.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",G.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"arrowSize",G.prototype.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.prototype.defaultShapes.doubleArrow=Y;mxUtils.extend(T,mxActor);T.prototype.size=.1;T.prototype.redrawPath=function(a,
b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.dataStorage=T;mxUtils.extend(Z,mxActor);Z.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.or=Z;mxUtils.extend(da,mxActor);da.prototype.redrawPath=function(a,
b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.xor=da;mxUtils.extend(P,mxActor);P.prototype.size=20;P.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,
e),new mxPoint(0,.8*b)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.loopLimit=P;mxUtils.extend(ea,mxActor);ea.prototype.size=.375;ea.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()};
mxCellRenderer.prototype.defaultShapes.offPageConnector=ea;mxUtils.extend(W,mxEllipse);W.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.tapeData=W;mxUtils.extend(O,mxEllipse);O.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+
d,c+e/2);a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.orEllipse=O;mxUtils.extend(Q,mxEllipse);Q.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.sumEllipse=
Q;mxUtils.extend(fa,mxRhombus);fa.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.sortShape=fa;mxUtils.extend(V,mxEllipse);V.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,
c+e/2);a.close();a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.collate=V;mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=function(a,b,c,d,e){var f=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,c+e);a.moveTo(b,f);a.lineTo(b+10,f-5);a.moveTo(b,f);a.lineTo(b+10,f+5);a.moveTo(b,f);a.lineTo(b+d,f);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,f);a.lineTo(b+d-10,f-5);a.moveTo(b+d,f);a.lineTo(b+d-10,f+5);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.dimension=X;mxUtils.extend(va,
mxEllipse);va.prototype.paintVertexShape=function(a,b,c,d,e){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(b,c,d,e),a.fill(),"1"==mxUtils.getValue(this.style,"top","1")&&(a.begin(),a.moveTo(b,c),a.lineTo(b+d,c),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"right","1")&&(a.begin(),a.moveTo(b+d,c),a.lineTo(b+d,c+e),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"bottom","1")&&
(a.begin(),a.moveTo(b+d,c+e),a.lineTo(b,c+e),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"left","1")&&(a.begin(),a.moveTo(b,c+e),a.lineTo(b,c),a.end(),a.stroke()))};mxCellRenderer.prototype.defaultShapes.partialRectangle=va;mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/
2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.lineEllipse=pa;mxUtils.extend(qa,mxActor);qa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.delay=qa;mxUtils.extend(la,mxActor);la.prototype.size=.2;la.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,
"size",this.size))));b=(e-f)/2;c=b+f;var g=(d-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(d,b);a.lineTo(d,c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.cross=la;mxUtils.extend(ma,mxActor);ma.prototype.size=.25;ma.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,
e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.display=ma;mxUtils.extend(ja,mxConnector);ja.prototype.origPaintEdgeShape=ja.prototype.paintEdgeShape;ja.prototype.paintEdgeShape=function(a,b,c){var d=a.state.dashed,e=a.state.fixDash;ja.prototype.origPaintEdgeShape.apply(this,arguments);if(3<=a.state.strokeWidth){var f=mxUtils.getValue(this.style,"fillColor",null);null!=f&&(a.setStrokeColor(f),a.setStrokeWidth(a.state.strokeWidth-
2),a.setDashed(d,e),ja.prototype.origPaintEdgeShape.apply(this,arguments))}};mxCellRenderer.prototype.defaultShapes.filledEdge=ja;mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-
3*n/2-m/2);a.moveTo(d.x-m/2+n/2,d.y-n/2-m/2);a.lineTo(d.x-n/2-3*m/2,d.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",wa);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=wa.apply(this,arguments),p=e*(g+2*k),q=f*(g+2*k);return function(){n.apply(this,arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*p+e*k,m.y-2*q+f*k);a.moveTo(m.x-p-q+f*k,m.y-q+p-e*k);a.lineTo(m.x+q-p-f*k,m.y-q-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,
h,k,l){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,c,d,e,f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/
a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ba=function(a,b,c){return na(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=Math.round(2*b)/a.view.scale-c})},na=function(a,b,c,d,e){var f=a.absolutePoints,g=f.length-1,h=a.view.translate,k=a.view.scale,l=c?f[0]:f[g],m=c?f[1]:f[g-1],n=m.x-l.x,p=m.y-l.y,q=Math.sqrt(n*
n+p*p);return ba(a,b,function(a){a=d.call(this,q,n/q,p/q,l,m);return new mxPoint(a.x/k-h.x,a.y/k-h.y)},function(a,b,c){a=Math.sqrt(n*n+p*p);b.x=(b.x+h.x)*k;b.y=(b.y+h.y)*k;e.call(this,a,n/a,p/a,l,m,b,c)})},ha=function(a){return function(b){return[ba(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",G.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",G.prototype.arrowSize)));return new mxPoint(b.x+
(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(b.x+b.width-c.x)/b.width))})]}},ya=function(a,b,c){return function(d){var e=[ba(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,
c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ga(d));return e}},ra=function(a,b,c){c=null!=c?c:1;return function(d){var e=[ba(d,["size"],function(b){var c=parseFloat(mxUtils.getValue(this.state.style,"size",a));return new mxPoint(b.x+c*b.width,b.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(c,(b.x-a.x)/a.width))})];b&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ga(d));return e}},Ca=function(a){return function(b){var c=
[ba(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))})];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ga(b));return c}},ia=function(){return function(a){var b=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b}},ga=function(a,b){return ba(a,
[mxConstants.STYLE_ARCSIZE],function(c){var d=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/2,c.height/2),Math.min(c.width,c.height)*d),c.y+(null!=b?b:c.height/8))},function(a,b,c){this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(a.width-b.x+a.x)/Math.min(a.width,a.height))))})},ba=function(a,b,c,d,e){a=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);
a.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};a.getPosition=c;a.setPosition=d;a.ignoreGrid=null!=e?e:!0;return a},za={link:function(a){return[Ba(a,!0,10),Ba(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(na(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;
f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&
(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(na(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,
mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&
(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=
mxConstants.NONE&&(c.push(na(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,
f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(na(a,
["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-
d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=
a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},swimlane:function(a){var b=[ba(a,[mxConstants.STYLE_STARTSIZE],function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(),b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,
c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ga(a,c/2))}return b},label:ia(),ext:ia(),rectangle:ia(),triangle:ia(),rhombus:ia(),umlLifeline:function(a){return[ba(a,
["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",C.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){var b=[ba(a,["width","height"],function(a){var b=Math.max(H.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",H.prototype.width))),c=Math.max(1.5*H.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,
"height",H.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(H.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*H.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},process:function(a){var b=[ba(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",t.prototype.size))));
return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},cross:function(a){return[ba(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",la.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,a.height);this.state.style.size=
Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",e.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b=[ba(a,["size"],
function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",R.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},dataStorage:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size))));return new mxPoint(a.x+
(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},internalStorage:function(a){var b=[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",K.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",K.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=
Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},corner:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",F.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",F.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=
Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},tee:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",N.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",N.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},
singleArrow:ha(1),doubleArrow:ha(.5),folder:function(a){return[ba(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",g.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",g.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c=Math.max(0,Math.min(a.width,
b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},document:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,
Math.min(1,(a.y+a.height-b.y)/a.height))})]},tape:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ea.prototype.size))));return new mxPoint(a.getCenterX(),
a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:ra(x.prototype.size,!0),hexagon:ra(w.prototype.size,!0,.5),curlyBracket:ra(p.prototype.size,!1),display:ra(ma.prototype.size,!1),cube:ya(1,a.prototype.size,!1),card:ya(.5,h.prototype.size,!0),loopLimit:ya(.5,P.prototype.size,!0),trapezoid:Ca(.5),parallelogram:Ca(1)};Graph.createHandle=ba;Graph.handleFactory=za;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&
this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==this.state.view.graph.cellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=za[a];if(null!=a)return a(this.state)}return null};mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==this.state.view.graph.cellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);
a=za[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var ta=new mxPoint(1,0),ua=new mxPoint(1,0),ha=mxUtils.toRadians(-30),ta=mxUtils.getRotatedPoint(ta,Math.cos(ha),Math.sin(ha)),ha=mxUtils.toRadians(-150),ua=mxUtils.getRotatedPoint(ua,Math.cos(ha),Math.sin(ha));mxEdgeStyle.IsometricConnector=function(a,b,c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,
d));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=c&&(g=new mxPoint(c.getCenterX(),c.getCenterY()));var k=ta.x,l=ta.y,m=ua.x,n=ua.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,c){a-=q.x;var d=b-q.y;b=(n*a-m*d)/(k*n-l*m);a=(l*a-k*d)/(l*m-k*n);p?(c&&(q=new mxPoint(q.x+k*b,q.y+l*b),e.push(q)),q=new mxPoint(q.x+m*a,q.y+n*a)):(c&&(q=new mxPoint(q.x+m*a,q.y+n*a),e.push(q)),q=new mxPoint(q.x+k*b,q.y+l*b));e.push(q)};
var q=h;null==d&&(d=new mxPoint(h.x+(g.x-h.x)/2,h.y+(g.y-h.y)/2));a(d.x,d.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Ha=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(a);c.snapToTerminals=!1;return c}return Ha.apply(this,arguments)};b.prototype.constraints=[];c.prototype.constraints=[];mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,
0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),
new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;
mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;e.prototype.constraints=mxRectangleShape.prototype.constraints;h.prototype.constraints=mxRectangleShape.prototype.constraints;a.prototype.constraints=mxRectangleShape.prototype.constraints;g.prototype.constraints=mxRectangleShape.prototype.constraints;K.prototype.constraints=mxRectangleShape.prototype.constraints;
T.prototype.constraints=mxRectangleShape.prototype.constraints;W.prototype.constraints=mxEllipse.prototype.constraints;O.prototype.constraints=mxEllipse.prototype.constraints;Q.prototype.constraints=mxEllipse.prototype.constraints;pa.prototype.constraints=mxEllipse.prototype.constraints;R.prototype.constraints=mxRectangleShape.prototype.constraints;qa.prototype.constraints=mxRectangleShape.prototype.constraints;ma.prototype.constraints=mxRectangleShape.prototype.constraints;P.prototype.constraints=
mxRectangleShape.prototype.constraints;ea.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,
.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];I.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,
1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];U.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];f.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,
.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];x.prototype.constraints=
[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(.1,.25),!1),new mxConnectionConstraint(new mxPoint(.2,.5),!1),new mxConnectionConstraint(new mxPoint(.1,.75),!1),new mxConnectionConstraint(new mxPoint(.9,.25),!1),
new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.9,.75),!1)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];M.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;
mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,
0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(.125,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(.125,.75),!1),new mxConnectionConstraint(new mxPoint(.875,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.875,.75),!1),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,
1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,
.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;n.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,
.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;N.prototype.constraints=null;F.prototype.constraints=null;ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,
1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];G.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];Y.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),
new mxConnectionConstraint(new mxPoint(1,.5),!1)];la.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];C.prototype.constraints=null;Z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,
.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];da.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)]})();
e),new mxPoint(0,b)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.card=h;mxUtils.extend(k,mxActor);k.prototype.size=.4;k.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,b/2);a.quadTo(d/4,1.4*b,d/2,b/2);a.quadTo(3*d/4,b*(1-1.4),d,b/2);a.lineTo(d,e-b/2);a.quadTo(3*d/4,e-1.4*b,d/2,e-b/2);a.quadTo(d/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};k.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"size",this.size),c=a.width,d=a.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return b*=d,new mxRectangle(a.x,a.y+b,c,d-2*b);b*=c;return new mxRectangle(a.x+b,a.y,c-2*b,d)}return a};mxCellRenderer.prototype.defaultShapes.tape=k;mxUtils.extend(l,mxActor);l.prototype.size=.3;l.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));a.moveTo(0,0);a.lineTo(d,0);a.lineTo(d,e-b/2);a.quadTo(3*d/4,e-1.4*b,d/2,e-b/2);a.quadTo(d/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.document=l;mxUtils.extend(m,mxActor);m.prototype.size=.2;m.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,
e),new mxPoint(b,0),new mxPoint(d,0),new mxPoint(d-b,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.parallelogram=m;mxUtils.extend(n,mxActor);n.prototype.size=.2;n.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,e)],this.isRounded,
c,!0)};mxCellRenderer.prototype.defaultShapes.trapezoid=n;mxUtils.extend(p,mxActor);p.prototype.size=.5;p.prototype.redrawPath=function(a,b,c,d,e){a.setFillColor(null);b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(b,0),new mxPoint(b,e/2),new mxPoint(0,e/2),new mxPoint(b,e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);
a.end()};mxCellRenderer.prototype.defaultShapes.curlyBracket=p;mxUtils.extend(r,mxActor);r.prototype.redrawPath=function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.parallelMarker=r;q.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};q.prototype.close=
function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};q.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};q.prototype.curveTo=function(a,b,c,d,e,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=f};q.prototype.arcTo=function(a,b,c,d,e,f,g){this.originalArcTo.apply(this.canvas,arguments);
this.lastX=f;this.lastY=g};q.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),f=Math.sqrt(d*d+e*e);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var g=Math.round(f/10),h=this.defaultVariation;5>g&&(g=5,h/=3);for(var k=c(a-this.lastX)*d/g,c=c(b-this.lastY)*e/g,d=d/f,e=e/f,f=0;f<g;f++){var l=(Math.random()-.5)*h;this.originalLineTo.call(this.canvas,
k*f+this.lastX-l*e,c*f+this.lastY-l*d)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};q.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};var Ca=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=
function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new q(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ca.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Da=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Da.apply(this,arguments)};
var Ea=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,c,d,e){if(null==a.handJiggle)Ea.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1),a.begin(),this.isRounded?(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.min(d*f,e*f),a.moveTo(b+f,c),a.lineTo(b+d-f,c),a.quadTo(b+d,c,b+d,c+f),a.lineTo(b+d,c+e-f),a.quadTo(b+d,c+e,b+d-f,c+e),a.lineTo(b+f,c+e),a.quadTo(b,c+e,b,c+e-f),a.lineTo(b,c+f),a.quadTo(b,c,b+f,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};var Fa=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&
Fa.apply(this,arguments)};mxUtils.extend(t,mxRectangleShape);t.prototype.size=.1;t.prototype.isHtmlAllowed=function(){return!1};t.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=
mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=d;a.width-=2*d}return a};t.prototype.paintForeground=function(a,b,c,d,e){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);
a.moveTo(b+d-f,c);a.lineTo(b+d-f,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.prototype.defaultShapes.process=t;mxUtils.extend(x,mxActor);x.prototype.size=.2;x.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/
2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.step=x;mxUtils.extend(w,mxHexagon);w.prototype.size=.25;w.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,
e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.prototype.defaultShapes.hexagon=w;mxUtils.extend(z,mxRectangleShape);z.prototype.isHtmlAllowed=function(){return!1};z.prototype.paintForeground=function(a,b,c,d,e){var f=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+f);a.lineTo(b+d/2,c+e-f);a.moveTo(b+f,c+e/2);a.lineTo(b+d-f,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.prototype.defaultShapes.plus=z;var za=mxRhombus.prototype.paintVertexShape;
mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){za.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&(a.setShadow(!1),
za.apply(this,[a,b,c,d,e]))}};mxUtils.extend(y,mxRectangleShape);y.prototype.isHtmlAllowed=function(){return!1};y.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};y.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+
parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.prototype.defaultShapes[this.style["symbol"+f]];if(null!=g){var h=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],l=this.style["symbol"+f+"Width"],m=this.style["symbol"+f+"Height"],ra=this.style["symbol"+f+"Spacing"]||0,n=this.style["symbol"+f+"VSpacing"]||ra,p=this.style["symbol"+
f+"ArcSpacing"];null!=p&&(p*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),ra+=p,n+=p);var p=b,q=c,p=h==mxConstants.ALIGN_CENTER?p+(d-l)/2:h==mxConstants.ALIGN_RIGHT?p+(d-l-ra):p+ra,q=k==mxConstants.ALIGN_MIDDLE?q+(e-m)/2:k==mxConstants.ALIGN_BOTTOM?q+(e-m-n):q+n;a.save();h=new g;h.style=this.style;g.prototype.paintVertexShape.call(h,a,p,q,l,m);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.prototype.defaultShapes.ext=y;mxUtils.extend(u,
mxCylinder);u.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.prototype.defaultShapes.message=u;mxUtils.extend(I,mxShape);I.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);
a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlActor=I;mxUtils.extend(L,mxShape);L.prototype.getLabelBounds=function(a){return new mxRectangle(a.x+a.width/6,a.y,5*a.width/6,a.height)};L.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.umlBoundary=
L;mxUtils.extend(D,mxEllipse);D.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlEntity=D;mxUtils.extend(B,mxShape);B.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlDestroy=B;mxUtils.extend(E,
mxShape);E.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,e/8,d,7*e/8);a.fillAndStroke()};E.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.umlControl=E;mxUtils.extend(C,mxRectangleShape);
C.prototype.size=40;C.prototype.isHtmlAllowed=function(){return!1};C.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};C.prototype.paintBackground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,
a,b,c,d,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=C&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,b,c,d,f),a.restore()));f<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+f),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};C.prototype.paintForeground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,f))};mxCellRenderer.prototype.defaultShapes.umlLifeline=
C;mxUtils.extend(H,mxShape);H.prototype.width=60;H.prototype.height=30;H.prototype.corner=10;H.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.style,"width",this.width))*this.scale)),c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"height",this.height))*this.scale));return new mxRectangle(a.x,a.y,b,c)};H.prototype.paintBackground=function(a,b,c,d,e){var f=this.corner,g=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),h=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height))));a.begin();a.moveTo(b,c);a.lineTo(b+g,c);a.lineTo(b+g,c+Math.max(0,h-1.5*f));a.lineTo(b+Math.max(0,g-f),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.prototype.defaultShapes.umlFrame=H;mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=C.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,
"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=
function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)),a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",
mxPerimeter.BackbonePerimeter);mxPerimeter.lineIntersection=function(a,b,c,d){var e=(d.y-c.y)*(b.x-a.x)-(d.x-c.x)*(b.y-a.y);if(0==e)return null;var f=a.y-c.y,f=((d.x-c.x)*f-(d.y-c.y)*(a.x-c.x))/e;c=a.x+f*(b.x-a.x);a=a.y+f*(b.y-a.y);return 0<=f&&1>=f?(f=d.x-c,d=d.y-a,{dist:Math.sqrt(d*d+f*f),p:new mxPoint(c,a)}):null};mxPerimeter.getPerimeterPoint=function(a,b,c){for(var d=!1,e=0;e<a.length-1;e++){var f=mxPerimeter.lineIntersection(a[e],a[e+1],b,c);null!=f&&(!d||d.dist>f.dist)&&(d=f)}return d.p};mxPerimeter.ParallelogramPerimeter=
function(a,b,c,d){var e=m.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g)]):(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+
h,g),new mxPoint(f+h-e,g+k),new mxPoint(f,g+k),new mxPoint(f+e,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,c,d){var e=n.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,
mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h-e,g),new mxPoint(f+h,g+k),new mxPoint(f,g+k),new mxPoint(f+e,g)]):b==mxConstants.DIRECTION_WEST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g),new mxPoint(f+h-e,g+k),new mxPoint(f+e,g+k),new mxPoint(f,g)]):b==mxConstants.DIRECTION_NORTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g+e),new mxPoint(f+h,g),new mxPoint(f+h,
g+k),new mxPoint(f,g+k-e),new mxPoint(f,g+e)]):(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(f,g+k),new mxPoint(f,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxPerimeter.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,c,d){var e=x.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",
e));var f=a.x,g=a.y,h=a.width,k=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h-e,g),new mxPoint(f+h,a),new mxPoint(f+h-e,g+k),new mxPoint(f,g+k),new mxPoint(f+e,a),new mxPoint(f,g)]):b==mxConstants.DIRECTION_WEST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h,g),new mxPoint(f+
h-e,a),new mxPoint(f+h,g+k),new mxPoint(f+e,g+k),new mxPoint(f,a),new mxPoint(f+e,g)]):b==mxConstants.DIRECTION_NORTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g+e),new mxPoint(l,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k),new mxPoint(l,g+k-e),new mxPoint(f,g+k),new mxPoint(f,g+e)]):(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(l,g+e),new mxPoint(f+h,g),new mxPoint(f+h,g+k-e),new mxPoint(l,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g)]);l=new mxPoint(l,a);d&&(c.x<f||c.x>f+h?l.y=
c.y:l.x=c.x);return mxPerimeter.getPerimeterPoint(g,l,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,c,d){var e=w.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*
Math.max(0,Math.min(1,e)),g=[new mxPoint(l,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(l,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g+e),new mxPoint(l,g)]):(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h-e,g),new mxPoint(f+h,a),new mxPoint(f+h-e,g+k),new mxPoint(f+e,g+k),new mxPoint(f,a),new mxPoint(f+e,g)]);l=new mxPoint(l,a);d&&(c.x<f||c.x>f+h?l.y=c.y:l.x=c.x);return mxPerimeter.getPerimeterPoint(g,l,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);
mxUtils.extend(M,mxShape);M.prototype.size=10;M.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,c);a.ellipse((d-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(d/2,f);a.lineTo(d/2,e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.lollipop=M;mxUtils.extend(J,mxShape);J.prototype.size=10;J.prototype.inset=2;J.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),
g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.begin();a.moveTo(d/2,f+g);a.lineTo(d/2,e);a.end();a.stroke();a.begin();a.moveTo((d-f)/2-g,f/2);a.quadTo((d-f)/2-g,f+g,d/2,f+g);a.quadTo((d+f)/2+g,f+g,(d+f)/2+g,f/2);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.requires=J;mxUtils.extend(U,mxCylinder);U.prototype.jettyWidth=32;U.prototype.jettyHeight=12;U.prototype.redrawPath=function(a,b,c,d,e,f){var g=parseFloat(mxUtils.getValue(this.style,
"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=g/2;var g=c+g/2,h=.3*e-b/2,k=.7*e-b/2;f?(a.moveTo(c,h),a.lineTo(g,h),a.lineTo(g,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(g,k),a.lineTo(g,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e),a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.component=
U;mxUtils.extend(S,mxDoubleEllipse);S.prototype.outerStroke=!0;S.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.prototype.defaultShapes.endState=S;mxUtils.extend(aa,S);aa.prototype.outerStroke=!1;mxCellRenderer.prototype.defaultShapes.startState=aa;mxUtils.extend(A,mxArrowConnector);A.prototype.defaultWidth=4;A.prototype.isOpenEnded=
function(){return!0};A.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};A.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.prototype.defaultShapes.link=A;mxUtils.extend(v,mxArrowConnector);v.prototype.defaultWidth=10;v.prototype.defaultArrowWidth=20;v.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};v.prototype.getEndArrowWidth=
function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};v.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.prototype.defaultShapes.flexArrow=v;mxUtils.extend(R,mxActor);R.prototype.size=30;R.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.manualInput=R;mxUtils.extend(K,mxRectangleShape);K.prototype.dx=20;K.prototype.dy=20;K.prototype.isHtmlAllowed=function(){return!1};K.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);a.end();a.stroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.internalStorage=K;mxUtils.extend(F,mxActor);F.prototype.dx=20;F.prototype.dy=20;F.prototype.redrawPath=
function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.prototype.defaultShapes.corner=
F;mxUtils.extend(ca,mxActor);ca.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.prototype.defaultShapes.crossbar=ca;mxUtils.extend(N,mxActor);N.prototype.dx=20;N.prototype.dy=20;N.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));
parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/2,e),new mxPoint((d-b)/2,c),new mxPoint(0,c)],this.isRounded,f,!0);a.end()};mxCellRenderer.prototype.defaultShapes.tee=N;mxUtils.extend(G,mxActor);G.prototype.arrowWidth=.3;G.prototype.arrowSize=.2;G.prototype.redrawPath=function(a,
b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.prototype.defaultShapes.singleArrow=
G;mxUtils.extend(Y,mxActor);Y.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",G.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",G.prototype.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,
e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.prototype.defaultShapes.doubleArrow=Y;mxUtils.extend(T,mxActor);T.prototype.size=.1;T.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.dataStorage=T;mxUtils.extend(Z,
mxActor);Z.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.or=Z;mxUtils.extend(da,mxActor);da.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.xor=da;mxUtils.extend(P,mxActor);P.prototype.size=20;P.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.loopLimit=P;mxUtils.extend(ea,mxActor);ea.prototype.size=.375;ea.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()};mxCellRenderer.prototype.defaultShapes.offPageConnector=ea;mxUtils.extend(W,mxEllipse);W.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.tapeData=
W;mxUtils.extend(O,mxEllipse);O.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.orEllipse=O;mxUtils.extend(Q,mxEllipse);Q.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();
a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.sumEllipse=Q;mxUtils.extend(fa,mxRhombus);fa.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.sortShape=fa;mxUtils.extend(V,
mxEllipse);V.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()};mxCellRenderer.prototype.defaultShapes.collate=V;mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=function(a,b,c,d,e){var f=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,c+e);a.moveTo(b,f);a.lineTo(b+10,f-5);a.moveTo(b,f);a.lineTo(b+10,f+5);a.moveTo(b,f);
a.lineTo(b+d,f);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,f);a.lineTo(b+d-10,f-5);a.moveTo(b+d,f);a.lineTo(b+d-10,f+5);a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.dimension=X;mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(a,b,c,d,e){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(b,c,d,e),a.fill(),"1"==mxUtils.getValue(this.style,"top","1")&&(a.begin(),
a.moveTo(b,c),a.lineTo(b+d,c),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"right","1")&&(a.begin(),a.moveTo(b+d,c),a.lineTo(b+d,c+e),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"bottom","1")&&(a.begin(),a.moveTo(b+d,c+e),a.lineTo(b,c+e),a.end(),a.stroke()),"1"==mxUtils.getValue(this.style,"left","1")&&(a.begin(),a.moveTo(b,c+e),a.lineTo(b,c),a.end(),a.stroke()))};mxCellRenderer.prototype.defaultShapes.partialRectangle=ua;mxUtils.extend(oa,mxEllipse);oa.prototype.paintVertexShape=
function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.prototype.defaultShapes.lineEllipse=oa;mxUtils.extend(pa,mxActor);pa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.delay=
pa;mxUtils.extend(la,mxActor);la.prototype.size=.2;la.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-f)/2;c=b+f;var g=(d-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(d,b);a.lineTo(d,c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.cross=la;mxUtils.extend(ma,mxActor);ma.prototype.size=
.25;ma.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.display=ma;mxUtils.extend(ja,mxConnector);ja.prototype.origPaintEdgeShape=ja.prototype.paintEdgeShape;ja.prototype.paintEdgeShape=function(a,b,c){var d=a.state.dashed,e=a.state.fixDash;ja.prototype.origPaintEdgeShape.apply(this,
arguments);if(3<=a.state.strokeWidth){var f=mxUtils.getValue(this.style,"fillColor",null);null!=f&&(a.setStrokeColor(f),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(d,e),ja.prototype.origPaintEdgeShape.apply(this,arguments))}};mxCellRenderer.prototype.defaultShapes.filledEdge=ja;mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("cross",
function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.moveTo(d.x-m/2+n/2,d.y-n/2-m/2);a.lineTo(d.x-n/2-3*m/2,d.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",va);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=va.apply(this,arguments),p=e*(g+2*k),q=f*(g+2*k);return function(){n.apply(this,arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*p+e*
k,m.y-2*q+f*k);a.moveTo(m.x-p-q+f*k,m.y-q+p-e*k);a.lineTo(m.x+q-p-f*k,m.y-q-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,h,k,l){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,c,d,e,
f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Aa=function(a,b,c){return na(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=Math.round(2*b)/a.view.scale-c})},na=
function(a,b,c,d,e){var f=a.absolutePoints,g=f.length-1,h=a.view.translate,k=a.view.scale,l=c?f[0]:f[g],m=c?f[1]:f[g-1],n=m.x-l.x,p=m.y-l.y,q=Math.sqrt(n*n+p*p);return ba(a,b,function(a){a=d.call(this,q,n/q,p/q,l,m);return new mxPoint(a.x/k-h.x,a.y/k-h.y)},function(a,b,c){a=Math.sqrt(n*n+p*p);b.x=(b.x+h.x)*k;b.y=(b.y+h.y)*k;e.call(this,a,n/a,p/a,l,m,b,c)})},ha=function(a){return function(b){return[ba(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"arrowWidth",G.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",G.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(b.x+b.width-c.x)/b.width))})]}},xa=function(a,b,c){return function(d){var e=[ba(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,
parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ga(d));return e}},qa=function(a,b,c,d){c=null!=c?c:1;return function(e){var f=[ba(e,["size"],function(b){var c=parseFloat(mxUtils.getValue(this.state.style,"size",a));return new mxPoint(b.x+c*b.width,b.getCenterY())},
function(a,b){this.state.style.size=Math.max(0,Math.min(c,(b.x-a.x)/a.width))},null,d)];b&&mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(ga(e));return f}},Ba=function(a){return function(b){var c=[ba(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},null,!0)];mxUtils.getValue(b.style,
mxConstants.STYLE_ROUNDED,!1)&&c.push(ga(b));return c}},ia=function(){return function(a){var b=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b}},ga=function(a,b){return ba(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/2,c.height/2),Math.min(c.width,c.height)*d),c.y+(null!=b?b:c.height/
8))},function(a,b,c){this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(a.width-b.x+a.x)/Math.min(a.width,a.height))))})},ba=function(a,b,c,d,e,f){var g=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);g.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};g.getPosition=c;g.setPosition=d;g.ignoreGrid=null!=e?e:!0;if(f){var h=g.positionChanged;g.positionChanged=function(){h.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return g},
ya={link:function(a){return[Aa(a,!0,10),Aa(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(na(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*
a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-
parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(na(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*
a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||
(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(na(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-
a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*
c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(na(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*
a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/
a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},
swimlane:function(a){var b=[ba(a,[mxConstants.STYLE_STARTSIZE],function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(),b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,
Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ga(a,c/2))}return b},label:ia(),ext:ia(),rectangle:ia(),triangle:ia(),rhombus:ia(),umlLifeline:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",C.prototype.size))));return new mxPoint(a.getCenterX(),
a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){var b=[ba(a,["width","height"],function(a){var b=Math.max(H.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",H.prototype.width))),c=Math.max(1.5*H.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",H.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(H.prototype.corner,
Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*H.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},process:function(a){var b=[ba(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",t.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,
mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},cross:function(a){return[ba(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",la.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[ba(a,["size"],function(a){var b=
Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",e.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b=[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",R.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,
b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},dataStorage:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size))));return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},internalStorage:function(a){var b=
[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",K.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",K.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},corner:function(a){return[ba(a,
["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",F.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",F.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},tee:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,
"dx",N.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",N.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},singleArrow:ha(1),doubleArrow:ha(.5),folder:function(a){return[ba(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,
"tabWidth",g.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",g.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c=Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=
Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},document:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},tape:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size))));
return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ea.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:qa(x.prototype.size,!0,null,!0),hexagon:qa(w.prototype.size,
!0,.5,!0),curlyBracket:qa(p.prototype.size,!1),display:qa(ma.prototype.size,!1),cube:xa(1,a.prototype.size,!1),card:xa(.5,h.prototype.size,!0),loopLimit:xa(.5,P.prototype.size,!0),trapezoid:Ba(.5),parallelogram:Ba(1)};Graph.createHandle=ba;Graph.handleFactory=ya;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==this.state.view.graph.cellRenderer.defaultShapes[a]&&
null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=ya[a];if(null!=a)return a(this.state)}return null};mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==this.state.view.graph.cellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=ya[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var sa=
new mxPoint(1,0),ta=new mxPoint(1,0),ha=mxUtils.toRadians(-30),sa=mxUtils.getRotatedPoint(sa,Math.cos(ha),Math.sin(ha)),ha=mxUtils.toRadians(-150),ta=mxUtils.getRotatedPoint(ta,Math.cos(ha),Math.sin(ha));mxEdgeStyle.IsometricConnector=function(a,b,c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,d));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=c&&(g=new mxPoint(c.getCenterX(),
c.getCenterY()));var k=sa.x,l=sa.y,m=ta.x,n=ta.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,c){a-=q.x;var d=b-q.y;b=(n*a-m*d)/(k*n-l*m);a=(l*a-k*d)/(l*m-k*n);p?(c&&(q=new mxPoint(q.x+k*b,q.y+l*b),e.push(q)),q=new mxPoint(q.x+m*a,q.y+n*a)):(c&&(q=new mxPoint(q.x+m*a,q.y+n*a),e.push(q)),q=new mxPoint(q.x+k*b,q.y+l*b));e.push(q)};var q=h;null==d&&(d=new mxPoint(h.x+(g.x-h.x)/2,h.y+(g.y-h.y)/2));a(d.x,d.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",
mxEdgeStyle.IsometricConnector);var Ga=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(a);c.snapToTerminals=!1;return c}return Ga.apply(this,arguments)};b.prototype.constraints=[];c.prototype.constraints=[];mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,
.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,
0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;
z.prototype.constraints=mxRectangleShape.prototype.constraints;e.prototype.constraints=mxRectangleShape.prototype.constraints;h.prototype.constraints=mxRectangleShape.prototype.constraints;a.prototype.constraints=mxRectangleShape.prototype.constraints;g.prototype.constraints=mxRectangleShape.prototype.constraints;K.prototype.constraints=mxRectangleShape.prototype.constraints;T.prototype.constraints=mxRectangleShape.prototype.constraints;W.prototype.constraints=mxEllipse.prototype.constraints;O.prototype.constraints=
mxEllipse.prototype.constraints;Q.prototype.constraints=mxEllipse.prototype.constraints;oa.prototype.constraints=mxEllipse.prototype.constraints;R.prototype.constraints=mxRectangleShape.prototype.constraints;pa.prototype.constraints=mxRectangleShape.prototype.constraints;ma.prototype.constraints=mxRectangleShape.prototype.constraints;P.prototype.constraints=mxRectangleShape.prototype.constraints;ea.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,
.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),
!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];I.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];U.prototype.constraints=
[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,
1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,
1),!0)];f.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),
!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];x.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(.1,.25),!0),new mxConnectionConstraint(new mxPoint(.2,.5),!0),new mxConnectionConstraint(new mxPoint(.1,.75),!0),new mxConnectionConstraint(new mxPoint(.9,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.9,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];M.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),
new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(.125,.25),!0),new mxConnectionConstraint(new mxPoint(0,
.5),!0),new mxConnectionConstraint(new mxPoint(.125,.75),!0),new mxConnectionConstraint(new mxPoint(.875,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.875,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,
.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,
.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;n.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),
!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;N.prototype.constraints=null;F.prototype.constraints=null;ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,
.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];G.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];Y.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];la.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,
.5),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];C.prototype.constraints=null;Z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];da.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,
.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)]})();

View file

@ -1407,12 +1407,15 @@ mxArchiMate3CommNetw.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo
mxArchiMate3Path.prototype.cst={PATH:"mxgraph.archimate3.path"};mxArchiMate3Path.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Path.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.2*b,c);a.lineTo(0,.5*c);a.lineTo(.2*b,0);a.moveTo(.8*b,c);a.lineTo(b,.5*c);a.lineTo(.8*b,0);a.stroke();a.setDashed(!0);a.begin();a.moveTo(0,.5*c);a.lineTo(b,.5*c);a.stroke()};
mxCellRenderer.registerShape(mxArchiMate3Path.prototype.cst.PATH,mxArchiMate3Path);function mxShapeArrows2Arrow(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=this.dy=.5;this.notch=0}mxUtils.extend(mxShapeArrows2Arrow,mxActor);mxShapeArrows2Arrow.prototype.cst={ARROW:"mxgraph.arrows2.arrow"};
mxShapeArrows2Arrow.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=.5*c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));e=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));var f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));a.begin();a.moveTo(0,d);a.lineTo(b-e,d);a.lineTo(b-e,0);a.lineTo(b,.5*c);a.lineTo(b-e,c);a.lineTo(b-e,c-d);a.lineTo(0,c-d);a.lineTo(f,.5*c);a.close();a.fillAndStroke()};
mxCellRenderer.registerShape(mxShapeArrows2Arrow.prototype.cst.ARROW,mxShapeArrows2Arrow);mxShapeArrows2Arrow.prototype.constraints=null;
mxShapeArrows2Arrow.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=a.width,e=a.height,b,c,f=this.direction||mxConstants.DIRECTION_EAST;mxUtils.getValue(this.style,"flipH",!1)&&(f==mxConstants.DIRECTION_WEST?f=mxConstants.DIRECTION_EAST:f==mxConstants.DIRECTION_EAST&&(f=mxConstants.DIRECTION_WEST));mxUtils.getValue(this.style,"flipV",!1)&&(f==mxConstants.DIRECTION_NORTH?f=mxConstants.DIRECTION_SOUTH:f==mxConstants.DIRECTION_SOUTH&&(f=mxConstants.DIRECTION_NORTH));
f==mxConstants.DIRECTION_NORTH||f==mxConstants.DIRECTION_SOUTH?(b=.5*d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))))):(b=.5*e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))));return f==mxConstants.DIRECTION_EAST?new mxRectangle(a.x,a.y+b,d-c,e-2*b):f==mxConstants.DIRECTION_WEST?
new mxRectangle(a.x+c,a.y+b,d-c,e-2*b):f==mxConstants.DIRECTION_NORTH?new mxRectangle(a.x+b,a.y+c,d-2*b,e-c):new mxRectangle(a.x+b,a.y,d-2*b,e-c)}return a};mxCellRenderer.registerShape(mxShapeArrows2Arrow.prototype.cst.ARROW,mxShapeArrows2Arrow);mxShapeArrows2Arrow.prototype.constraints=null;
Graph.handleFactory[mxShapeArrows2Arrow.prototype.cst.ARROW]=function(a){var d=[Graph.createHandle(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+a.width-b,a.y+c*a.height/2)},function(a,b){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width-parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),
a.x+a.width-b.x)))/100;this.state.style.dy=Math.round(100*Math.max(0,Math.min(1,(b.y-a.y)/a.height*2)))/100})];a=Graph.createHandle(a,["notch"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(a.x+b,a.y+a.height/2)},function(a,b){this.state.style.notch=Math.round(100*Math.max(0,Math.min(a.width-parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)),b.x-a.x)))/100});d.push(a);return d};
function mxShapeArrows2TwoWayArrow(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=this.dy=.5}mxUtils.extend(mxShapeArrows2TwoWayArrow,mxActor);mxShapeArrows2TwoWayArrow.prototype.cst={TWO_WAY_ARROW:"mxgraph.arrows2.twoWayArrow"};
mxShapeArrows2TwoWayArrow.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=.5*c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));e=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.begin();a.moveTo(e,d);a.lineTo(b-e,d);a.lineTo(b-e,0);a.lineTo(b,.5*c);a.lineTo(b-e,c);a.lineTo(b-e,c-d);a.lineTo(e,c-d);a.lineTo(e,c);a.lineTo(0,.5*c);a.lineTo(e,0);a.close();a.fillAndStroke()};
mxCellRenderer.registerShape(mxShapeArrows2TwoWayArrow.prototype.cst.TWO_WAY_ARROW,mxShapeArrows2TwoWayArrow);mxShapeArrows2TwoWayArrow.prototype.constraints=null;
mxShapeArrows2TwoWayArrow.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=a.width,e=a.height,b=this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH,c,f;b?(c=.5*d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))))):(c=.5*e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),f=Math.max(0,Math.min(d,
parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))));return b?new mxRectangle(a.x+c,a.y+f,d-2*c,e-2*f):new mxRectangle(a.x+f,a.y+c,d-2*f,e-2*c)}return a};mxCellRenderer.registerShape(mxShapeArrows2TwoWayArrow.prototype.cst.TWO_WAY_ARROW,mxShapeArrows2TwoWayArrow);mxShapeArrows2TwoWayArrow.prototype.constraints=null;
Graph.handleFactory[mxShapeArrows2TwoWayArrow.prototype.cst.TWO_WAY_ARROW]=function(a){return[Graph.createHandle(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+a.width-d,a.y+b*a.height/2)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width/2,a.x+a.width-e.x)))/100;this.state.style.dy=Math.round(100*
Math.max(0,Math.min(1,(e.y-a.y)/a.height*2)))/100})]};function mxShapeArrows2StylisedArrow(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=this.dy=.5;this.notch=0;this.feather=.5}mxUtils.extend(mxShapeArrows2StylisedArrow,mxActor);mxShapeArrows2StylisedArrow.prototype.cst={STYLISED_ARROW:"mxgraph.arrows2.stylisedArrow"};
mxShapeArrows2StylisedArrow.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=.5*c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));e=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));var f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),g=.5*c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"feather",this.feather))));a.begin();a.moveTo(0,g);a.lineTo(b-e,d);a.lineTo(b-e-10,0);

View file

@ -29,4 +29,4 @@
"devDependencies": {
"electron": "^1.7.5"
}
}
}

View file

@ -56,6 +56,66 @@ mxShapeArrows2Arrow.prototype.paintVertexShape = function(c, x, y, w, h)
c.fillAndStroke();
};
mxShapeArrows2Arrow.prototype.getLabelBounds = function(rect)
{
if (mxUtils.getValue(this.style, "boundedLbl", false))
{
var w = rect.width;
var h = rect.height;
var dy, dx;
var direction = this.direction || mxConstants.DIRECTION_EAST;
if (mxUtils.getValue(this.style, "flipH", false))
{
if (direction == mxConstants.DIRECTION_WEST)
direction = mxConstants.DIRECTION_EAST;
else if (direction == mxConstants.DIRECTION_EAST)
direction = mxConstants.DIRECTION_WEST;
}
if (mxUtils.getValue(this.style, "flipV", false))
{
if (direction == mxConstants.DIRECTION_NORTH)
direction = mxConstants.DIRECTION_SOUTH;
else if (direction == mxConstants.DIRECTION_SOUTH)
direction = mxConstants.DIRECTION_NORTH;
}
if (direction == mxConstants.DIRECTION_NORTH
|| direction == mxConstants.DIRECTION_SOUTH)
{
dy = w * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy))));
dx = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx))));
}
else
{
dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy))));
dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx))));
}
if (direction == mxConstants.DIRECTION_EAST)
{
return new mxRectangle(rect.x, rect.y + dy, w - dx, h - 2 * dy);
}
else if (direction == mxConstants.DIRECTION_WEST)
{
return new mxRectangle(rect.x + dx, rect.y + dy, w - dx, h - 2 * dy);
}
else if (direction == mxConstants.DIRECTION_NORTH)
{
return new mxRectangle(rect.x + dy, rect.y + dx, w - 2 * dy, h - dx);
}
else
{
return new mxRectangle(rect.x + dy, rect.y, w - 2 * dy, h - dx);
}
}
return rect;
};
mxCellRenderer.registerShape(mxShapeArrows2Arrow.prototype.cst.ARROW, mxShapeArrows2Arrow);
mxShapeArrows2Arrow.prototype.constraints = null;
@ -143,6 +203,41 @@ mxShapeArrows2TwoWayArrow.prototype.paintVertexShape = function(c, x, y, w, h)
c.fillAndStroke();
};
mxShapeArrows2TwoWayArrow.prototype.getLabelBounds = function(rect)
{
if (mxUtils.getValue(this.style, "boundedLbl", false))
{
var w = rect.width;
var h = rect.height;
var vertical = this.direction == mxConstants.DIRECTION_NORTH
|| this.direction == mxConstants.DIRECTION_SOUTH;
var dy, dx;
if (vertical)
{
dy = w * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy))));
dx = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx))));
}
else
{
dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy))));
dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx))));
}
if (vertical)
{
return new mxRectangle(rect.x + dy, rect.y + dx, w - 2 * dy, h - 2 * dx);
}
else
{
return new mxRectangle(rect.x + dx, rect.y + dy, w - 2 * dx, h - 2 * dy);
}
}
return rect;
};
mxCellRenderer.registerShape(mxShapeArrows2TwoWayArrow.prototype.cst.TWO_WAY_ARROW, mxShapeArrows2TwoWayArrow);
mxShapeArrows2TwoWayArrow.prototype.constraints = null;