Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jgraph/drawio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Benson <david@draw.io>2022-06-08 19:07:47 +0300
committerDavid Benson <david@draw.io>2022-06-08 19:07:47 +0300
commitbf41618c37f9918078303e3a875961187b86f86b (patch)
tree5f62f7347bcc1869181ade4876ebc71252aba714
parent94c38a20c9ad67cc386fafda66b233ec33bbcbb8 (diff)
19.0.3 releasev19.0.3
-rw-r--r--ChangeLog7
-rw-r--r--VERSION2
-rw-r--r--src/main/webapp/electron.js59
-rw-r--r--src/main/webapp/js/app.min.js159
-rw-r--r--src/main/webapp/js/diagramly/App.js8
-rw-r--r--src/main/webapp/js/diagramly/Editor.js3
-rw-r--r--src/main/webapp/js/diagramly/ElectronApp.js120
-rw-r--r--src/main/webapp/js/diagramly/Minimal.js11
-rw-r--r--src/main/webapp/js/grapheditor/Graph.js4
-rw-r--r--src/main/webapp/js/integrate.min.js159
-rw-r--r--src/main/webapp/js/viewer-static.min.js467
-rw-r--r--src/main/webapp/js/viewer.min.js467
-rw-r--r--src/main/webapp/mxgraph/mxClient.js25
-rw-r--r--src/main/webapp/resources/dia.txt1
-rw-r--r--src/main/webapp/resources/dia_am.txt1
-rw-r--r--src/main/webapp/resources/dia_ar.txt1
-rw-r--r--src/main/webapp/resources/dia_bg.txt1
-rw-r--r--src/main/webapp/resources/dia_bn.txt1
-rw-r--r--src/main/webapp/resources/dia_bs.txt1
-rw-r--r--src/main/webapp/resources/dia_ca.txt1
-rw-r--r--src/main/webapp/resources/dia_cs.txt1
-rw-r--r--src/main/webapp/resources/dia_da.txt1
-rw-r--r--src/main/webapp/resources/dia_de.txt1
-rw-r--r--src/main/webapp/resources/dia_el.txt1
-rw-r--r--src/main/webapp/resources/dia_eo.txt1
-rw-r--r--src/main/webapp/resources/dia_es.txt1
-rw-r--r--src/main/webapp/resources/dia_et.txt1
-rw-r--r--src/main/webapp/resources/dia_eu.txt1
-rw-r--r--src/main/webapp/resources/dia_fa.txt1
-rw-r--r--src/main/webapp/resources/dia_fi.txt1
-rw-r--r--src/main/webapp/resources/dia_fil.txt1
-rw-r--r--src/main/webapp/resources/dia_fr.txt1
-rw-r--r--src/main/webapp/resources/dia_gl.txt1
-rw-r--r--src/main/webapp/resources/dia_gu.txt1
-rw-r--r--src/main/webapp/resources/dia_he.txt1
-rw-r--r--src/main/webapp/resources/dia_hi.txt1
-rw-r--r--src/main/webapp/resources/dia_hr.txt1
-rw-r--r--src/main/webapp/resources/dia_hu.txt1
-rw-r--r--src/main/webapp/resources/dia_i18n.txt1
-rw-r--r--src/main/webapp/resources/dia_id.txt1
-rw-r--r--src/main/webapp/resources/dia_it.txt1
-rw-r--r--src/main/webapp/resources/dia_ja.txt1
-rw-r--r--src/main/webapp/resources/dia_kn.txt1
-rw-r--r--src/main/webapp/resources/dia_ko.txt1
-rw-r--r--src/main/webapp/resources/dia_lt.txt1
-rw-r--r--src/main/webapp/resources/dia_lv.txt1
-rw-r--r--src/main/webapp/resources/dia_ml.txt1
-rw-r--r--src/main/webapp/resources/dia_mr.txt1
-rw-r--r--src/main/webapp/resources/dia_ms.txt1
-rw-r--r--src/main/webapp/resources/dia_my.txt1
-rw-r--r--src/main/webapp/resources/dia_nl.txt1
-rw-r--r--src/main/webapp/resources/dia_no.txt1
-rw-r--r--src/main/webapp/resources/dia_pl.txt1
-rw-r--r--src/main/webapp/resources/dia_pt-br.txt1
-rw-r--r--src/main/webapp/resources/dia_pt.txt1
-rw-r--r--src/main/webapp/resources/dia_ro.txt1
-rw-r--r--src/main/webapp/resources/dia_ru.txt1
-rw-r--r--src/main/webapp/resources/dia_si.txt1
-rw-r--r--src/main/webapp/resources/dia_sk.txt1
-rw-r--r--src/main/webapp/resources/dia_sl.txt1
-rw-r--r--src/main/webapp/resources/dia_sr.txt1
-rw-r--r--src/main/webapp/resources/dia_sv.txt1
-rw-r--r--src/main/webapp/resources/dia_sw.txt1
-rw-r--r--src/main/webapp/resources/dia_ta.txt1
-rw-r--r--src/main/webapp/resources/dia_te.txt1
-rw-r--r--src/main/webapp/resources/dia_th.txt1
-rw-r--r--src/main/webapp/resources/dia_tr.txt1
-rw-r--r--src/main/webapp/resources/dia_uk.txt1
-rw-r--r--src/main/webapp/resources/dia_vi.txt1
-rw-r--r--src/main/webapp/resources/dia_zh-tw.txt1
-rw-r--r--src/main/webapp/resources/dia_zh.txt1
-rw-r--r--src/main/webapp/service-worker.js2
-rw-r--r--src/main/webapp/service-worker.js.map2
73 files changed, 843 insertions, 710 deletions
diff --git a/ChangeLog b/ChangeLog
index b184b4e8..a01384f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+08-JUN-2022: 19.0.3
+
+- Adds allowlist for allowed constructors in mxCodec
+- Fixes possible NPE with no local storage [2850]
+- Handles service worker permission error in promise
+- Adds fixedWidth to limit autosize to height [2732]
+
07-JUN-2022: 19.0.2
- Fixes isNode check, handling of HTML in node names
diff --git a/VERSION b/VERSION
index fc1a0092..dd7d7966 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-19.0.2 \ No newline at end of file
+19.0.3 \ No newline at end of file
diff --git a/src/main/webapp/electron.js b/src/main/webapp/electron.js
index 2c87190f..4b503c34 100644
--- a/src/main/webapp/electron.js
+++ b/src/main/webapp/electron.js
@@ -40,6 +40,7 @@ let enableSpellCheck = store.get('enableSpellCheck');
enableSpellCheck = enableSpellCheck != null? enableSpellCheck : isMac;
let enableStoreBkp = store.get('enableStoreBkp') != null? store.get('enableStoreBkp') : true;
let dialogOpen = false;
+let enablePlugins = false;
//Read config file
var queryObj = {
@@ -104,8 +105,8 @@ function createWindow (opt = {})
width: parseInt(lastWinSize[0]),
height: parseInt(lastWinSize[1]),
icon: `${__dirname}/images/drawlogo256.png`,
- webViewTag: false,
- 'web-security': true,
+ webviewTag: false,
+ webSecurity: true,
webPreferences: {
preload: `${__dirname}/electron-preload.js`,
spellcheck: enableSpellCheck,
@@ -241,7 +242,22 @@ app.on('ready', e =>
{
ipcMain.on('newfile', (event, arg) =>
{
- createWindow(arg)
+ let opts = {};
+
+ if (arg)
+ {
+ if (arg.width)
+ {
+ opts.width = arg.width;
+ }
+
+ if (arg.height)
+ {
+ opts.height = arg.height;
+ }
+ }
+
+ createWindow(opts);
})
let argv = process.argv
@@ -299,6 +315,8 @@ app.on('ready', e =>
'selects a page range (for PDF format only)', argsRange)
.option('-u, --uncompressed',
'Uncompressed XML output (for XML format only)')
+ .option('--enable-plugins',
+ 'Enable Plugins')
.parse(argv)
}
catch(e)
@@ -308,7 +326,8 @@ app.on('ready', e =>
}
var options = program.opts();
-
+ enablePlugins = options.enablePlugins;
+
//Start export mode?
if (options.export)
{
@@ -2044,6 +2063,8 @@ async function showSaveDialog(defaultPath, filters)
async function installPlugin(filePath)
{
+ if (!enablePlugins) return {};
+
var pluginsDir = path.join(getAppDataFolder(), '/plugins');
if (!fs.existsSync(pluginsDir))
@@ -2066,13 +2087,28 @@ async function installPlugin(filePath)
return {pluginName: pluginName, selDir: path.dirname(filePath)};
}
+function getPluginFile(plugin)
+{
+ if (!enablePlugins) return null;
+
+ const prefix = path.join(getAppDataFolder(), '/plugins/');
+ const pluginFile = path.join(prefix, plugin);
+
+ if (pluginFile.startsWith(prefix) && fs.existsSync(pluginFile))
+ {
+ return pluginFile;
+ }
+
+ return null;
+}
+
function uninstallPlugin(plugin)
{
- var pluginsFile = path.join(getAppDataFolder(), '/plugins', plugin);
+ const pluginFile = getPluginFile(plugin);
- if (fs.existsSync(pluginsFile))
+ if (pluginFile != null)
{
- fs.unlinkSync(pluginsFile);
+ fs.unlinkSync(pluginFile);
}
}
@@ -2240,9 +2276,6 @@ ipcMain.on("rendererReq", async (event, args) =>
case 'getFileDrafts':
ret = await getFileDrafts(args.fileObject);
break;
- case 'getAppDataFolder':
- ret = await getAppDataFolder();
- break;
case 'getDocumentsFolder':
ret = await getDocumentsFolder();
break;
@@ -2265,6 +2298,12 @@ ipcMain.on("rendererReq", async (event, args) =>
case 'uninstallPlugin':
ret = await uninstallPlugin(args.plugin);
break;
+ case 'getPluginFile':
+ ret = await getPluginFile(args.plugin);
+ break;
+ case 'isPluginsEnabled':
+ ret = enablePlugins;
+ break;
case 'dirname':
ret = await dirname(args.path);
break;
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index fb36a018..7ded5de6 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -469,7 +469,7 @@ if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==url
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content"]};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||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
-window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"19.0.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"19.0.3",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&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:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2<navigator.maxTouchPoints,IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,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:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==
@@ -574,10 +574,10 @@ STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",STYLE_LABEL_
STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",
STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_SWIMLANE_HEAD:"swimlaneHead",STYLE_SWIMLANE_BODY:"swimlaneBody",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",
STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",
-STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",
-STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",STYLE_CLIP_PATH:"clipPath",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",
-SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",
-ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",
+STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FIXED_WIDTH:"fixedWidth",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",
+STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",STYLE_CLIP_PATH:"clipPath",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",
+SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",
+ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",
EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};
function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};
mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};
@@ -1630,9 +1630,9 @@ mxGraph.prototype.swapBounds=function(a,b){if(null!=a){var c=this.model.getGeome
mxGraph.prototype.updateAlternateBounds=function(a,b,c){if(null!=a&&null!=b){c=this.getCurrentCellStyle(a);if(null==b.alternateBounds){var d=b;this.collapseToPreferredSize&&(a=this.getPreferredSizeForCell(a),null!=a&&(d=a,a=mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE),0<a&&(d.height=Math.max(d.height,a))));b.alternateBounds=new mxRectangle(0,0,d.width,d.height)}if(null!=b.alternateBounds){b.alternateBounds.x=b.x;b.alternateBounds.y=b.y;var e=mxUtils.toRadians(c[mxConstants.STYLE_ROTATION]||0);
0!=e&&(c=b.alternateBounds.getCenterX()-b.getCenterX(),d=b.alternateBounds.getCenterY()-b.getCenterY(),a=Math.cos(e),e=Math.sin(e),b.alternateBounds.x+=a*c-e*d-c,b.alternateBounds.y+=e*c+a*d-d)}}};mxGraph.prototype.addAllEdges=function(a){var b=a.slice();return mxUtils.removeDuplicates(b.concat(this.getAllEdges(a)))};
mxGraph.prototype.getAllEdges=function(a){var b=[];if(null!=a)for(var c=0;c<a.length;c++){for(var d=this.model.getEdgeCount(a[c]),e=0;e<d;e++)b.push(this.model.getEdgeAt(a[c],e));d=this.model.getChildren(a[c]);b=b.concat(this.getAllEdges(d))}return b};mxGraph.prototype.updateCellSize=function(a,b){b=null!=b?b:!1;this.model.beginUpdate();try{this.cellSizeUpdated(a,b),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",a,"ignoreChildren",b))}finally{this.model.endUpdate()}return a};
-mxGraph.prototype.cellSizeUpdated=function(a,b){if(null!=a){this.model.beginUpdate();try{var c=this.getPreferredSizeForCell(a),d=this.model.getGeometry(a);if(null!=c&&null!=d){var e=this.isCellCollapsed(a);d=d.clone();if(this.isSwimlane(a)){var f=this.getCellStyle(a),g=this.model.getStyle(a);null==g&&(g="");mxUtils.getValue(f,mxConstants.STYLE_HORIZONTAL,!0)?(g=mxUtils.setStyle(g,mxConstants.STYLE_STARTSIZE,c.height+8),e&&(d.height=c.height+8),d.width=c.width):(g=mxUtils.setStyle(g,mxConstants.STYLE_STARTSIZE,
-c.width+8),e&&(d.width=c.width+8),d.height=c.height);this.model.setStyle(a,g)}else{var k=this.view.createState(a),l=k.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,m=this.getVerticalAlign(k);"fixed"==k.style[mxConstants.STYLE_ASPECT]&&(c.height=Math.round(d.height*c.width*100/d.width)/100);l==mxConstants.ALIGN_RIGHT?d.x+=d.width-c.width:l==mxConstants.ALIGN_CENTER&&(d.x+=Math.round((d.width-c.width)/2));m==mxConstants.ALIGN_BOTTOM?d.y+=d.height-c.height:m==mxConstants.ALIGN_MIDDLE&&(d.y+=
-Math.round((d.height-c.height)/2));d.width=c.width;d.height=c.height}if(!b&&!e){var n=this.view.getBounds(this.model.getChildren(a));if(null!=n){var p=this.view.translate,r=this.view.scale,q=(n.y+n.height)/r-d.y-p.y;d.width=Math.max(d.width,(n.x+n.width)/r-d.x-p.x);d.height=Math.max(d.height,q)}}this.cellsResized([a],[d],!1)}}finally{this.model.endUpdate()}}};
+mxGraph.prototype.cellSizeUpdated=function(a,b){if(null!=a){this.model.beginUpdate();try{var c=this.getCellStyle(a),d=this.model.getGeometry(a);if(null!=d){var e=mxUtils.getValue(c,mxConstants.STYLE_FIXED_WIDTH,!1),f=this.getPreferredSizeForCell(a,e?d.width:null);if(null!=f){var g=this.isCellCollapsed(a);d=d.clone();if(this.isSwimlane(a)){var k=this.model.getStyle(a);null==k&&(k="");mxUtils.getValue(c,mxConstants.STYLE_HORIZONTAL,!0)?(k=mxUtils.setStyle(k,mxConstants.STYLE_STARTSIZE,f.height+8),g&&
+(d.height=f.height+8),e||(d.width=f.width)):(k=mxUtils.setStyle(k,mxConstants.STYLE_STARTSIZE,f.width+8),g&&!e&&(d.width=f.width+8),d.height=f.height);this.model.setStyle(a,k)}else{var l=this.view.createState(a),m=l.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,n=this.getVerticalAlign(l);"fixed"==l.style[mxConstants.STYLE_ASPECT]&&(f.height=Math.round(d.height*f.width*100/d.width)/100);n==mxConstants.ALIGN_BOTTOM?d.y+=d.height-f.height:n==mxConstants.ALIGN_MIDDLE&&(d.y+=Math.round((d.height-
+f.height)/2));d.height=f.height;e||(m==mxConstants.ALIGN_RIGHT?d.x+=d.width-f.width:m==mxConstants.ALIGN_CENTER&&(d.x+=Math.round((d.width-f.width)/2)),d.width=f.width)}if(!b&&!g){var p=this.view.getBounds(this.model.getChildren(a));if(null!=p){var r=this.view.translate,q=this.view.scale,t=(p.x+p.width)/q-d.x-r.x;d.height=Math.max(d.height,(p.y+p.height)/q-d.y-r.y);e||(d.width=Math.max(d.width,t))}}this.cellsResized([a],[d],!1)}}}finally{this.model.endUpdate()}}};
mxGraph.prototype.getPreferredSizeForCell=function(a,b){var c=null;if(null!=a){var d=this.view.createState(a),e=d.style;if(!this.model.isEdge(a)){var f=e[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE;a=c=0;null==this.getImage(d)&&null==e[mxConstants.STYLE_IMAGE]||e[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(e[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(c+=parseFloat(e[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),e[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&
(a+=parseFloat(e[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize));c+=2*(e[mxConstants.STYLE_SPACING]||0);c+=e[mxConstants.STYLE_SPACING_LEFT]||0;c+=e[mxConstants.STYLE_SPACING_RIGHT]||0;a+=2*(e[mxConstants.STYLE_SPACING]||0);a+=e[mxConstants.STYLE_SPACING_TOP]||0;a+=e[mxConstants.STYLE_SPACING_BOTTOM]||0;var g=this.getFoldingImage(d);null!=g&&(c+=g.width+8);g=this.cellRenderer.getLabelValue(d);null!=g&&0<g.length?(this.isHtmlLabel(d.cell)||(g=mxUtils.htmlEntities(g,!1)),g=g.replace(/\n/g,
"<br>"),d=mxUtils.getSizeForString(g,f,e[mxConstants.STYLE_FONTFAMILY],b,e[mxConstants.STYLE_FONTSTYLE]),b=d.width+c,d=d.height+a,mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)||(e=d,d=b,b=e),this.gridEnabled&&(b=this.snap(b+this.gridSize/2),d=this.snap(d+this.gridSize/2)),c=new mxRectangle(0,0,b,d)):(e=4*this.gridSize,c=new mxRectangle(0,0,e,e))}}return c};mxGraph.prototype.resizeCell=function(a,b,c){return this.resizeCells([a],[b],c)[0]};
@@ -2217,12 +2217,13 @@ mxCellHighlight.prototype.repaint=function(){null!=this.state&&null!=this.shape&
"0"),this.shape.strokewidth=this.getStrokeWidth()/this.state.view.scale,this.shape.outline=!0),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),this.shape.redraw())};mxCellHighlight.prototype.hide=function(){this.highlight(null)};mxCellHighlight.prototype.highlight=function(a){this.state!=a&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=a,null!=this.state&&this.drawHighlight())};
mxCellHighlight.prototype.isHighlightAt=function(a,b){var c=!1;if(null!=this.shape&&null!=document.elementFromPoint)for(a=document.elementFromPoint(a,b);null!=a;){if(a==this.shape.node){c=!0;break}a=a.parentNode}return c};mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler);this.graph.getView().removeListener(this.repaintHandler);this.graph.getModel().removeListener(this.repaintHandler);null!=this.shape&&(this.shape.destroy(),this.shape=null)};
var mxCodecRegistry={codecs:[],aliases:[],register:function(a){if(null!=a){var b=a.getName();mxCodecRegistry.codecs[b]=a;var c=mxUtils.getFunctionName(a.template.constructor);c!=b&&mxCodecRegistry.addAlias(c,b)}return a},addAlias:function(a,b){mxCodecRegistry.aliases[a]=b},getCodec:function(a){var b=null;if(null!=a){b=mxUtils.getFunctionName(a);var c=mxCodecRegistry.aliases[b];null!=c&&(b=c);b=mxCodecRegistry.codecs[b];if(null==b)try{b=new mxObjectCodec(new a),mxCodecRegistry.register(b)}catch(d){}}return b}};
-function mxCodec(a){this.document=a||mxUtils.createXmlDocument();this.objects=[]}mxCodec.prototype.document=null;mxCodec.prototype.objects=null;mxCodec.prototype.elements=null;mxCodec.prototype.encodeDefaults=!1;mxCodec.prototype.putObject=function(a,b){return this.objects[a]=b};mxCodec.prototype.getObject=function(a){var b=null;null!=a&&(b=this.objects[a],null==b&&(b=this.lookup(a),null==b&&(a=this.getElementById(a),null!=a&&(b=this.decode(a)))));return b};mxCodec.prototype.lookup=function(a){return null};
-mxCodec.prototype.getElementById=function(a){this.updateElements();return this.elements[a]};mxCodec.prototype.updateElements=function(){null==this.elements&&(this.elements={},null!=this.document.documentElement&&this.addElement(this.document.documentElement))};
+function mxCodec(a){this.document=a||mxUtils.createXmlDocument();this.objects=[]}mxCodec.allowlist=null;mxCodec.prototype.document=null;mxCodec.prototype.objects=null;mxCodec.prototype.elements=null;mxCodec.prototype.encodeDefaults=!1;mxCodec.prototype.putObject=function(a,b){return this.objects[a]=b};mxCodec.prototype.getObject=function(a){var b=null;null!=a&&(b=this.objects[a],null==b&&(b=this.lookup(a),null==b&&(a=this.getElementById(a),null!=a&&(b=this.decode(a)))));return b};
+mxCodec.prototype.lookup=function(a){return null};mxCodec.prototype.getElementById=function(a){this.updateElements();return this.elements[a]};mxCodec.prototype.updateElements=function(){null==this.elements&&(this.elements={},null!=this.document.documentElement&&this.addElement(this.document.documentElement))};
mxCodec.prototype.addElement=function(a){if(a.nodeType==mxConstants.NODETYPE_ELEMENT){var b=a.getAttribute("id");if(null!=b)if(null==this.elements[b])this.elements[b]=a;else if(this.elements[b]!=a)throw Error(b+": Duplicate ID");}for(a=a.firstChild;null!=a;)this.addElement(a),a=a.nextSibling};mxCodec.prototype.getId=function(a){var b=null;null!=a&&(b=this.reference(a),null==b&&a instanceof mxCell&&(b=a.getId(),null==b&&(b=mxCellPath.create(a),0==b.length&&(b="root"))));return b};
mxCodec.prototype.reference=function(a){return null};mxCodec.prototype.encode=function(a){var b=null;if(null!=a&&null!=a.constructor){var c=mxCodecRegistry.getCodec(a.constructor);null!=c?b=c.encode(this,a):mxUtils.isNode(a)?b=mxUtils.importNode(this.document,a,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(a.constructor))}return b};
-mxCodec.prototype.decode=function(a,b){this.updateElements();var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=null;try{c=window[a.nodeName]}catch(d){}c=mxCodecRegistry.getCodec(c);null!=c?c=c.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}return c};mxCodec.prototype.encodeCell=function(a,b,c){b.appendChild(this.encode(a));if(null==c||c){c=a.getChildCount();for(var d=0;d<c;d++)this.encodeCell(a.getChildAt(d),b)}};
-mxCodec.prototype.isCellCodec=function(a){return null!=a&&"function"==typeof a.isCellCodec?a.isCellCodec():!1};mxCodec.prototype.decodeCell=function(a,b){b=null!=b?b:!0;var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=mxCodecRegistry.getCodec(a.nodeName);if(!this.isCellCodec(c))for(var d=a.firstChild;null!=d&&!this.isCellCodec(c);)c=mxCodecRegistry.getCodec(d.nodeName),d=d.nextSibling;this.isCellCodec(c)||(c=mxCodecRegistry.getCodec(mxCell));c=c.decode(this,a);b&&this.insertIntoGraph(c)}return c};
+mxCodec.prototype.decode=function(a,b){this.updateElements();var c=null;null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT&&(c=this.getConstructor(a.nodeName),c=mxCodecRegistry.getCodec(c),null!=c?c=c.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as")));return c};mxCodec.prototype.getConstructor=function(a){var b=null;try{null==mxCodec.allowlist||0<=mxUtils.indexOf(mxCodec.allowlist,a)?b=window[a]:null!=window.console&&console.error("mxCodec.getConstructor: "+a+" not allowed in mxCodec.allowlist")}catch(c){}return b};
+mxCodec.prototype.encodeCell=function(a,b,c){b.appendChild(this.encode(a));if(null==c||c){c=a.getChildCount();for(var d=0;d<c;d++)this.encodeCell(a.getChildAt(d),b)}};mxCodec.prototype.isCellCodec=function(a){return null!=a&&"function"==typeof a.isCellCodec?a.isCellCodec():!1};
+mxCodec.prototype.decodeCell=function(a,b){b=null!=b?b:!0;var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=mxCodecRegistry.getCodec(a.nodeName);if(!this.isCellCodec(c))for(var d=a.firstChild;null!=d&&!this.isCellCodec(c);)c=mxCodecRegistry.getCodec(d.nodeName),d=d.nextSibling;this.isCellCodec(c)||(c=mxCodecRegistry.getCodec(mxCell));c=c.decode(this,a);b&&this.insertIntoGraph(c)}return c};
mxCodec.prototype.insertIntoGraph=function(a){var b=a.parent,c=a.getTerminal(!0),d=a.getTerminal(!1);a.setTerminal(null,!1);a.setTerminal(null,!0);a.parent=null;if(null!=b){if(b==a)throw Error(b.id+": Self Reference");b.insert(a)}null!=c&&c.insertEdge(a,!0);null!=d&&d.insertEdge(a,!1)};mxCodec.prototype.setAttribute=function(a,b,c){null!=b&&null!=c&&a.setAttribute(b,c)};
function mxObjectCodec(a,b,c,d){this.template=a;this.exclude=null!=b?b:[];this.idrefs=null!=c?c:[];this.mapping=null!=d?d:[];this.reverse={};for(var e in this.mapping)this.reverse[this.mapping[e]]=e}mxObjectCodec.allowEval=!1;mxObjectCodec.prototype.template=null;mxObjectCodec.prototype.exclude=null;mxObjectCodec.prototype.idrefs=null;mxObjectCodec.prototype.mapping=null;mxObjectCodec.prototype.reverse=null;mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)};
mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor};mxObjectCodec.prototype.getFieldName=function(a){if(null!=a){var b=this.reverse[a];null!=b&&(a=b)}return a};mxObjectCodec.prototype.getAttributeName=function(a){if(null!=a){var b=this.mapping[a];null!=b&&(a=b)}return a};mxObjectCodec.prototype.isExcluded=function(a,b,c,d){return b==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,b)};
@@ -2827,9 +2828,9 @@ this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeList
Date.prototype.toISOString||function(){function a(b){b=String(b);1===b.length&&(b="0"+b);return b}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
Uint8Array.from||(Uint8Array.from=function(){var a=Object.prototype.toString,b=function(d){return"function"===typeof d||"[object Function]"===a.call(d)},f=Math.pow(2,53)-1;return function(d){var g=Object(d);if(null==d)throw new TypeError("Array.from requires an array-like object - not null or undefined");var e=1<arguments.length?arguments[1]:void 0,k;if("undefined"!==typeof e){if(!b(e))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(k=
arguments[2])}var n=Number(g.length);n=isNaN(n)?0:0!==n&&isFinite(n)?(0<n?1:-1)*Math.floor(Math.abs(n)):n;n=Math.min(Math.max(n,0),f);for(var u=b(this)?Object(new this(n)):Array(n),m=0,r;m<n;)r=g[m],u[m]=e?"undefined"===typeof k?e(r,m):e.call(k,r,m):r,m+=1;u.length=n;return u}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
-mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
-mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
-mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null};
+mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxCodec.allowlist="mxStylesheet Array mxGraphModel mxCell mxGeometry mxRectangle mxPoint".split(" ");mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();
+mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;
+mxGraphView.prototype.unit=mxConstants.POINTS;mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null};
mxImageShape.prototype.getImageDataUri=function(){var a=this.image;if("data:image/svg+xml;base64,"==a.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=a)this.clippedSvg=Graph.clipSvgDataUri(a,!0),this.clippedImage=a;a=this.clippedSvg}return a};
Graph=function(a,b,f,d,g,e){mxGraph.call(this,a,b,f,d);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=e?e:!1;a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(I){I=this.getCurrentCellStyle(I);
return null!=I?"1"==I.html||"wrap"==I[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var k=null,n=null,u=null,m=null,r=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(I,L){if("mouseDown"==L.getProperty("eventName")&&this.isEnabled()){I=L.getProperty("event");var H=I.getState();L=this.view.scale;if(!mxEvent.isAltDown(I.getEvent())&&null!=H)if(this.model.isEdge(H.cell))if(k=new mxPoint(I.getGraphX(),I.getGraphY()),r=this.isCellSelected(H.cell),u=H,n=I,null!=H.text&&null!=
@@ -11472,13 +11473,13 @@ E){t=E.editorUi.editor.graph.getCellStyle(1==t.vertices.length&&0==t.edges.lengt
{val:"width",dispName:"Width"}]},{name:"noLabel",dispName:"Hide Label",type:"bool",defVal:!1},{name:"labelPadding",dispName:"Label Padding",type:"float",defVal:0},{name:"direction",dispName:"Direction",type:"enum",defVal:"east",enumList:[{val:"north",dispName:"North"},{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraint",dispName:"Constraint",type:"enum",defVal:"none",enumList:[{val:"none",dispName:"None"},{val:"north",dispName:"North"},
{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraintRotation",dispName:"Rotate Constraint",type:"bool",defVal:!1},{name:"connectable",dispName:"Connectable",type:"bool",getDefaultValue:function(t,E){return E.editorUi.editor.graph.isCellConnectable(0<t.vertices.length&&0==t.edges.length?t.vertices[0]:null)},isVisible:function(t,E){return 0<t.vertices.length&&0==t.edges.length}},{name:"allowArrows",dispName:"Allow Arrows",type:"bool",defVal:!0},
{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"perimeter",dispName:"Perimeter",defVal:"none",type:"enum",enumList:[{val:"none",dispName:"None"},{val:"rectanglePerimeter",dispName:"Rectangle"},{val:"ellipsePerimeter",dispName:"Ellipse"},{val:"rhombusPerimeter",dispName:"Rhombus"},{val:"trianglePerimeter",dispName:"Triangle"},{val:"hexagonPerimeter2",dispName:"Hexagon"},{val:"lifelinePerimeter",dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",
-dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(t,E){return 1==t.vertices.length&&0==t.edges.length}},
-{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(t,E){t=1==t.vertices.length&&0==t.edges.length?t.vertices[0]:null;E=E.editorUi.editor.graph;return null!=t&&(E.isSwimlane(t)||0<E.model.getChildCount(t))},isVisible:function(t,E){return 1==t.vertices.length&&0==t.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(t,E){var K=1==t.vertices.length&&0==t.edges.length?t.vertices[0]:null;E=E.editorUi.editor.graph;return null!=K&&(E.isContainer(K)&&
-"0"!=t.style.collapsible||!E.isContainer(K)&&"1"==t.style.collapsible)},isVisible:function(t,E){return 1==t.vertices.length&&0==t.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(t,E){return 1==t.vertices.length&&0==t.edges.length&&!E.editorUi.editor.graph.isSwimlane(t.vertices[0])&&null==mxUtils.getValue(t.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,
-isVisible:function(t,E){E=E.editorUi.editor.graph.model;return 0<t.vertices.length?E.isVertex(E.getParent(t.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(t,E){t=0<t.vertices.length?
-E.editorUi.editor.graph.getCellGeometry(t.vertices[0]):null;return null!=t&&!t.relative}},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",
-type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(t,E){var K=mxUtils.getValue(t.style,mxConstants.STYLE_FILLCOLOR,null);return E.editorUi.editor.graph.isSwimlane(t.vertices[0])||null==K||K==mxConstants.NONE||0==mxUtils.getValue(t.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(t.style,mxConstants.STYLE_OPACITY,100)||null!=t.style.pointerEvents}},{name:"moveCells",
-dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(t,E){return 0<t.vertices.length&&E.editorUi.editor.graph.isContainer(t.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Style to be used for objects not in the CSV. If this is - then such objects are ignored,\n## else they are created using this as their style, eg. whiteSpace=wrap;html=1;\n#\n# unknownStyle: -\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Collapsed state for vertices. Possible values are true or false. Default is false.\n#\n# collapsed: false\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle, orgchart or a JSON string as used in\n## Layout, Apply. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
+dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(t,E){return 1==t.vertices.length&&0==t.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(t,
+E){t=1==t.vertices.length&&0==t.edges.length?t.vertices[0]:null;E=E.editorUi.editor.graph;return null!=t&&(E.isSwimlane(t)||0<E.model.getChildCount(t))},isVisible:function(t,E){return 1==t.vertices.length&&0==t.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(t,E){var K=1==t.vertices.length&&0==t.edges.length?t.vertices[0]:null;E=E.editorUi.editor.graph;return null!=K&&(E.isContainer(K)&&"0"!=t.style.collapsible||!E.isContainer(K)&&"1"==t.style.collapsible)},
+isVisible:function(t,E){return 1==t.vertices.length&&0==t.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(t,E){return 1==t.vertices.length&&0==t.edges.length&&!E.editorUi.editor.graph.isSwimlane(t.vertices[0])&&null==mxUtils.getValue(t.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(t,E){E=E.editorUi.editor.graph.model;return 0<t.vertices.length?
+E.isVertex(E.getParent(t.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(t,E){t=0<t.vertices.length?E.editorUi.editor.graph.getCellGeometry(t.vertices[0]):null;return null!=t&&!t.relative}},
+{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"fixedWidth",dispName:"Fixed Width",type:"bool",defVal:!1},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},
+{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(t,E){var K=mxUtils.getValue(t.style,mxConstants.STYLE_FILLCOLOR,null);return E.editorUi.editor.graph.isSwimlane(t.vertices[0])||null==K||K==mxConstants.NONE||0==mxUtils.getValue(t.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(t.style,mxConstants.STYLE_OPACITY,100)||
+null!=t.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(t,E){return 0<t.vertices.length&&E.editorUi.editor.graph.isContainer(t.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Style to be used for objects not in the CSV. If this is - then such objects are ignored,\n## else they are created using this as their style, eg. whiteSpace=wrap;html=1;\n#\n# unknownStyle: -\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Collapsed state for vertices. Possible values are true or false. Default is false.\n#\n# collapsed: false\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle, orgchart or a JSON string as used in\n## Layout, Apply. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
Editor.createRoughCanvas=function(t){var E=rough.canvas({getContext:function(){return t}});E.draw=function(K){var T=K.sets||[];K=K.options||this.getDefaultOptions();for(var P=0;P<T.length;P++){var Q=T[P];switch(Q.type){case "path":null!=K.stroke&&this._drawToContext(t,Q,K);break;case "fillPath":this._drawToContext(t,Q,K);break;case "fillSketch":this.fillSketch(t,Q,K)}}};E.fillSketch=function(K,T,P){var Q=t.state.strokeColor,S=t.state.strokeWidth,Y=t.state.strokeAlpha,ba=t.state.dashed,da=P.fillWeight;
0>da&&(da=P.strokeWidth/2);t.setStrokeAlpha(t.state.fillAlpha);t.setStrokeColor(P.fill||"");t.setStrokeWidth(da);t.setDashed(!1);this._drawToContext(K,T,P);t.setDashed(ba);t.setStrokeWidth(S);t.setStrokeColor(Q);t.setStrokeAlpha(Y)};E._drawToContext=function(K,T,P){K.begin();for(var Q=0;Q<T.ops.length;Q++){var S=T.ops[Q],Y=S.data;switch(S.op){case "move":K.moveTo(Y[0],Y[1]);break;case "bcurveTo":K.curveTo(Y[0],Y[1],Y[2],Y[3],Y[4],Y[5]);break;case "lineTo":K.lineTo(Y[0],Y[1])}}K.end();"fillPath"===
T.type&&P.filled?K.fill():K.stroke()};return E};(function(){function t(Q,S,Y){this.canvas=Q;this.rc=S;this.shape=Y;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,t.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,t.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,t.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
@@ -11710,7 +11711,7 @@ this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if
this.shadowVisible)}}else V.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible)};Editor.prototype.useCanvasForExport=!1;try{var U=document.createElement("canvas"),X=new Image;X.onload=function(){try{U.getContext("2d").drawImage(X,
0,0);var t=U.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=t&&6<t.length}catch(E){}};X.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(t){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};b.afterDecode=function(e,f,c){c.previousColor=c.color;c.previousImage=c.image;c.previousFormat=c.format;null!=c.foldingEnabled&&(c.foldingEnabled=!c.foldingEnabled);null!=c.mathEnabled&&(c.mathEnabled=!c.mathEnabled);null!=c.shadowVisible&&(c.shadowVisible=!c.shadowVisible);return c};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="19.0.2";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="19.0.3";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&
"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(d,g,k,l,p,q,x){q=null!=q?q:0<=d.indexOf("NetworkError")||0<=d.indexOf("SecurityError")||0<=d.indexOf("NS_ERROR_FAILURE")||0<=d.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -12586,7 +12587,7 @@ App.getStoredMode=function(){var b=null;null==b&&isLocalStorage&&(b=localStorage
"#G"==window.location.hash.substring(0,2)?mxscript("https://apis.google.com/js/api.js"):"0"!=urlParams.chrome||null!=window.location.hash&&"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"===window.location.hash.substring(0,45)||(window.DriveClient=null):window.DriveClient=null),"function"===typeof window.DropboxClient&&("0"!=urlParams.db&&isSvgBrowser&&(null==document.documentMode||9<document.documentMode)?App.mode==App.MODE_DROPBOX||null!=window.location.hash&&"#D"==window.location.hash.substring(0,
2)?mxscript(App.DROPBOX_URL,function(){mxscript(App.DROPINS_URL,null,"dropboxjs",App.DROPBOX_APPKEY,!0)}):"0"==urlParams.chrome&&(window.DropboxClient=null):window.DropboxClient=null),"function"===typeof window.OneDriveClient&&("0"!=urlParams.od&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?App.mode==App.MODE_ONEDRIVE||null!=window.location.hash&&"#W"==window.location.hash.substring(0,2)?mxscript(App.ONEDRIVE_URL):"0"==urlParams.chrome&&(window.OneDriveClient=
null):window.OneDriveClient=null),"function"===typeof window.TrelloClient&&("1"==urlParams.tr&&isSvgBrowser&&!mxClient.IS_IE11&&(null==document.documentMode||10<=document.documentMode)?App.mode==App.MODE_TRELLO||null!=window.location.hash&&"#T"==window.location.hash.substring(0,2)?mxscript(App.TRELLO_JQUERY_URL,function(){mxscript(App.TRELLO_URL)}):"0"==urlParams.chrome&&(window.TrelloClient=null):window.TrelloClient=null)))})();
-App.clearServiceWorker=function(b){navigator.serviceWorker.getRegistrations().then(function(e){if(null!=e&&0<e.length){for(var f=0;f<e.length;f++)e[f].unregister();null!=b&&b()}})};
+App.clearServiceWorker=function(b,e){navigator.serviceWorker.getRegistrations().then(function(f){if(null!=f&&0<f.length){for(var c=0;c<f.length;c++)f[c].unregister();null!=b&&b()}})["catch"](function(){null!=e&&e()})};
App.main=function(b,e){function f(l){mxUtils.getAll("1"!=urlParams.dev?[l]:[l,STYLE_PATH+"/default.xml"],function(p){function q(){var M=null!=e?e():new App(new Editor("0"==urlParams.chrome||"min"==uiTheme,null,null,null,"0"!=urlParams.chrome));if(null!=window.mxscript){if("function"===typeof window.DropboxClient&&null==window.Dropbox&&null!=window.DrawDropboxClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&isSvgBrowser&&(null==document.documentMode||
9<document.documentMode))mxscript(App.DROPBOX_URL,function(){mxscript(App.DROPINS_URL,function(){DrawDropboxClientCallback()},"dropboxjs",App.DROPBOX_APPKEY)});else if("undefined"===typeof window.Dropbox||"undefined"===typeof window.Dropbox.choose)window.DropboxClient=null;"function"===typeof window.OneDriveClient&&"undefined"===typeof OneDrive&&null!=window.DrawOneDriveClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&(null==navigator.userAgent||
0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.ONEDRIVE_URL,window.DrawOneDriveClientCallback):"undefined"===typeof window.OneDrive&&(window.OneDriveClient=null);"function"===typeof window.TrelloClient&&!mxClient.IS_IE11&&"undefined"===typeof window.Trello&&null!=window.DrawTrelloClientCallback&&"1"==urlParams.tr&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.TRELLO_JQUERY_URL,function(){mxscript(App.TRELLO_URL,
@@ -13104,7 +13105,7 @@ I.innerHTML="+";N.appendChild(I);mxUtils.write(N,mxResources.get("moreShapes"));
N.className="geTitle",I=document.createElement("span"),I.style.cssText="position:relative;top:6px;",mxUtils.write(I,mxResources.get("newLibrary")),N.appendChild(I),C.appendChild(N),mxEvent.addListener(N,"click",B.actions.get("newLibrary").funct),N=document.createElement("div"),N.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;",N.className="geTitle",I=document.createElement("span"),
I.style.cssText="position:relative;top:6px;",mxUtils.write(I,mxResources.get("openLibrary")),N.appendChild(I),C.appendChild(N),mxEvent.addListener(N,"click",B.actions.get("openLibrary").funct)):(N=G("newLibrary",mxResources.get("newLibrary")),N.style.boxSizing="border-box",N.style.paddingRight="6px",N.style.paddingLeft="6px",N.style.height="32px",N.style.left="0",N=G("openLibraryFrom",mxResources.get("openLibraryFrom")),N.style.borderLeft="1px solid lightgray",N.style.boxSizing="border-box",N.style.paddingRight=
"6px",N.style.paddingLeft="6px",N.style.height="32px",N.style.left="50%");C.appendChild(B.sidebar.container);C.style.overflow="hidden"}function f(B,C){if(EditorUi.windowed){var G=B.editor.graph;G.popupMenuHandler.hideMenu();if(null==B.sidebarWindow){C=Math.min(G.container.clientWidth-10,218);var N="1"==urlParams.embedInline?650:Math.min(G.container.clientHeight-40,650);B.sidebarWindow=new n(B,mxResources.get("shapes"),"1"==urlParams.sketch&&"1"!=urlParams.embedInline?66:10,"1"==urlParams.sketch&&
-"1"!=urlParams.embedInline?Math.max(30,(G.container.clientHeight-N)/2):56,C-6,N-6,function(I){e(B,I)});B.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){B.sidebarWindow.window.fit()}));B.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);B.sidebarWindow.window.setVisible(!0);B.getLocalData("sidebar",function(I){B.sidebar.showEntries(I,null,!0)});B.restoreLibraries()}else B.sidebarWindow.window.setVisible(null!=C?C:!B.sidebarWindow.window.isVisible())}else null==
+"1"!=urlParams.embedInline?Math.max(30,(G.container.clientHeight-N)/2):56,C-6,N-6,function(I){e(B,I)});B.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){B.sidebarWindow.window.fit()}));B.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);B.sidebarWindow.window.setVisible(!0);isLocalStorage&&B.getLocalData("sidebar",function(I){B.sidebar.showEntries(I,null,!0)});B.restoreLibraries()}else B.sidebarWindow.window.setVisible(null!=C?C:!B.sidebarWindow.window.isVisible())}else null==
B.sidebarElt&&(B.sidebarElt=m(),e(B,B.sidebarElt),B.sidebarElt.style.border="none",B.sidebarElt.style.width="210px",B.sidebarElt.style.borderRight="1px solid gray"),G=B.diagramContainer.parentNode,null!=B.sidebarElt.parentNode?(B.sidebarElt.parentNode.removeChild(B.sidebarElt),G.style.left="0px"):(G.parentNode.appendChild(B.sidebarElt),G.style.left=B.sidebarElt.style.width)}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=
null;else{var c=0;try{c=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}catch(B){}var m=function(){var B=document.createElement("div");B.className="geSidebarContainer";B.style.position="absolute";B.style.width="100%";B.style.height="100%";B.style.border="1px solid whiteSmoke";B.style.overflowX="hidden";B.style.overflowY="auto";return B},n=function(B,C,G,N,I,F,H){var R=m();H(R);this.window=new mxWindow(C,R,G,N,I,F,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);
this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(W,J){var V=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,U=this.table.firstChild.firstChild.firstChild;W=Math.max(0,Math.min(W,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-U.clientWidth-2));J=Math.max(0,Math.min(J,V-U.clientHeight-2));this.getX()==W&&this.getY()==J||mxWindow.prototype.setLocation.apply(this,
@@ -13158,60 +13159,60 @@ App.MODE_ATLAS?("1"!=urlParams.noExitBtn||B.mode==App.MODE_ATLAS)&&B.menus.addMe
this.addMenuItems(J,["upload"],V):B.menus.addMenuItems(J,["makeCopy"],V));B.menus.addMenuItems(J,["-","autosave"],V);null!=U&&U.isRevisionHistorySupported()&&B.menus.addMenuItems(J,["-","revisionHistory"],V)})));var I=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(J,V){I.funct(J,V);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||B.menus.addMenuItems(J,["publishLink"],V);B.mode!=App.MODE_ATLAS&&"1"!=urlParams.extAuth&&(J.addSeparator(V),B.menus.addSubmenu("embed",J,V))})));
var F=this.get("language");this.put("table",new Menu(mxUtils.bind(this,function(J,V){B.menus.addInsertTableCellItem(J,V)})));if("1"==urlParams.sketch){var H=this.get("units");this.put("units",new Menu(mxUtils.bind(this,function(J,V){H.funct(J,V);this.addMenuItems(J,["-","pageScale","-","ruler"],V)})))}this.put("extras",new Menu(mxUtils.bind(this,function(J,V){null!=F&&B.menus.addSubmenu("language",J,V);"1"!=urlParams.embed&&"1"!=urlParams.extAuth&&B.mode!=App.MODE_ATLAS&&B.menus.addSubmenu("theme",
J,V);B.menus.addSubmenu("units",J,V);J.addSeparator(V);"1"!=urlParams.sketch&&B.menus.addMenuItems(J,"pageScale ruler scrollbars - tooltips copyConnect collapseExpand".split(" "),V);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&B.mode!=App.MODE_ATLAS&&B.menus.addMenuItems(J,["-","showStartScreen","search","scratchpad"],V);J.addSeparator(V);"1"==urlParams.sketch?B.menus.addMenuItems(J,"configuration - copyConnect collapseExpand tooltips -".split(" "),
-V):(B.mode!=App.MODE_ATLAS&&B.menus.addMenuItem(J,"configuration",V),!B.isOfflineApp()&&isLocalStorage&&B.mode!=App.MODE_ATLAS&&B.menus.addMenuItem(J,"plugins",V));var U=B.getCurrentFile();null!=U&&U.isRealtimeEnabled()&&U.isRealtimeSupported()&&this.addMenuItems(J,["-","showRemoteCursors","shareCursor","-"],V);J.addSeparator(V);B.mode!=App.MODE_ATLAS&&this.addMenuItems(J,["fullscreen"],V);("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(J,["toggleDarkMode"],
-V);J.addSeparator(V)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(J,V){B.menus.addMenuItems(J,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),V)})));mxUtils.bind(this,function(){var J=this.get("insert"),V=J.funct;J.funct=function(U,X){"1"==urlParams.sketch?(B.insertTemplateEnabled&&!B.isOffline()&&B.menus.addMenuItems(U,["insertTemplate"],X),B.menus.addMenuItems(U,["insertImage","insertLink","-"],X),B.menus.addSubmenu("insertAdvanced",
-U,X,mxResources.get("advanced")),B.menus.addSubmenu("layout",U,X)):(V.apply(this,arguments),B.menus.addSubmenu("table",U,X))}})();var R="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),W=function(J,V,U,X){J.addItem(U,null,mxUtils.bind(this,function(){var t=new CreateGraphDialog(B,U,X);B.showDialog(t.container,620,420,!0,!1);t.init()}),V)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(J,V){for(var U=0;U<R.length;U++)"-"==R[U]?J.addSeparator(V):
-W(J,V,mxResources.get(R[U])+"...",R[U])})))};EditorUi.prototype.installFormatToolbar=function(B){var C=this.editor.graph,G=document.createElement("div");G.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";C.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(N,I){0<C.getSelectionCount()?(B.appendChild(G),G.innerHTML="Selected: "+
-C.getSelectionCount()):null!=G.parentNode&&G.parentNode.removeChild(G)}))};var u=!1;EditorUi.prototype.initFormatWindow=function(){if(!u&&null!=this.formatWindow){u=!0;this.formatWindow.window.setClosable(!1);var B=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){B.apply(this,arguments);this.minimized?(this.div.style.width="90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width=
-"240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(C){mxEvent.getSource(C)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var D=EditorUi.prototype.init;EditorUi.prototype.init=function(){function B(aa,ca,na){var la=F.menus.get(aa),qa=J.addMenu(mxResources.get(aa),mxUtils.bind(this,function(){la.funct.apply(this,arguments)}),W);qa.className=
-"1"==urlParams.sketch?"geToolbarButton":"geMenuItem";qa.style.display="inline-block";qa.style.boxSizing="border-box";qa.style.top="6px";qa.style.marginRight="6px";qa.style.height="30px";qa.style.paddingTop="6px";qa.style.paddingBottom="6px";qa.style.cursor="pointer";qa.setAttribute("title",mxResources.get(aa));F.menus.menuCreated(la,qa,"geMenuItem");null!=na?(qa.style.backgroundImage="url("+na+")",qa.style.backgroundPosition="center center",qa.style.backgroundRepeat="no-repeat",qa.style.backgroundSize=
-"24px 24px",qa.style.width="34px",qa.innerText=""):ca||(qa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",qa.style.backgroundPosition="right 6px center",qa.style.backgroundRepeat="no-repeat",qa.style.paddingRight="22px");return qa}function C(aa,ca,na,la,qa,ta){var ka=document.createElement("a");ka.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";ka.style.display="inline-block";ka.style.boxSizing="border-box";ka.style.height="30px";ka.style.padding="6px";ka.style.position=
-"relative";ka.style.verticalAlign="top";ka.style.top="0px";"1"==urlParams.sketch&&(ka.style.borderStyle="none",ka.style.boxShadow="none",ka.style.padding="6px",ka.style.margin="0px");null!=F.statusContainer?R.insertBefore(ka,F.statusContainer):R.appendChild(ka);null!=ta?(ka.style.backgroundImage="url("+ta+")",ka.style.backgroundPosition="center center",ka.style.backgroundRepeat="no-repeat",ka.style.backgroundSize="24px 24px",ka.style.width="34px"):mxUtils.write(ka,aa);mxEvent.addListener(ka,mxClient.IS_POINTER?
-"pointerdown":"mousedown",mxUtils.bind(this,function(Ja){Ja.preventDefault()}));mxEvent.addListener(ka,"click",function(Ja){"disabled"!=ka.getAttribute("disabled")&&ca(Ja);mxEvent.consume(Ja)});null==na&&(ka.style.marginRight="4px");null!=la&&ka.setAttribute("title",la);null!=qa&&(aa=function(){qa.isEnabled()?(ka.removeAttribute("disabled"),ka.style.cursor="pointer"):(ka.setAttribute("disabled","disabled"),ka.style.cursor="default")},qa.addListener("stateChanged",aa),H.addListener("enabledChanged",
-aa),aa());return ka}function G(aa,ca,na){na=document.createElement("div");na.className="geMenuItem";na.style.display="inline-block";na.style.verticalAlign="top";na.style.marginRight="6px";na.style.padding="0 4px 0 4px";na.style.height="30px";na.style.position="relative";na.style.top="0px";"1"==urlParams.sketch&&(na.style.boxShadow="none");for(var la=0;la<aa.length;la++)null!=aa[la]&&("1"==urlParams.sketch&&(aa[la].style.padding="10px 8px",aa[la].style.width="30px"),aa[la].style.margin="0px",aa[la].style.boxShadow=
-"none",na.appendChild(aa[la]));null!=ca&&mxUtils.setOpacity(na,ca);null!=F.statusContainer&&"1"!=urlParams.sketch?R.insertBefore(na,F.statusContainer):R.appendChild(na);return na}function N(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(P.style.left=58>T.offsetTop-T.offsetHeight/2?"70px":"10px");else{for(var aa=R.firstChild;null!=aa;){var ca=aa.nextSibling;"geMenuItem"!=aa.className&&"geItem"!=aa.className||aa.parentNode.removeChild(aa);aa=ca}W=R.firstChild;c=window.innerWidth||document.documentElement.clientWidth||
-document.body.clientWidth;aa=1E3>c||"1"==urlParams.sketch;var na=null;aa||(na=B("diagram"));ca=aa?B("diagram",null,Editor.drawLogoImage):null;null!=ca&&(na=ca);G([na,C(mxResources.get("shapes"),F.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),F.actions.get("image"),aa?Editor.shapesImage:null),C(mxResources.get("format"),F.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+F.actions.get("formatPanel").shortcut+")",F.actions.get("image"),aa?Editor.formatImage:null)],
-aa?60:null);ca=B("insert",!0,aa?E:null);G([ca,C(mxResources.get("delete"),F.actions.get("delete").funct,null,mxResources.get("delete"),F.actions.get("delete"),aa?Editor.trashImage:null)],aa?60:null);411<=c&&(G([Ka,Fa],60),520<=c&&G([sa,640<=c?C("",Da.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",Da,Editor.zoomInImage):null,640<=c?C("",Ca.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",Ca,Editor.zoomOutImage):null],60))}null!=na&&(mxEvent.disableContextMenu(na),mxEvent.addGestureListeners(na,
-mxUtils.bind(this,function(la){(mxEvent.isShiftDown(la)||mxEvent.isAltDown(la)||mxEvent.isMetaDown(la)||mxEvent.isControlDown(la)||mxEvent.isPopupTrigger(la))&&F.appIconClicked(la)}),null,null));ca=F.menus.get("language");null!=ca&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=c&&"1"!=urlParams.sketch?(null==wa&&(ca=J.addMenu("",ca.funct),ca.setAttribute("title",mxResources.get("language")),ca.className="geToolbarButton",ca.style.backgroundImage="url("+Editor.globeImage+")",ca.style.backgroundPosition=
-"center center",ca.style.backgroundRepeat="no-repeat",ca.style.backgroundSize="24px 24px",ca.style.position="absolute",ca.style.height="24px",ca.style.width="24px",ca.style.zIndex="1",ca.style.right="8px",ca.style.cursor="pointer",ca.style.top="1"==urlParams.embed?"12px":"11px",R.appendChild(ca),wa=ca),F.buttonContainer.style.paddingRight="34px"):(F.buttonContainer.style.paddingRight="4px",null!=wa&&(wa.parentNode.removeChild(wa),wa=null))}D.apply(this,arguments);"1"!=urlParams.embedInline&&this.doSetDarkMode(null!=
-urlParams.dark?1==urlParams.dark&&!mxClient.IS_IE&&!mxClient.IS_IE11:null!=mxSettings.settings.darkMode?mxSettings.settings.darkMode:window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches);var I=document.createElement("div");I.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";I.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(I);"1"==urlParams.sketch&&null!=this.sidebar&&this.isSettingsEnabled()&&
-(this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save()),this.sidebar.showPalette("search",mxSettings.settings.search));if("1"!=urlParams.sketch&&1E3<=c||null!=urlParams.clibs||null!=urlParams.libs||null!=urlParams["search-shapes"])f(this,!0),null!=this.sidebar&&null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes&&(this.sidebar.searchShapes(urlParams["search-shapes"]),this.sidebar.showEntries("search"));
-var F=this;mxWindow.prototype.fit=function(){if(Editor.inlineFullscreen||null==F.embedViewport)mxUtils.fit(this.div);else{var aa=parseInt(this.div.offsetLeft),ca=parseInt(this.div.offsetWidth),na=F.embedViewport.x+F.embedViewport.width,la=parseInt(this.div.offsetTop),qa=parseInt(this.div.offsetHeight),ta=F.embedViewport.y+F.embedViewport.height;this.div.style.left=Math.max(F.embedViewport.x,Math.min(aa,na-ca))+"px";this.div.style.top=Math.max(F.embedViewport.y,Math.min(la,ta-qa))+"px";this.div.style.height=
-Math.min(F.embedViewport.height,parseInt(this.div.style.height))+"px";this.div.style.width=Math.min(F.embedViewport.width,parseInt(this.div.style.width))+"px"}};this.keyHandler.bindAction(75,!0,"toggleShapes",!0);EditorUi.windowed&&("1"==urlParams.sketch||1E3<=c)&&"1"!=urlParams.embedInline&&(b(this,!0),"1"==urlParams.sketch?(this.initFormatWindow(),I=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,null!=this.formatWindow&&(1200>c||708>I)?this.formatWindow.window.toggleMinimized():
-this.formatWindow.window.setVisible(!0)):this.formatWindow.window.setVisible(!0));F=this;var H=F.editor.graph;F.toolbar=this.createToolbar(F.createDiv("geToolbar"));F.defaultLibraryName=mxResources.get("untitledLibrary");var R=document.createElement("div");R.className="geMenubarContainer";var W=null,J=new Menubar(F,R);F.statusContainer=F.createStatusContainer();F.statusContainer.style.position="relative";F.statusContainer.style.maxWidth="";F.statusContainer.style.marginTop="7px";F.statusContainer.style.marginLeft=
-"6px";F.statusContainer.style.color="gray";F.statusContainer.style.cursor="default";var V=F.hideCurrentMenu;F.hideCurrentMenu=function(){V.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};var U=F.descriptorChanged;F.descriptorChanged=function(){U.apply(this,arguments);var aa=F.getCurrentFile();if(null!=aa&&null!=aa.getTitle()){var ca=aa.getMode();"google"==ca?ca="googleDrive":"github"==ca?ca="gitHub":"gitlab"==ca?ca="gitLab":"onedrive"==ca&&(ca="oneDrive");ca=mxResources.get(ca);
-R.setAttribute("title",aa.getTitle()+(null!=ca?" ("+ca+")":""))}else R.removeAttribute("title")};F.setStatusText(F.editor.getStatus());R.appendChild(F.statusContainer);F.buttonContainer=document.createElement("div");F.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";R.appendChild(F.buttonContainer);F.menubarContainer=F.buttonContainer;F.tabContainer=document.createElement("div");F.tabContainer.className=
-"geTabContainer";F.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";I=F.diagramContainer.parentNode;var X=document.createElement("div");X.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";F.diagramContainer.style.top="1"==urlParams.sketch?"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){X.style.top="20px";F.titlebar=document.createElement("div");F.titlebar.style.cssText=
-"position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var t=document.createElement("div");t.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";F.titlebar.appendChild(t);I.appendChild(F.titlebar)}t=F.menus.get("viewZoom");var E="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,K="1"==urlParams.sketch?document.createElement("div"):
-null,T="1"==urlParams.sketch?document.createElement("div"):null,P="1"==urlParams.sketch?document.createElement("div"):null,Q=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();H.refresh();H.view.validateBackground()});F.addListener("darkModeChanged",Q);F.addListener("sketchModeChanged",Q);var S=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)P.style.left="10px",P.style.top="10px",T.style.left="10px",T.style.top="60px",K.style.top="10px",K.style.right="12px",K.style.left=
-"",F.diagramContainer.setAttribute("data-bounds",F.diagramContainer.style.top+" "+F.diagramContainer.style.left+" "+F.diagramContainer.style.width+" "+F.diagramContainer.style.height),F.diagramContainer.style.top="0px",F.diagramContainer.style.left="0px",F.diagramContainer.style.bottom="0px",F.diagramContainer.style.right="0px",F.diagramContainer.style.width="",F.diagramContainer.style.height="";else{var aa=F.diagramContainer.getAttribute("data-bounds");if(null!=aa){F.diagramContainer.style.background=
-"transparent";F.diagramContainer.removeAttribute("data-bounds");var ca=H.getGraphBounds();aa=aa.split(" ");F.diagramContainer.style.top=aa[0];F.diagramContainer.style.left=aa[1];F.diagramContainer.style.width=ca.width+50+"px";F.diagramContainer.style.height=ca.height+46+"px";F.diagramContainer.style.bottom="";F.diagramContainer.style.right="";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",rect:F.diagramContainer.getBoundingClientRect()}),"*");F.refresh()}P.style.left=F.diagramContainer.offsetLeft+
-"px";P.style.top=F.diagramContainer.offsetTop-P.offsetHeight-4+"px";T.style.display="";T.style.left=F.diagramContainer.offsetLeft-T.offsetWidth-4+"px";T.style.top=F.diagramContainer.offsetTop+"px";K.style.left=F.diagramContainer.offsetLeft+F.diagramContainer.offsetWidth-K.offsetWidth+"px";K.style.top=P.style.top;K.style.right="";F.bottomResizer.style.left=F.diagramContainer.offsetLeft+(F.diagramContainer.offsetWidth-F.bottomResizer.offsetWidth)/2+"px";F.bottomResizer.style.top=F.diagramContainer.offsetTop+
-F.diagramContainer.offsetHeight-F.bottomResizer.offsetHeight/2-1+"px";F.rightResizer.style.left=F.diagramContainer.offsetLeft+F.diagramContainer.offsetWidth-F.rightResizer.offsetWidth/2-1+"px";F.rightResizer.style.top=F.diagramContainer.offsetTop+(F.diagramContainer.offsetHeight-F.bottomResizer.offsetHeight)/2+"px"}F.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";F.rightResizer.style.visibility=F.bottomResizer.style.visibility;R.style.display="none";P.style.visibility="";K.style.visibility=
-""}),Y=mxUtils.bind(this,function(){Ha.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";S()});Q=mxUtils.bind(this,function(){Y();b(F,!0);F.initFormatWindow();var aa=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(aa.x+aa.width+4,aa.y)});F.addListener("inlineFullscreenChanged",Y);F.addListener("editInlineStart",
-Q);"1"==urlParams.embedInline&&F.addListener("darkModeChanged",Q);F.addListener("editInlineStop",mxUtils.bind(this,function(aa){F.diagramContainer.style.width="10px";F.diagramContainer.style.height="10px";F.diagramContainer.style.border="";F.bottomResizer.style.visibility="hidden";F.rightResizer.style.visibility="hidden";P.style.visibility="hidden";K.style.visibility="hidden";T.style.display="none"}));if(null!=F.hoverIcons){var ba=F.hoverIcons.update;F.hoverIcons.update=function(){H.freehand.isDrawing()||
-ba.apply(this,arguments)}}if(null!=H.freehand){var da=H.freehand.createStyle;H.freehand.createStyle=function(aa){return da.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){T.className="geToolbarContainer";K.className="geToolbarContainer";P.className="geToolbarContainer";R.className="geToolbarContainer";F.picker=T;var Z=!1;"1"!=urlParams.embed&&"atlassian"!=F.getServiceName()&&(mxEvent.addListener(R,"mouseenter",function(){F.statusContainer.style.display="inline-block"}),mxEvent.addListener(R,
-"mouseleave",function(){Z||(F.statusContainer.style.display="none")}));var ja=mxUtils.bind(this,function(aa){null!=F.notificationBtn&&(null!=aa?F.notificationBtn.setAttribute("title",aa):F.notificationBtn.removeAttribute("title"))});R.style.visibility=20>R.clientWidth?"hidden":"";F.editor.addListener("statusChanged",mxUtils.bind(this,function(){F.setStatusText(F.editor.getStatus());if("1"!=urlParams.embed&&"atlassian"!=F.getServiceName())if(F.statusContainer.style.display="inline-block",Z=!0,1==F.statusContainer.children.length&&
-""==F.editor.getStatus())R.style.visibility="hidden";else{if(0==F.statusContainer.children.length||1==F.statusContainer.children.length&&"function"===typeof F.statusContainer.firstChild.getAttribute&&null==F.statusContainer.firstChild.getAttribute("class")){var aa=null!=F.statusContainer.firstChild&&"function"===typeof F.statusContainer.firstChild.getAttribute?F.statusContainer.firstChild.getAttribute("title"):F.editor.getStatus();ja(aa);var ca=F.getCurrentFile();ca=null!=ca?ca.savingStatusKey:DrawioFile.prototype.savingStatusKey;
-aa==mxResources.get(ca)+"..."?(F.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(ca))+'..."src="'+Editor.tailSpin+'">',F.statusContainer.style.display="inline-block",Z=!0):6<F.buttonContainer.clientWidth&&(F.statusContainer.style.display="none",Z=!1)}else F.statusContainer.style.display="inline-block",ja(null),Z=!0;R.style.visibility=20>R.clientWidth&&!Z?"hidden":""}}));fa=B("diagram",null,Editor.menuImage);fa.style.boxShadow="none";fa.style.padding="6px";fa.style.margin=
-"0px";P.appendChild(fa);mxEvent.disableContextMenu(fa);mxEvent.addGestureListeners(fa,mxUtils.bind(this,function(aa){(mxEvent.isShiftDown(aa)||mxEvent.isAltDown(aa)||mxEvent.isMetaDown(aa)||mxEvent.isControlDown(aa)||mxEvent.isPopupTrigger(aa))&&this.appIconClicked(aa)}),null,null);F.statusContainer.style.position="";F.statusContainer.style.display="none";F.statusContainer.style.margin="0px";F.statusContainer.style.padding="6px 0px";F.statusContainer.style.maxWidth=Math.min(c-240,280)+"px";F.statusContainer.style.display=
-"inline-block";F.statusContainer.style.textOverflow="ellipsis";F.buttonContainer.style.position="";F.buttonContainer.style.paddingRight="0px";F.buttonContainer.style.display="inline-block";var ea=document.createElement("a");ea.style.padding="0px";ea.style.boxShadow="none";ea.className="geMenuItem";ea.style.display="inline-block";ea.style.width="40px";ea.style.height="12px";ea.style.marginBottom="-2px";ea.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";ea.style.backgroundPosition=
-"top center";ea.style.backgroundRepeat="no-repeat";ea.setAttribute("title","Minimize");var ha=!1,ma=mxUtils.bind(this,function(){T.innerText="";if(!ha){var aa=function(la,qa,ta){la=C("",la.funct,null,qa,la,ta);la.style.width="40px";la.style.opacity="0.7";return ca(la,null,"pointer")},ca=function(la,qa,ta){null!=qa&&la.setAttribute("title",qa);la.style.cursor=null!=ta?ta:"default";la.style.margin="2px 0px";T.appendChild(la);mxUtils.br(T);return la};ca(F.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
-60,30,"Text",mxResources.get("text"),!0,!1,null,!0,!0),mxResources.get("text")+" ("+Editor.ctrlKey+"+Shift+X)");ca(F.sidebar.createVertexTemplate("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontColor=#000000;darkOpacity=0.05;fillColor=#FFF9B2;strokeColor=none;fillStyle=solid;direction=west;gradientDirection=north;gradientColor=#FFF2A1;shadow=1;size=20;pointerEvents=1;",140,160,"",mxResources.get("note"),!0,!1,null,!0),mxResources.get("note"));ca(F.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
-160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");ca(F.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var la=new mxCell("",new mxGeometry(0,0,H.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");la.geometry.setTerminalPoint(new mxPoint(0,0),!0);la.geometry.setTerminalPoint(new mxPoint(la.geometry.width,
-0),!1);la.geometry.points=[];la.geometry.relative=!0;la.edge=!0;ca(F.sidebar.createEdgeTemplateFromCells([la],la.geometry.width,la.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));la=la.clone();la.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";la.geometry.width=H.defaultEdgeLength+20;la.geometry.setTerminalPoint(new mxPoint(0,20),!0);la.geometry.setTerminalPoint(new mxPoint(la.geometry.width,20),!1);la=
-ca(F.sidebar.createEdgeTemplateFromCells([la],la.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));la.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");la.style.paddingBottom="14px";la.style.marginBottom="14px"})();aa(F.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var na=F.actions.get("toggleShapes");aa(na,mxResources.get("shapes")+" ("+na.shortcut+")",E);fa=B("table",null,Editor.calendarImage);fa.style.boxShadow=
-"none";fa.style.opacity="0.7";fa.style.padding="6px";fa.style.margin="0px";fa.style.width="37px";ca(fa,null,"pointer");fa=B("insert",null,Editor.plusImage);fa.style.boxShadow="none";fa.style.opacity="0.7";fa.style.padding="6px";fa.style.margin="0px";fa.style.width="37px";ca(fa,null,"pointer")}"1"!=urlParams.embedInline&&T.appendChild(ea)});mxEvent.addListener(ea,"click",mxUtils.bind(this,function(){ha?(mxUtils.setPrefixedStyle(T.style,"transform","translate(0, -50%)"),T.style.padding="8px 6px 4px",
-T.style.top="50%",T.style.bottom="",T.style.height="",ea.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",ea.style.width="40px",ea.style.height="12px",ea.setAttribute("title","Minimize"),ha=!1,ma()):(T.innerText="",T.appendChild(ea),mxUtils.setPrefixedStyle(T.style,"transform","translate(0, 0)"),T.style.top="",T.style.bottom="12px",T.style.padding="0px",T.style.height="24px",ea.style.height="24px",ea.style.backgroundImage="url("+Editor.plusImage+")",ea.setAttribute("title",mxResources.get("insert")),
-ea.style.width="24px",ha=!0)}));ma();F.addListener("darkModeChanged",ma);F.addListener("sketchModeChanged",ma)}else F.editor.addListener("statusChanged",mxUtils.bind(this,function(){F.setStatusText(F.editor.getStatus())}));if(null!=t){var Aa=function(aa){mxEvent.isShiftDown(aa)?(F.hideCurrentMenu(),F.actions.get("smartFit").funct(),mxEvent.consume(aa)):mxEvent.isAltDown(aa)&&(F.hideCurrentMenu(),F.actions.get("customZoom").funct(),mxEvent.consume(aa))},Da=F.actions.get("zoomIn"),Ca=F.actions.get("zoomOut"),
-oa=F.actions.get("resetView");Q=F.actions.get("fullscreen");var Ba=F.actions.get("undo"),Ea=F.actions.get("redo"),Ka=C("",Ba.funct,null,mxResources.get("undo")+" ("+Ba.shortcut+")",Ba,Editor.undoImage),Fa=C("",Ea.funct,null,mxResources.get("redo")+" ("+Ea.shortcut+")",Ea,Editor.redoImage),Ha=C("",Q.funct,null,mxResources.get("fullscreen"),Q,Editor.fullscreenImage);if(null!=K){oa=function(){pa.style.display=null!=F.pages&&("0"!=urlParams.pages||1<F.pages.length||Editor.pagesVisible)?"inline-block":
-"none"};var Ia=function(){pa.innerText="";if(null!=F.currentPage){mxUtils.write(pa,F.currentPage.getName());var aa=null!=F.pages?F.pages.length:1,ca=F.getPageIndex(F.currentPage);ca=null!=ca?ca+1:1;var na=F.currentPage.getId();pa.setAttribute("title",F.currentPage.getName()+" ("+ca+"/"+aa+")"+(null!=na?" ["+na+"]":""))}};Ha.parentNode.removeChild(Ha);var Ma=F.actions.get("delete"),za=C("",Ma.funct,null,mxResources.get("delete"),Ma,Editor.trashImage);za.style.opacity="0.1";P.appendChild(za);Ma.addListener("stateChanged",
-function(){za.style.opacity=Ma.enabled?"":"0.1"});var ya=function(){Ka.style.display=0<F.editor.undoManager.history.length||H.isEditing()?"inline-block":"none";Fa.style.display=Ka.style.display;Ka.style.opacity=Ba.enabled?"":"0.1";Fa.style.opacity=Ea.enabled?"":"0.1"};P.appendChild(Ka);P.appendChild(Fa);Ba.addListener("stateChanged",ya);Ea.addListener("stateChanged",ya);ya();var pa=this.createPageMenuTab(!1,!0);pa.style.display="none";pa.style.position="";pa.style.marginLeft="";pa.style.top="";pa.style.left=
-"";pa.style.height="100%";pa.style.lineHeight="";pa.style.borderStyle="none";pa.style.padding="3px 0";pa.style.margin="0px";pa.style.background="";pa.style.border="";pa.style.boxShadow="none";pa.style.verticalAlign="top";pa.style.width="auto";pa.style.maxWidth="160px";pa.style.position="relative";pa.style.padding="6px";pa.style.textOverflow="ellipsis";pa.style.opacity="0.8";K.appendChild(pa);F.editor.addListener("pagesPatched",Ia);F.editor.addListener("pageSelected",Ia);F.editor.addListener("pageRenamed",
-Ia);F.editor.addListener("fileLoaded",Ia);Ia();F.addListener("fileDescriptorChanged",oa);F.addListener("pagesVisibleChanged",oa);F.editor.addListener("pagesPatched",oa);oa();oa=C("",Ca.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",Ca,Editor.zoomOutImage);K.appendChild(oa);var fa=J.addMenu("100%",t.funct);fa.setAttribute("title",mxResources.get("zoom"));fa.innerHTML="100%";fa.style.display="inline-block";fa.style.color="inherit";fa.style.cursor="pointer";fa.style.textAlign=
-"center";fa.style.whiteSpace="nowrap";fa.style.paddingRight="10px";fa.style.textDecoration="none";fa.style.verticalAlign="top";fa.style.padding="6px 0";fa.style.fontSize="14px";fa.style.width="40px";fa.style.opacity="0.4";K.appendChild(fa);t=C("",Da.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",Da,Editor.zoomInImage);K.appendChild(t);Q.visible&&(K.appendChild(Ha),mxEvent.addListener(document,"fullscreenchange",function(){Ha.style.backgroundImage="url("+(null!=document.fullscreenElement?
-Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(t=F.actions.get("exit"),K.appendChild(C("",t.funct,null,mxResources.get("exit"),t,Editor.closeImage)));F.tabContainer.style.visibility="hidden";R.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";P.style.cssText=
-"position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";K.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";X.appendChild(P);X.appendChild(K);T.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
+V):(B.mode!=App.MODE_ATLAS&&B.menus.addMenuItem(J,"configuration",V),!B.isOfflineApp()&&isLocalStorage&&B.mode!=App.MODE_ATLAS&&B.menus.addMenuItem(J,"plugins",V));EditorUi.isElectronApp&&B.menus.addMenuItems(J,["-","spellCheck","autoBkp","drafts","-"],V);var U=B.getCurrentFile();null!=U&&U.isRealtimeEnabled()&&U.isRealtimeSupported()&&this.addMenuItems(J,["-","showRemoteCursors","shareCursor","-"],V);J.addSeparator(V);B.mode!=App.MODE_ATLAS&&this.addMenuItems(J,["fullscreen"],V);("1"!=urlParams.embedInline&&
+Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(J,["toggleDarkMode"],V);J.addSeparator(V)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(J,V){B.menus.addMenuItems(J,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),V)})));mxUtils.bind(this,function(){var J=this.get("insert"),V=J.funct;J.funct=function(U,X){"1"==urlParams.sketch?(B.insertTemplateEnabled&&!B.isOffline()&&B.menus.addMenuItems(U,["insertTemplate"],X),
+B.menus.addMenuItems(U,["insertImage","insertLink","-"],X),B.menus.addSubmenu("insertAdvanced",U,X,mxResources.get("advanced")),B.menus.addSubmenu("layout",U,X)):(V.apply(this,arguments),B.menus.addSubmenu("table",U,X))}})();var R="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),W=function(J,V,U,X){J.addItem(U,null,mxUtils.bind(this,function(){var t=new CreateGraphDialog(B,U,X);B.showDialog(t.container,620,420,!0,!1);t.init()}),V)};this.put("insertLayout",
+new Menu(mxUtils.bind(this,function(J,V){for(var U=0;U<R.length;U++)"-"==R[U]?J.addSeparator(V):W(J,V,mxResources.get(R[U])+"...",R[U])})))};EditorUi.prototype.installFormatToolbar=function(B){var C=this.editor.graph,G=document.createElement("div");G.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";C.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,
+function(N,I){0<C.getSelectionCount()?(B.appendChild(G),G.innerHTML="Selected: "+C.getSelectionCount()):null!=G.parentNode&&G.parentNode.removeChild(G)}))};var u=!1;EditorUi.prototype.initFormatWindow=function(){if(!u&&null!=this.formatWindow){u=!0;this.formatWindow.window.setClosable(!1);var B=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){B.apply(this,arguments);this.minimized?(this.div.style.width="90px",this.table.style.width="90px",this.div.style.left=
+parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(C){mxEvent.getSource(C)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var D=EditorUi.prototype.init;EditorUi.prototype.init=function(){function B(aa,ca,na){var la=F.menus.get(aa),qa=J.addMenu(mxResources.get(aa),
+mxUtils.bind(this,function(){la.funct.apply(this,arguments)}),W);qa.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";qa.style.display="inline-block";qa.style.boxSizing="border-box";qa.style.top="6px";qa.style.marginRight="6px";qa.style.height="30px";qa.style.paddingTop="6px";qa.style.paddingBottom="6px";qa.style.cursor="pointer";qa.setAttribute("title",mxResources.get(aa));F.menus.menuCreated(la,qa,"geMenuItem");null!=na?(qa.style.backgroundImage="url("+na+")",qa.style.backgroundPosition=
+"center center",qa.style.backgroundRepeat="no-repeat",qa.style.backgroundSize="24px 24px",qa.style.width="34px",qa.innerText=""):ca||(qa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",qa.style.backgroundPosition="right 6px center",qa.style.backgroundRepeat="no-repeat",qa.style.paddingRight="22px");return qa}function C(aa,ca,na,la,qa,ta){var ka=document.createElement("a");ka.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";ka.style.display="inline-block";ka.style.boxSizing=
+"border-box";ka.style.height="30px";ka.style.padding="6px";ka.style.position="relative";ka.style.verticalAlign="top";ka.style.top="0px";"1"==urlParams.sketch&&(ka.style.borderStyle="none",ka.style.boxShadow="none",ka.style.padding="6px",ka.style.margin="0px");null!=F.statusContainer?R.insertBefore(ka,F.statusContainer):R.appendChild(ka);null!=ta?(ka.style.backgroundImage="url("+ta+")",ka.style.backgroundPosition="center center",ka.style.backgroundRepeat="no-repeat",ka.style.backgroundSize="24px 24px",
+ka.style.width="34px"):mxUtils.write(ka,aa);mxEvent.addListener(ka,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(Ja){Ja.preventDefault()}));mxEvent.addListener(ka,"click",function(Ja){"disabled"!=ka.getAttribute("disabled")&&ca(Ja);mxEvent.consume(Ja)});null==na&&(ka.style.marginRight="4px");null!=la&&ka.setAttribute("title",la);null!=qa&&(aa=function(){qa.isEnabled()?(ka.removeAttribute("disabled"),ka.style.cursor="pointer"):(ka.setAttribute("disabled","disabled"),ka.style.cursor=
+"default")},qa.addListener("stateChanged",aa),H.addListener("enabledChanged",aa),aa());return ka}function G(aa,ca,na){na=document.createElement("div");na.className="geMenuItem";na.style.display="inline-block";na.style.verticalAlign="top";na.style.marginRight="6px";na.style.padding="0 4px 0 4px";na.style.height="30px";na.style.position="relative";na.style.top="0px";"1"==urlParams.sketch&&(na.style.boxShadow="none");for(var la=0;la<aa.length;la++)null!=aa[la]&&("1"==urlParams.sketch&&(aa[la].style.padding=
+"10px 8px",aa[la].style.width="30px"),aa[la].style.margin="0px",aa[la].style.boxShadow="none",na.appendChild(aa[la]));null!=ca&&mxUtils.setOpacity(na,ca);null!=F.statusContainer&&"1"!=urlParams.sketch?R.insertBefore(na,F.statusContainer):R.appendChild(na);return na}function N(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(P.style.left=58>T.offsetTop-T.offsetHeight/2?"70px":"10px");else{for(var aa=R.firstChild;null!=aa;){var ca=aa.nextSibling;"geMenuItem"!=aa.className&&"geItem"!=aa.className||
+aa.parentNode.removeChild(aa);aa=ca}W=R.firstChild;c=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;aa=1E3>c||"1"==urlParams.sketch;var na=null;aa||(na=B("diagram"));ca=aa?B("diagram",null,Editor.drawLogoImage):null;null!=ca&&(na=ca);G([na,C(mxResources.get("shapes"),F.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),F.actions.get("image"),aa?Editor.shapesImage:null),C(mxResources.get("format"),F.actions.get("toggleFormat").funct,null,mxResources.get("format")+
+" ("+F.actions.get("formatPanel").shortcut+")",F.actions.get("image"),aa?Editor.formatImage:null)],aa?60:null);ca=B("insert",!0,aa?E:null);G([ca,C(mxResources.get("delete"),F.actions.get("delete").funct,null,mxResources.get("delete"),F.actions.get("delete"),aa?Editor.trashImage:null)],aa?60:null);411<=c&&(G([Ka,Fa],60),520<=c&&G([sa,640<=c?C("",Da.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",Da,Editor.zoomInImage):null,640<=c?C("",Ca.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+
+" -)",Ca,Editor.zoomOutImage):null],60))}null!=na&&(mxEvent.disableContextMenu(na),mxEvent.addGestureListeners(na,mxUtils.bind(this,function(la){(mxEvent.isShiftDown(la)||mxEvent.isAltDown(la)||mxEvent.isMetaDown(la)||mxEvent.isControlDown(la)||mxEvent.isPopupTrigger(la))&&F.appIconClicked(la)}),null,null));ca=F.menus.get("language");null!=ca&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=c&&"1"!=urlParams.sketch?(null==wa&&(ca=J.addMenu("",ca.funct),ca.setAttribute("title",mxResources.get("language")),
+ca.className="geToolbarButton",ca.style.backgroundImage="url("+Editor.globeImage+")",ca.style.backgroundPosition="center center",ca.style.backgroundRepeat="no-repeat",ca.style.backgroundSize="24px 24px",ca.style.position="absolute",ca.style.height="24px",ca.style.width="24px",ca.style.zIndex="1",ca.style.right="8px",ca.style.cursor="pointer",ca.style.top="1"==urlParams.embed?"12px":"11px",R.appendChild(ca),wa=ca),F.buttonContainer.style.paddingRight="34px"):(F.buttonContainer.style.paddingRight="4px",
+null!=wa&&(wa.parentNode.removeChild(wa),wa=null))}D.apply(this,arguments);"1"!=urlParams.embedInline&&this.doSetDarkMode(null!=urlParams.dark?1==urlParams.dark&&!mxClient.IS_IE&&!mxClient.IS_IE11:null!=mxSettings.settings.darkMode?mxSettings.settings.darkMode:window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches);var I=document.createElement("div");I.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";I.style.bottom="1"!=urlParams.embed||
+"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(I);"1"==urlParams.sketch&&null!=this.sidebar&&this.isSettingsEnabled()&&(this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save()),this.sidebar.showPalette("search",mxSettings.settings.search));if("1"!=urlParams.sketch&&1E3<=c||null!=urlParams.clibs||null!=urlParams.libs||null!=urlParams["search-shapes"])f(this,!0),null!=
+this.sidebar&&null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes&&(this.sidebar.searchShapes(urlParams["search-shapes"]),this.sidebar.showEntries("search"));var F=this;mxWindow.prototype.fit=function(){if(Editor.inlineFullscreen||null==F.embedViewport)mxUtils.fit(this.div);else{var aa=parseInt(this.div.offsetLeft),ca=parseInt(this.div.offsetWidth),na=F.embedViewport.x+F.embedViewport.width,la=parseInt(this.div.offsetTop),qa=parseInt(this.div.offsetHeight),ta=F.embedViewport.y+F.embedViewport.height;
+this.div.style.left=Math.max(F.embedViewport.x,Math.min(aa,na-ca))+"px";this.div.style.top=Math.max(F.embedViewport.y,Math.min(la,ta-qa))+"px";this.div.style.height=Math.min(F.embedViewport.height,parseInt(this.div.style.height))+"px";this.div.style.width=Math.min(F.embedViewport.width,parseInt(this.div.style.width))+"px"}};this.keyHandler.bindAction(75,!0,"toggleShapes",!0);EditorUi.windowed&&("1"==urlParams.sketch||1E3<=c)&&"1"!=urlParams.embedInline&&(b(this,!0),"1"==urlParams.sketch?(this.initFormatWindow(),
+I=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,null!=this.formatWindow&&(1200>c||708>I)?this.formatWindow.window.toggleMinimized():this.formatWindow.window.setVisible(!0)):this.formatWindow.window.setVisible(!0));F=this;var H=F.editor.graph;F.toolbar=this.createToolbar(F.createDiv("geToolbar"));F.defaultLibraryName=mxResources.get("untitledLibrary");var R=document.createElement("div");R.className="geMenubarContainer";var W=null,J=new Menubar(F,R);F.statusContainer=
+F.createStatusContainer();F.statusContainer.style.position="relative";F.statusContainer.style.maxWidth="";F.statusContainer.style.marginTop="7px";F.statusContainer.style.marginLeft="6px";F.statusContainer.style.color="gray";F.statusContainer.style.cursor="default";var V=F.hideCurrentMenu;F.hideCurrentMenu=function(){V.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};var U=F.descriptorChanged;F.descriptorChanged=function(){U.apply(this,arguments);var aa=F.getCurrentFile();if(null!=
+aa&&null!=aa.getTitle()){var ca=aa.getMode();"google"==ca?ca="googleDrive":"github"==ca?ca="gitHub":"gitlab"==ca?ca="gitLab":"onedrive"==ca&&(ca="oneDrive");ca=mxResources.get(ca);R.setAttribute("title",aa.getTitle()+(null!=ca?" ("+ca+")":""))}else R.removeAttribute("title")};F.setStatusText(F.editor.getStatus());R.appendChild(F.statusContainer);F.buttonContainer=document.createElement("div");F.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";
+R.appendChild(F.buttonContainer);F.menubarContainer=F.buttonContainer;F.tabContainer=document.createElement("div");F.tabContainer.className="geTabContainer";F.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";I=F.diagramContainer.parentNode;var X=document.createElement("div");X.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";F.diagramContainer.style.top="1"==urlParams.sketch?
+"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){X.style.top="20px";F.titlebar=document.createElement("div");F.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var t=document.createElement("div");t.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";F.titlebar.appendChild(t);I.appendChild(F.titlebar)}t=
+F.menus.get("viewZoom");var E="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,K="1"==urlParams.sketch?document.createElement("div"):null,T="1"==urlParams.sketch?document.createElement("div"):null,P="1"==urlParams.sketch?document.createElement("div"):null,Q=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();H.refresh();H.view.validateBackground()});F.addListener("darkModeChanged",Q);F.addListener("sketchModeChanged",Q);var S=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)P.style.left=
+"10px",P.style.top="10px",T.style.left="10px",T.style.top="60px",K.style.top="10px",K.style.right="12px",K.style.left="",F.diagramContainer.setAttribute("data-bounds",F.diagramContainer.style.top+" "+F.diagramContainer.style.left+" "+F.diagramContainer.style.width+" "+F.diagramContainer.style.height),F.diagramContainer.style.top="0px",F.diagramContainer.style.left="0px",F.diagramContainer.style.bottom="0px",F.diagramContainer.style.right="0px",F.diagramContainer.style.width="",F.diagramContainer.style.height=
+"";else{var aa=F.diagramContainer.getAttribute("data-bounds");if(null!=aa){F.diagramContainer.style.background="transparent";F.diagramContainer.removeAttribute("data-bounds");var ca=H.getGraphBounds();aa=aa.split(" ");F.diagramContainer.style.top=aa[0];F.diagramContainer.style.left=aa[1];F.diagramContainer.style.width=ca.width+50+"px";F.diagramContainer.style.height=ca.height+46+"px";F.diagramContainer.style.bottom="";F.diagramContainer.style.right="";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",
+rect:F.diagramContainer.getBoundingClientRect()}),"*");F.refresh()}P.style.left=F.diagramContainer.offsetLeft+"px";P.style.top=F.diagramContainer.offsetTop-P.offsetHeight-4+"px";T.style.display="";T.style.left=F.diagramContainer.offsetLeft-T.offsetWidth-4+"px";T.style.top=F.diagramContainer.offsetTop+"px";K.style.left=F.diagramContainer.offsetLeft+F.diagramContainer.offsetWidth-K.offsetWidth+"px";K.style.top=P.style.top;K.style.right="";F.bottomResizer.style.left=F.diagramContainer.offsetLeft+(F.diagramContainer.offsetWidth-
+F.bottomResizer.offsetWidth)/2+"px";F.bottomResizer.style.top=F.diagramContainer.offsetTop+F.diagramContainer.offsetHeight-F.bottomResizer.offsetHeight/2-1+"px";F.rightResizer.style.left=F.diagramContainer.offsetLeft+F.diagramContainer.offsetWidth-F.rightResizer.offsetWidth/2-1+"px";F.rightResizer.style.top=F.diagramContainer.offsetTop+(F.diagramContainer.offsetHeight-F.bottomResizer.offsetHeight)/2+"px"}F.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";F.rightResizer.style.visibility=
+F.bottomResizer.style.visibility;R.style.display="none";P.style.visibility="";K.style.visibility=""}),Y=mxUtils.bind(this,function(){Ha.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";S()});Q=mxUtils.bind(this,function(){Y();b(F,!0);F.initFormatWindow();var aa=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(aa.x+
+aa.width+4,aa.y)});F.addListener("inlineFullscreenChanged",Y);F.addListener("editInlineStart",Q);"1"==urlParams.embedInline&&F.addListener("darkModeChanged",Q);F.addListener("editInlineStop",mxUtils.bind(this,function(aa){F.diagramContainer.style.width="10px";F.diagramContainer.style.height="10px";F.diagramContainer.style.border="";F.bottomResizer.style.visibility="hidden";F.rightResizer.style.visibility="hidden";P.style.visibility="hidden";K.style.visibility="hidden";T.style.display="none"}));if(null!=
+F.hoverIcons){var ba=F.hoverIcons.update;F.hoverIcons.update=function(){H.freehand.isDrawing()||ba.apply(this,arguments)}}if(null!=H.freehand){var da=H.freehand.createStyle;H.freehand.createStyle=function(aa){return da.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){T.className="geToolbarContainer";K.className="geToolbarContainer";P.className="geToolbarContainer";R.className="geToolbarContainer";F.picker=T;var Z=!1;"1"!=urlParams.embed&&"atlassian"!=F.getServiceName()&&(mxEvent.addListener(R,
+"mouseenter",function(){F.statusContainer.style.display="inline-block"}),mxEvent.addListener(R,"mouseleave",function(){Z||(F.statusContainer.style.display="none")}));var ja=mxUtils.bind(this,function(aa){null!=F.notificationBtn&&(null!=aa?F.notificationBtn.setAttribute("title",aa):F.notificationBtn.removeAttribute("title"))});R.style.visibility=20>R.clientWidth?"hidden":"";F.editor.addListener("statusChanged",mxUtils.bind(this,function(){F.setStatusText(F.editor.getStatus());if("1"!=urlParams.embed&&
+"atlassian"!=F.getServiceName())if(F.statusContainer.style.display="inline-block",Z=!0,1==F.statusContainer.children.length&&""==F.editor.getStatus())R.style.visibility="hidden";else{if(0==F.statusContainer.children.length||1==F.statusContainer.children.length&&"function"===typeof F.statusContainer.firstChild.getAttribute&&null==F.statusContainer.firstChild.getAttribute("class")){var aa=null!=F.statusContainer.firstChild&&"function"===typeof F.statusContainer.firstChild.getAttribute?F.statusContainer.firstChild.getAttribute("title"):
+F.editor.getStatus();ja(aa);var ca=F.getCurrentFile();ca=null!=ca?ca.savingStatusKey:DrawioFile.prototype.savingStatusKey;aa==mxResources.get(ca)+"..."?(F.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(ca))+'..."src="'+Editor.tailSpin+'">',F.statusContainer.style.display="inline-block",Z=!0):6<F.buttonContainer.clientWidth&&(F.statusContainer.style.display="none",Z=!1)}else F.statusContainer.style.display="inline-block",ja(null),Z=!0;R.style.visibility=20>R.clientWidth&&
+!Z?"hidden":""}}));fa=B("diagram",null,Editor.menuImage);fa.style.boxShadow="none";fa.style.padding="6px";fa.style.margin="0px";P.appendChild(fa);mxEvent.disableContextMenu(fa);mxEvent.addGestureListeners(fa,mxUtils.bind(this,function(aa){(mxEvent.isShiftDown(aa)||mxEvent.isAltDown(aa)||mxEvent.isMetaDown(aa)||mxEvent.isControlDown(aa)||mxEvent.isPopupTrigger(aa))&&this.appIconClicked(aa)}),null,null);F.statusContainer.style.position="";F.statusContainer.style.display="none";F.statusContainer.style.margin=
+"0px";F.statusContainer.style.padding="6px 0px";F.statusContainer.style.maxWidth=Math.min(c-240,280)+"px";F.statusContainer.style.display="inline-block";F.statusContainer.style.textOverflow="ellipsis";F.buttonContainer.style.position="";F.buttonContainer.style.paddingRight="0px";F.buttonContainer.style.display="inline-block";var ea=document.createElement("a");ea.style.padding="0px";ea.style.boxShadow="none";ea.className="geMenuItem";ea.style.display="inline-block";ea.style.width="40px";ea.style.height=
+"12px";ea.style.marginBottom="-2px";ea.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";ea.style.backgroundPosition="top center";ea.style.backgroundRepeat="no-repeat";ea.setAttribute("title","Minimize");var ha=!1,ma=mxUtils.bind(this,function(){T.innerText="";if(!ha){var aa=function(la,qa,ta){la=C("",la.funct,null,qa,la,ta);la.style.width="40px";la.style.opacity="0.7";return ca(la,null,"pointer")},ca=function(la,qa,ta){null!=qa&&la.setAttribute("title",qa);la.style.cursor=null!=
+ta?ta:"default";la.style.margin="2px 0px";T.appendChild(la);mxUtils.br(T);return la};ca(F.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",60,30,"Text",mxResources.get("text"),!0,!1,null,!0,!0),mxResources.get("text")+" ("+Editor.ctrlKey+"+Shift+X)");ca(F.sidebar.createVertexTemplate("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontColor=#000000;darkOpacity=0.05;fillColor=#FFF9B2;strokeColor=none;fillStyle=solid;direction=west;gradientDirection=north;gradientColor=#FFF2A1;shadow=1;size=20;pointerEvents=1;",
+140,160,"",mxResources.get("note"),!0,!1,null,!0),mxResources.get("note"));ca(F.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");ca(F.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var la=new mxCell("",new mxGeometry(0,0,H.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");
+la.geometry.setTerminalPoint(new mxPoint(0,0),!0);la.geometry.setTerminalPoint(new mxPoint(la.geometry.width,0),!1);la.geometry.points=[];la.geometry.relative=!0;la.edge=!0;ca(F.sidebar.createEdgeTemplateFromCells([la],la.geometry.width,la.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));la=la.clone();la.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";la.geometry.width=H.defaultEdgeLength+20;la.geometry.setTerminalPoint(new mxPoint(0,
+20),!0);la.geometry.setTerminalPoint(new mxPoint(la.geometry.width,20),!1);la=ca(F.sidebar.createEdgeTemplateFromCells([la],la.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));la.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");la.style.paddingBottom="14px";la.style.marginBottom="14px"})();aa(F.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var na=F.actions.get("toggleShapes");aa(na,mxResources.get("shapes")+
+" ("+na.shortcut+")",E);fa=B("table",null,Editor.calendarImage);fa.style.boxShadow="none";fa.style.opacity="0.7";fa.style.padding="6px";fa.style.margin="0px";fa.style.width="37px";ca(fa,null,"pointer");fa=B("insert",null,Editor.plusImage);fa.style.boxShadow="none";fa.style.opacity="0.7";fa.style.padding="6px";fa.style.margin="0px";fa.style.width="37px";ca(fa,null,"pointer")}"1"!=urlParams.embedInline&&T.appendChild(ea)});mxEvent.addListener(ea,"click",mxUtils.bind(this,function(){ha?(mxUtils.setPrefixedStyle(T.style,
+"transform","translate(0, -50%)"),T.style.padding="8px 6px 4px",T.style.top="50%",T.style.bottom="",T.style.height="",ea.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",ea.style.width="40px",ea.style.height="12px",ea.setAttribute("title","Minimize"),ha=!1,ma()):(T.innerText="",T.appendChild(ea),mxUtils.setPrefixedStyle(T.style,"transform","translate(0, 0)"),T.style.top="",T.style.bottom="12px",T.style.padding="0px",T.style.height="24px",ea.style.height="24px",ea.style.backgroundImage=
+"url("+Editor.plusImage+")",ea.setAttribute("title",mxResources.get("insert")),ea.style.width="24px",ha=!0)}));ma();F.addListener("darkModeChanged",ma);F.addListener("sketchModeChanged",ma)}else F.editor.addListener("statusChanged",mxUtils.bind(this,function(){F.setStatusText(F.editor.getStatus())}));if(null!=t){var Aa=function(aa){mxEvent.isShiftDown(aa)?(F.hideCurrentMenu(),F.actions.get("smartFit").funct(),mxEvent.consume(aa)):mxEvent.isAltDown(aa)&&(F.hideCurrentMenu(),F.actions.get("customZoom").funct(),
+mxEvent.consume(aa))},Da=F.actions.get("zoomIn"),Ca=F.actions.get("zoomOut"),oa=F.actions.get("resetView");Q=F.actions.get("fullscreen");var Ba=F.actions.get("undo"),Ea=F.actions.get("redo"),Ka=C("",Ba.funct,null,mxResources.get("undo")+" ("+Ba.shortcut+")",Ba,Editor.undoImage),Fa=C("",Ea.funct,null,mxResources.get("redo")+" ("+Ea.shortcut+")",Ea,Editor.redoImage),Ha=C("",Q.funct,null,mxResources.get("fullscreen"),Q,Editor.fullscreenImage);if(null!=K){oa=function(){pa.style.display=null!=F.pages&&
+("0"!=urlParams.pages||1<F.pages.length||Editor.pagesVisible)?"inline-block":"none"};var Ia=function(){pa.innerText="";if(null!=F.currentPage){mxUtils.write(pa,F.currentPage.getName());var aa=null!=F.pages?F.pages.length:1,ca=F.getPageIndex(F.currentPage);ca=null!=ca?ca+1:1;var na=F.currentPage.getId();pa.setAttribute("title",F.currentPage.getName()+" ("+ca+"/"+aa+")"+(null!=na?" ["+na+"]":""))}};Ha.parentNode.removeChild(Ha);var Ma=F.actions.get("delete"),za=C("",Ma.funct,null,mxResources.get("delete"),
+Ma,Editor.trashImage);za.style.opacity="0.1";P.appendChild(za);Ma.addListener("stateChanged",function(){za.style.opacity=Ma.enabled?"":"0.1"});var ya=function(){Ka.style.display=0<F.editor.undoManager.history.length||H.isEditing()?"inline-block":"none";Fa.style.display=Ka.style.display;Ka.style.opacity=Ba.enabled?"":"0.1";Fa.style.opacity=Ea.enabled?"":"0.1"};P.appendChild(Ka);P.appendChild(Fa);Ba.addListener("stateChanged",ya);Ea.addListener("stateChanged",ya);ya();var pa=this.createPageMenuTab(!1,
+!0);pa.style.display="none";pa.style.position="";pa.style.marginLeft="";pa.style.top="";pa.style.left="";pa.style.height="100%";pa.style.lineHeight="";pa.style.borderStyle="none";pa.style.padding="3px 0";pa.style.margin="0px";pa.style.background="";pa.style.border="";pa.style.boxShadow="none";pa.style.verticalAlign="top";pa.style.width="auto";pa.style.maxWidth="160px";pa.style.position="relative";pa.style.padding="6px";pa.style.textOverflow="ellipsis";pa.style.opacity="0.8";K.appendChild(pa);F.editor.addListener("pagesPatched",
+Ia);F.editor.addListener("pageSelected",Ia);F.editor.addListener("pageRenamed",Ia);F.editor.addListener("fileLoaded",Ia);Ia();F.addListener("fileDescriptorChanged",oa);F.addListener("pagesVisibleChanged",oa);F.editor.addListener("pagesPatched",oa);oa();oa=C("",Ca.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",Ca,Editor.zoomOutImage);K.appendChild(oa);var fa=J.addMenu("100%",t.funct);fa.setAttribute("title",mxResources.get("zoom"));fa.innerHTML="100%";fa.style.display=
+"inline-block";fa.style.color="inherit";fa.style.cursor="pointer";fa.style.textAlign="center";fa.style.whiteSpace="nowrap";fa.style.paddingRight="10px";fa.style.textDecoration="none";fa.style.verticalAlign="top";fa.style.padding="6px 0";fa.style.fontSize="14px";fa.style.width="40px";fa.style.opacity="0.4";K.appendChild(fa);t=C("",Da.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",Da,Editor.zoomInImage);K.appendChild(t);Q.visible&&(K.appendChild(Ha),mxEvent.addListener(document,
+"fullscreenchange",function(){Ha.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(t=F.actions.get("exit"),K.appendChild(C("",t.funct,null,mxResources.get("exit"),t,Editor.closeImage)));F.tabContainer.style.visibility="hidden";R.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
+P.style.cssText="position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";K.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";X.appendChild(P);X.appendChild(K);T.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
mxClient.IS_POINTER&&(T.style.touchAction="none");X.appendChild(T);window.setTimeout(function(){mxUtils.setPrefixedStyle(T.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(X)}else{var sa=C("",Aa,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",oa,Editor.zoomFitImage);R.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";fa=J.addMenu("100%",
t.funct);fa.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");fa.style.whiteSpace="nowrap";fa.style.paddingRight="10px";fa.style.textDecoration="none";fa.style.textDecoration="none";fa.style.overflow="hidden";fa.style.visibility="hidden";fa.style.textAlign="center";fa.style.cursor="pointer";fa.style.height=parseInt(F.tabContainerHeight)-1+"px";fa.style.lineHeight=parseInt(F.tabContainerHeight)+1+"px";fa.style.position="absolute";fa.style.display="block";fa.style.fontSize="12px";fa.style.width=
"59px";fa.style.right="0px";fa.style.bottom="0px";fa.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";fa.style.backgroundPosition="right 6px center";fa.style.backgroundRepeat="no-repeat";X.appendChild(fa)}(function(aa){mxEvent.addListener(aa,"click",Aa);var ca=mxUtils.bind(this,function(){aa.innerText="";mxUtils.write(aa,Math.round(100*F.editor.graph.view.scale)+"%")});F.editor.graph.view.addListener(mxEvent.EVENT_SCALE,ca);F.editor.addListener("resetGraphView",ca);F.editor.addListener("pageSelected",
diff --git a/src/main/webapp/js/diagramly/App.js b/src/main/webapp/js/diagramly/App.js
index 4978449f..348feca3 100644
--- a/src/main/webapp/js/diagramly/App.js
+++ b/src/main/webapp/js/diagramly/App.js
@@ -563,7 +563,7 @@ App.getStoredMode = function()
/**
* Clears the PWA cache.
*/
-App.clearServiceWorker = function(success)
+App.clearServiceWorker = function(success, error)
{
navigator.serviceWorker.getRegistrations().then(function(registrations)
{
@@ -579,6 +579,12 @@ App.clearServiceWorker = function(success)
success();
}
}
+ })['catch'](function()
+ {
+ if (error != null)
+ {
+ error();
+ }
});
};
diff --git a/src/main/webapp/js/diagramly/Editor.js b/src/main/webapp/js/diagramly/Editor.js
index 3d38096f..a12b6f68 100644
--- a/src/main/webapp/js/diagramly/Editor.js
+++ b/src/main/webapp/js/diagramly/Editor.js
@@ -506,7 +506,6 @@
{val: 'centerPerimeter', dispName: 'Center'}]
},
{name: 'fixDash', dispName: 'Fixed Dash', type: 'bool', defVal: false},
- {name: 'autosize', dispName: 'Autosize', type: 'bool', defVal: false},
{name: 'container', dispName: 'Container', type: 'bool', defVal: false, isVisible: function(state, format)
{
return state.vertices.length == 1 && state.edges.length == 0;
@@ -555,6 +554,8 @@
return geo != null && !geo.relative;
}},
+ {name: 'autosize', dispName: 'Autosize', type: 'bool', defVal: false},
+ {name: 'fixedWidth', dispName: 'Fixed Width', type: 'bool', defVal: false},
{name: 'resizable', dispName: 'Resizable', type: 'bool', defVal: true},
{name: 'resizeWidth', dispName: 'Resize Width', type: 'bool', defVal: false},
{name: 'resizeHeight', dispName: 'Resize Height', type: 'bool', defVal: false},
diff --git a/src/main/webapp/js/diagramly/ElectronApp.js b/src/main/webapp/js/diagramly/ElectronApp.js
index 4b426919..7789e679 100644
--- a/src/main/webapp/js/diagramly/ElectronApp.js
+++ b/src/main/webapp/js/diagramly/ElectronApp.js
@@ -127,7 +127,11 @@ mxStencilRegistry.allowEval = false;
{
try
{
- if (plugins[i].startsWith('/plugins/'))
+ if (plugins[i].indexOf('..') >= 0)
+ {
+ continue;
+ }
+ else if (plugins[i].startsWith('/plugins/'))
{
plugins[i] = '.' + plugins[i];
}
@@ -135,19 +139,16 @@ mxStencilRegistry.allowEval = false;
{
plugins[i] = './' + plugins[i];
}
- //Support old plugins added using file:// workaround
- else if (!plugins[i].startsWith('file://'))
+ else
{
- let appFolder = await requestSync('getAppDataFolder');
-
- let pluginsFile = await requestSync({
- action: 'checkFileExists',
- pathParts: [appFolder, '/plugins', plugins[i]]
+ let pluginFile = await requestSync({
+ action: 'getPluginFile',
+ plugin: plugins[i]
});
- if (pluginsFile.exists)
+ if (pluginFile != null)
{
- plugins[i] = 'file://' + pluginsFile.path;
+ plugins[i] = 'file://' + pluginFile;
}
else
{
@@ -637,7 +638,7 @@ mxStencilRegistry.allowEval = false;
}
}
- editorUi.showDialog(new PluginsDialog(editorUi, function(callback)
+ editorUi.showDialog(new PluginsDialog(editorUi, async function(callback)
{
var div = document.createElement('div');
@@ -669,62 +670,71 @@ mxStencilRegistry.allowEval = false;
mxUtils.write(title, mxResources.get('extPlugins') + ': ');
div.appendChild(title);
- var extPluginsBtn = mxUtils.button(mxResources.get('selectFile') + '...', async function()
+ if (await requestSync('isPluginsEnabled'))
{
- var warningMsgs = mxResources.get('pluginWarning').split('\\n');
- var warningMsg = warningMsgs.pop(); //Last line in the message
-
- if (!warningMsg)
+ var extPluginsBtn = mxUtils.button(mxResources.get('selectFile') + '...', async function()
{
- warningMsg = warningMsgs.pop();
- }
+ var warningMsgs = mxResources.get('pluginWarning').split('\\n');
+ var warningMsg = warningMsgs.pop(); //Last line in the message
- if (!confirm(warningMsg))
- {
- return;
- }
-
- var lastDir = localStorage.getItem('.lastPluginDir');
-
- var paths = await requestSync({
- action: 'showOpenDialog',
- defaultPath: lastDir || (await requestSync('getDocumentsFolder')),
- filters: [
- { name: 'draw.io Plugins', extensions: ['js'] },
- { name: 'All Files', extensions: ['*'] }
- ],
- properties: ['openFile']
- });
-
- if (paths !== undefined && paths[0] != null)
- {
- try
+ if (!warningMsg)
{
- let ret = await requestSync({
- action: 'installPlugin',
- filePath: paths[0]
- });
+ warningMsg = warningMsgs.pop();
+ }
- localStorage.setItem('.lastPluginDir', ret.selDir);
- callback(ret.pluginName);
- editorUi.hideDialog();
+ if (!confirm(warningMsg))
+ {
+ return;
}
- catch (e)
+
+ var lastDir = localStorage.getItem('.lastPluginDir');
+
+ var paths = await requestSync({
+ action: 'showOpenDialog',
+ defaultPath: lastDir || (await requestSync('getDocumentsFolder')),
+ filters: [
+ { name: 'draw.io Plugins', extensions: ['js'] },
+ { name: 'All Files', extensions: ['*'] }
+ ],
+ properties: ['openFile']
+ });
+
+ if (paths !== undefined && paths[0] != null)
{
- if (e.message == 'fileExists')
+ try
{
- alert(mxResources.get('fileExists'));
+ let ret = await requestSync({
+ action: 'installPlugin',
+ filePath: paths[0]
+ });
+
+ localStorage.setItem('.lastPluginDir', ret.selDir);
+ callback(ret.pluginName);
+ editorUi.hideDialog();
}
- else
+ catch (e)
{
- alert('Adding plugin failed.');
+ if (e.message == 'fileExists')
+ {
+ alert(mxResources.get('fileExists'));
+ }
+ else
+ {
+ alert('Adding plugin failed.');
+ }
}
}
- }
- });
-
- extPluginsBtn.className = 'geBtn';
- div.appendChild(extPluginsBtn);
+ });
+
+ extPluginsBtn.className = 'geBtn';
+ div.appendChild(extPluginsBtn);
+ }
+ else
+ {
+ title = document.createElement('span');
+ mxUtils.write(title, mxResources.get('pluginsDisabled'));
+ div.appendChild(title);
+ }
var dlg = new CustomDialog(editorUi, div, mxUtils.bind(this, function()
{
diff --git a/src/main/webapp/js/diagramly/Minimal.js b/src/main/webapp/js/diagramly/Minimal.js
index 02fc75ae..50c28f6a 100644
--- a/src/main/webapp/js/diagramly/Minimal.js
+++ b/src/main/webapp/js/diagramly/Minimal.js
@@ -288,11 +288,14 @@ EditorUi.initMinimalTheme = function()
ui.sidebarWindow.window.minimumSize = new mxRectangle(0, 0, 90, 90);
ui.sidebarWindow.window.setVisible(true);
-
- ui.getLocalData('sidebar', function(value)
+
+ if (isLocalStorage)
{
- ui.sidebar.showEntries(value, null, true);
- });
+ ui.getLocalData('sidebar', function(value)
+ {
+ ui.sidebar.showEntries(value, null, true);
+ });
+ }
ui.restoreLibraries();
}
diff --git a/src/main/webapp/js/grapheditor/Graph.js b/src/main/webapp/js/grapheditor/Graph.js
index a1651777..ff7415a1 100644
--- a/src/main/webapp/js/grapheditor/Graph.js
+++ b/src/main/webapp/js/grapheditor/Graph.js
@@ -153,6 +153,7 @@ mxConstants.POINTS = 1;
mxConstants.MILLIMETERS = 2;
mxConstants.INCHES = 3;
mxConstants.METERS = 4;
+
/**
* This ratio is with page scale 1
*/
@@ -161,6 +162,9 @@ mxConstants.PIXELS_PER_INCH = 100;
mxConstants.SHADOW_OPACITY = 0.25;
mxConstants.SHADOWCOLOR = '#000000';
mxConstants.VML_SHADOWCOLOR = '#d0d0d0';
+
+mxCodec.allowlist = ['mxStylesheet', 'Array', 'mxGraphModel',
+ 'mxCell', 'mxGeometry', 'mxRectangle', 'mxPoint'];
mxGraph.prototype.pageBreakColor = '#c0c0c0';
mxGraph.prototype.pageScale = 1;
diff --git a/src/main/webapp/js/integrate.min.js b/src/main/webapp/js/integrate.min.js
index 872db786..7a5a6a13 100644
--- a/src/main/webapp/js/integrate.min.js
+++ b/src/main/webapp/js/integrate.min.js
@@ -469,7 +469,7 @@ if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==url
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content"]};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||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
-window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"19.0.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"19.0.3",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&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:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2<navigator.maxTouchPoints,IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,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:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==
@@ -574,10 +574,10 @@ STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",STYLE_LABEL_
STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",
STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_SWIMLANE_HEAD:"swimlaneHead",STYLE_SWIMLANE_BODY:"swimlaneBody",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",
STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",
-STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",
-STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",STYLE_CLIP_PATH:"clipPath",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",
-SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",
-ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",
+STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FIXED_WIDTH:"fixedWidth",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",
+STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",STYLE_CLIP_PATH:"clipPath",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",
+SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",
+ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",
EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};
function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};
mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};
@@ -1630,9 +1630,9 @@ mxGraph.prototype.swapBounds=function(a,b){if(null!=a){var c=this.model.getGeome
mxGraph.prototype.updateAlternateBounds=function(a,b,c){if(null!=a&&null!=b){c=this.getCurrentCellStyle(a);if(null==b.alternateBounds){var d=b;this.collapseToPreferredSize&&(a=this.getPreferredSizeForCell(a),null!=a&&(d=a,a=mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE),0<a&&(d.height=Math.max(d.height,a))));b.alternateBounds=new mxRectangle(0,0,d.width,d.height)}if(null!=b.alternateBounds){b.alternateBounds.x=b.x;b.alternateBounds.y=b.y;var e=mxUtils.toRadians(c[mxConstants.STYLE_ROTATION]||0);
0!=e&&(c=b.alternateBounds.getCenterX()-b.getCenterX(),d=b.alternateBounds.getCenterY()-b.getCenterY(),a=Math.cos(e),e=Math.sin(e),b.alternateBounds.x+=a*c-e*d-c,b.alternateBounds.y+=e*c+a*d-d)}}};mxGraph.prototype.addAllEdges=function(a){var b=a.slice();return mxUtils.removeDuplicates(b.concat(this.getAllEdges(a)))};
mxGraph.prototype.getAllEdges=function(a){var b=[];if(null!=a)for(var c=0;c<a.length;c++){for(var d=this.model.getEdgeCount(a[c]),e=0;e<d;e++)b.push(this.model.getEdgeAt(a[c],e));d=this.model.getChildren(a[c]);b=b.concat(this.getAllEdges(d))}return b};mxGraph.prototype.updateCellSize=function(a,b){b=null!=b?b:!1;this.model.beginUpdate();try{this.cellSizeUpdated(a,b),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",a,"ignoreChildren",b))}finally{this.model.endUpdate()}return a};
-mxGraph.prototype.cellSizeUpdated=function(a,b){if(null!=a){this.model.beginUpdate();try{var c=this.getPreferredSizeForCell(a),d=this.model.getGeometry(a);if(null!=c&&null!=d){var e=this.isCellCollapsed(a);d=d.clone();if(this.isSwimlane(a)){var f=this.getCellStyle(a),g=this.model.getStyle(a);null==g&&(g="");mxUtils.getValue(f,mxConstants.STYLE_HORIZONTAL,!0)?(g=mxUtils.setStyle(g,mxConstants.STYLE_STARTSIZE,c.height+8),e&&(d.height=c.height+8),d.width=c.width):(g=mxUtils.setStyle(g,mxConstants.STYLE_STARTSIZE,
-c.width+8),e&&(d.width=c.width+8),d.height=c.height);this.model.setStyle(a,g)}else{var k=this.view.createState(a),l=k.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,m=this.getVerticalAlign(k);"fixed"==k.style[mxConstants.STYLE_ASPECT]&&(c.height=Math.round(d.height*c.width*100/d.width)/100);l==mxConstants.ALIGN_RIGHT?d.x+=d.width-c.width:l==mxConstants.ALIGN_CENTER&&(d.x+=Math.round((d.width-c.width)/2));m==mxConstants.ALIGN_BOTTOM?d.y+=d.height-c.height:m==mxConstants.ALIGN_MIDDLE&&(d.y+=
-Math.round((d.height-c.height)/2));d.width=c.width;d.height=c.height}if(!b&&!e){var n=this.view.getBounds(this.model.getChildren(a));if(null!=n){var p=this.view.translate,r=this.view.scale,q=(n.y+n.height)/r-d.y-p.y;d.width=Math.max(d.width,(n.x+n.width)/r-d.x-p.x);d.height=Math.max(d.height,q)}}this.cellsResized([a],[d],!1)}}finally{this.model.endUpdate()}}};
+mxGraph.prototype.cellSizeUpdated=function(a,b){if(null!=a){this.model.beginUpdate();try{var c=this.getCellStyle(a),d=this.model.getGeometry(a);if(null!=d){var e=mxUtils.getValue(c,mxConstants.STYLE_FIXED_WIDTH,!1),f=this.getPreferredSizeForCell(a,e?d.width:null);if(null!=f){var g=this.isCellCollapsed(a);d=d.clone();if(this.isSwimlane(a)){var k=this.model.getStyle(a);null==k&&(k="");mxUtils.getValue(c,mxConstants.STYLE_HORIZONTAL,!0)?(k=mxUtils.setStyle(k,mxConstants.STYLE_STARTSIZE,f.height+8),g&&
+(d.height=f.height+8),e||(d.width=f.width)):(k=mxUtils.setStyle(k,mxConstants.STYLE_STARTSIZE,f.width+8),g&&!e&&(d.width=f.width+8),d.height=f.height);this.model.setStyle(a,k)}else{var l=this.view.createState(a),m=l.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,n=this.getVerticalAlign(l);"fixed"==l.style[mxConstants.STYLE_ASPECT]&&(f.height=Math.round(d.height*f.width*100/d.width)/100);n==mxConstants.ALIGN_BOTTOM?d.y+=d.height-f.height:n==mxConstants.ALIGN_MIDDLE&&(d.y+=Math.round((d.height-
+f.height)/2));d.height=f.height;e||(m==mxConstants.ALIGN_RIGHT?d.x+=d.width-f.width:m==mxConstants.ALIGN_CENTER&&(d.x+=Math.round((d.width-f.width)/2)),d.width=f.width)}if(!b&&!g){var p=this.view.getBounds(this.model.getChildren(a));if(null!=p){var r=this.view.translate,q=this.view.scale,t=(p.x+p.width)/q-d.x-r.x;d.height=Math.max(d.height,(p.y+p.height)/q-d.y-r.y);e||(d.width=Math.max(d.width,t))}}this.cellsResized([a],[d],!1)}}}finally{this.model.endUpdate()}}};
mxGraph.prototype.getPreferredSizeForCell=function(a,b){var c=null;if(null!=a){var d=this.view.createState(a),e=d.style;if(!this.model.isEdge(a)){var f=e[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE;a=c=0;null==this.getImage(d)&&null==e[mxConstants.STYLE_IMAGE]||e[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(e[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(c+=parseFloat(e[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),e[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&
(a+=parseFloat(e[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize));c+=2*(e[mxConstants.STYLE_SPACING]||0);c+=e[mxConstants.STYLE_SPACING_LEFT]||0;c+=e[mxConstants.STYLE_SPACING_RIGHT]||0;a+=2*(e[mxConstants.STYLE_SPACING]||0);a+=e[mxConstants.STYLE_SPACING_TOP]||0;a+=e[mxConstants.STYLE_SPACING_BOTTOM]||0;var g=this.getFoldingImage(d);null!=g&&(c+=g.width+8);g=this.cellRenderer.getLabelValue(d);null!=g&&0<g.length?(this.isHtmlLabel(d.cell)||(g=mxUtils.htmlEntities(g,!1)),g=g.replace(/\n/g,
"<br>"),d=mxUtils.getSizeForString(g,f,e[mxConstants.STYLE_FONTFAMILY],b,e[mxConstants.STYLE_FONTSTYLE]),b=d.width+c,d=d.height+a,mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)||(e=d,d=b,b=e),this.gridEnabled&&(b=this.snap(b+this.gridSize/2),d=this.snap(d+this.gridSize/2)),c=new mxRectangle(0,0,b,d)):(e=4*this.gridSize,c=new mxRectangle(0,0,e,e))}}return c};mxGraph.prototype.resizeCell=function(a,b,c){return this.resizeCells([a],[b],c)[0]};
@@ -2217,12 +2217,13 @@ mxCellHighlight.prototype.repaint=function(){null!=this.state&&null!=this.shape&
"0"),this.shape.strokewidth=this.getStrokeWidth()/this.state.view.scale,this.shape.outline=!0),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),this.shape.redraw())};mxCellHighlight.prototype.hide=function(){this.highlight(null)};mxCellHighlight.prototype.highlight=function(a){this.state!=a&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=a,null!=this.state&&this.drawHighlight())};
mxCellHighlight.prototype.isHighlightAt=function(a,b){var c=!1;if(null!=this.shape&&null!=document.elementFromPoint)for(a=document.elementFromPoint(a,b);null!=a;){if(a==this.shape.node){c=!0;break}a=a.parentNode}return c};mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler);this.graph.getView().removeListener(this.repaintHandler);this.graph.getModel().removeListener(this.repaintHandler);null!=this.shape&&(this.shape.destroy(),this.shape=null)};
var mxCodecRegistry={codecs:[],aliases:[],register:function(a){if(null!=a){var b=a.getName();mxCodecRegistry.codecs[b]=a;var c=mxUtils.getFunctionName(a.template.constructor);c!=b&&mxCodecRegistry.addAlias(c,b)}return a},addAlias:function(a,b){mxCodecRegistry.aliases[a]=b},getCodec:function(a){var b=null;if(null!=a){b=mxUtils.getFunctionName(a);var c=mxCodecRegistry.aliases[b];null!=c&&(b=c);b=mxCodecRegistry.codecs[b];if(null==b)try{b=new mxObjectCodec(new a),mxCodecRegistry.register(b)}catch(d){}}return b}};
-function mxCodec(a){this.document=a||mxUtils.createXmlDocument();this.objects=[]}mxCodec.prototype.document=null;mxCodec.prototype.objects=null;mxCodec.prototype.elements=null;mxCodec.prototype.encodeDefaults=!1;mxCodec.prototype.putObject=function(a,b){return this.objects[a]=b};mxCodec.prototype.getObject=function(a){var b=null;null!=a&&(b=this.objects[a],null==b&&(b=this.lookup(a),null==b&&(a=this.getElementById(a),null!=a&&(b=this.decode(a)))));return b};mxCodec.prototype.lookup=function(a){return null};
-mxCodec.prototype.getElementById=function(a){this.updateElements();return this.elements[a]};mxCodec.prototype.updateElements=function(){null==this.elements&&(this.elements={},null!=this.document.documentElement&&this.addElement(this.document.documentElement))};
+function mxCodec(a){this.document=a||mxUtils.createXmlDocument();this.objects=[]}mxCodec.allowlist=null;mxCodec.prototype.document=null;mxCodec.prototype.objects=null;mxCodec.prototype.elements=null;mxCodec.prototype.encodeDefaults=!1;mxCodec.prototype.putObject=function(a,b){return this.objects[a]=b};mxCodec.prototype.getObject=function(a){var b=null;null!=a&&(b=this.objects[a],null==b&&(b=this.lookup(a),null==b&&(a=this.getElementById(a),null!=a&&(b=this.decode(a)))));return b};
+mxCodec.prototype.lookup=function(a){return null};mxCodec.prototype.getElementById=function(a){this.updateElements();return this.elements[a]};mxCodec.prototype.updateElements=function(){null==this.elements&&(this.elements={},null!=this.document.documentElement&&this.addElement(this.document.documentElement))};
mxCodec.prototype.addElement=function(a){if(a.nodeType==mxConstants.NODETYPE_ELEMENT){var b=a.getAttribute("id");if(null!=b)if(null==this.elements[b])this.elements[b]=a;else if(this.elements[b]!=a)throw Error(b+": Duplicate ID");}for(a=a.firstChild;null!=a;)this.addElement(a),a=a.nextSibling};mxCodec.prototype.getId=function(a){var b=null;null!=a&&(b=this.reference(a),null==b&&a instanceof mxCell&&(b=a.getId(),null==b&&(b=mxCellPath.create(a),0==b.length&&(b="root"))));return b};
mxCodec.prototype.reference=function(a){return null};mxCodec.prototype.encode=function(a){var b=null;if(null!=a&&null!=a.constructor){var c=mxCodecRegistry.getCodec(a.constructor);null!=c?b=c.encode(this,a):mxUtils.isNode(a)?b=mxUtils.importNode(this.document,a,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(a.constructor))}return b};
-mxCodec.prototype.decode=function(a,b){this.updateElements();var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=null;try{c=window[a.nodeName]}catch(d){}c=mxCodecRegistry.getCodec(c);null!=c?c=c.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}return c};mxCodec.prototype.encodeCell=function(a,b,c){b.appendChild(this.encode(a));if(null==c||c){c=a.getChildCount();for(var d=0;d<c;d++)this.encodeCell(a.getChildAt(d),b)}};
-mxCodec.prototype.isCellCodec=function(a){return null!=a&&"function"==typeof a.isCellCodec?a.isCellCodec():!1};mxCodec.prototype.decodeCell=function(a,b){b=null!=b?b:!0;var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=mxCodecRegistry.getCodec(a.nodeName);if(!this.isCellCodec(c))for(var d=a.firstChild;null!=d&&!this.isCellCodec(c);)c=mxCodecRegistry.getCodec(d.nodeName),d=d.nextSibling;this.isCellCodec(c)||(c=mxCodecRegistry.getCodec(mxCell));c=c.decode(this,a);b&&this.insertIntoGraph(c)}return c};
+mxCodec.prototype.decode=function(a,b){this.updateElements();var c=null;null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT&&(c=this.getConstructor(a.nodeName),c=mxCodecRegistry.getCodec(c),null!=c?c=c.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as")));return c};mxCodec.prototype.getConstructor=function(a){var b=null;try{null==mxCodec.allowlist||0<=mxUtils.indexOf(mxCodec.allowlist,a)?b=window[a]:null!=window.console&&console.error("mxCodec.getConstructor: "+a+" not allowed in mxCodec.allowlist")}catch(c){}return b};
+mxCodec.prototype.encodeCell=function(a,b,c){b.appendChild(this.encode(a));if(null==c||c){c=a.getChildCount();for(var d=0;d<c;d++)this.encodeCell(a.getChildAt(d),b)}};mxCodec.prototype.isCellCodec=function(a){return null!=a&&"function"==typeof a.isCellCodec?a.isCellCodec():!1};
+mxCodec.prototype.decodeCell=function(a,b){b=null!=b?b:!0;var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=mxCodecRegistry.getCodec(a.nodeName);if(!this.isCellCodec(c))for(var d=a.firstChild;null!=d&&!this.isCellCodec(c);)c=mxCodecRegistry.getCodec(d.nodeName),d=d.nextSibling;this.isCellCodec(c)||(c=mxCodecRegistry.getCodec(mxCell));c=c.decode(this,a);b&&this.insertIntoGraph(c)}return c};
mxCodec.prototype.insertIntoGraph=function(a){var b=a.parent,c=a.getTerminal(!0),d=a.getTerminal(!1);a.setTerminal(null,!1);a.setTerminal(null,!0);a.parent=null;if(null!=b){if(b==a)throw Error(b.id+": Self Reference");b.insert(a)}null!=c&&c.insertEdge(a,!0);null!=d&&d.insertEdge(a,!1)};mxCodec.prototype.setAttribute=function(a,b,c){null!=b&&null!=c&&a.setAttribute(b,c)};
function mxObjectCodec(a,b,c,d){this.template=a;this.exclude=null!=b?b:[];this.idrefs=null!=c?c:[];this.mapping=null!=d?d:[];this.reverse={};for(var e in this.mapping)this.reverse[this.mapping[e]]=e}mxObjectCodec.allowEval=!1;mxObjectCodec.prototype.template=null;mxObjectCodec.prototype.exclude=null;mxObjectCodec.prototype.idrefs=null;mxObjectCodec.prototype.mapping=null;mxObjectCodec.prototype.reverse=null;mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)};
mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor};mxObjectCodec.prototype.getFieldName=function(a){if(null!=a){var b=this.reverse[a];null!=b&&(a=b)}return a};mxObjectCodec.prototype.getAttributeName=function(a){if(null!=a){var b=this.mapping[a];null!=b&&(a=b)}return a};mxObjectCodec.prototype.isExcluded=function(a,b,c,d){return b==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,b)};
@@ -2827,9 +2828,9 @@ this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeList
Date.prototype.toISOString||function(){function a(b){b=String(b);1===b.length&&(b="0"+b);return b}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
Uint8Array.from||(Uint8Array.from=function(){var a=Object.prototype.toString,b=function(d){return"function"===typeof d||"[object Function]"===a.call(d)},f=Math.pow(2,53)-1;return function(d){var g=Object(d);if(null==d)throw new TypeError("Array.from requires an array-like object - not null or undefined");var e=1<arguments.length?arguments[1]:void 0,k;if("undefined"!==typeof e){if(!b(e))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(k=
arguments[2])}var n=Number(g.length);n=isNaN(n)?0:0!==n&&isFinite(n)?(0<n?1:-1)*Math.floor(Math.abs(n)):n;n=Math.min(Math.max(n,0),f);for(var u=b(this)?Object(new this(n)):Array(n),m=0,r;m<n;)r=g[m],u[m]=e?"undefined"===typeof k?e(r,m):e.call(k,r,m):r,m+=1;u.length=n;return u}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
-mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
-mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
-mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null};
+mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxCodec.allowlist="mxStylesheet Array mxGraphModel mxCell mxGeometry mxRectangle mxPoint".split(" ");mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();
+mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;
+mxGraphView.prototype.unit=mxConstants.POINTS;mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null};
mxImageShape.prototype.getImageDataUri=function(){var a=this.image;if("data:image/svg+xml;base64,"==a.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=a)this.clippedSvg=Graph.clipSvgDataUri(a,!0),this.clippedImage=a;a=this.clippedSvg}return a};
Graph=function(a,b,f,d,g,e){mxGraph.call(this,a,b,f,d);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=e?e:!1;a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(I){I=this.getCurrentCellStyle(I);
return null!=I?"1"==I.html||"wrap"==I[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var k=null,n=null,u=null,m=null,r=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(I,L){if("mouseDown"==L.getProperty("eventName")&&this.isEnabled()){I=L.getProperty("event");var H=I.getState();L=this.view.scale;if(!mxEvent.isAltDown(I.getEvent())&&null!=H)if(this.model.isEdge(H.cell))if(k=new mxPoint(I.getGraphX(),I.getGraphY()),r=this.isCellSelected(H.cell),u=H,n=I,null!=H.text&&null!=
@@ -11472,13 +11473,13 @@ D){n=D.editorUi.editor.graph.getCellStyle(1==n.vertices.length&&0==n.edges.lengt
{val:"width",dispName:"Width"}]},{name:"noLabel",dispName:"Hide Label",type:"bool",defVal:!1},{name:"labelPadding",dispName:"Label Padding",type:"float",defVal:0},{name:"direction",dispName:"Direction",type:"enum",defVal:"east",enumList:[{val:"north",dispName:"North"},{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraint",dispName:"Constraint",type:"enum",defVal:"none",enumList:[{val:"none",dispName:"None"},{val:"north",dispName:"North"},
{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraintRotation",dispName:"Rotate Constraint",type:"bool",defVal:!1},{name:"connectable",dispName:"Connectable",type:"bool",getDefaultValue:function(n,D){return D.editorUi.editor.graph.isCellConnectable(0<n.vertices.length&&0==n.edges.length?n.vertices[0]:null)},isVisible:function(n,D){return 0<n.vertices.length&&0==n.edges.length}},{name:"allowArrows",dispName:"Allow Arrows",type:"bool",defVal:!0},
{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"perimeter",dispName:"Perimeter",defVal:"none",type:"enum",enumList:[{val:"none",dispName:"None"},{val:"rectanglePerimeter",dispName:"Rectangle"},{val:"ellipsePerimeter",dispName:"Ellipse"},{val:"rhombusPerimeter",dispName:"Rhombus"},{val:"trianglePerimeter",dispName:"Triangle"},{val:"hexagonPerimeter2",dispName:"Hexagon"},{val:"lifelinePerimeter",dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",
-dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(n,D){return 1==n.vertices.length&&0==n.edges.length}},
-{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(n,D){n=1==n.vertices.length&&0==n.edges.length?n.vertices[0]:null;D=D.editorUi.editor.graph;return null!=n&&(D.isSwimlane(n)||0<D.model.getChildCount(n))},isVisible:function(n,D){return 1==n.vertices.length&&0==n.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(n,D){var I=1==n.vertices.length&&0==n.edges.length?n.vertices[0]:null;D=D.editorUi.editor.graph;return null!=I&&(D.isContainer(I)&&
-"0"!=n.style.collapsible||!D.isContainer(I)&&"1"==n.style.collapsible)},isVisible:function(n,D){return 1==n.vertices.length&&0==n.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(n,D){return 1==n.vertices.length&&0==n.edges.length&&!D.editorUi.editor.graph.isSwimlane(n.vertices[0])&&null==mxUtils.getValue(n.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,
-isVisible:function(n,D){D=D.editorUi.editor.graph.model;return 0<n.vertices.length?D.isVertex(D.getParent(n.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(n,D){n=0<n.vertices.length?
-D.editorUi.editor.graph.getCellGeometry(n.vertices[0]):null;return null!=n&&!n.relative}},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",
-type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(n,D){var I=mxUtils.getValue(n.style,mxConstants.STYLE_FILLCOLOR,null);return D.editorUi.editor.graph.isSwimlane(n.vertices[0])||null==I||I==mxConstants.NONE||0==mxUtils.getValue(n.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(n.style,mxConstants.STYLE_OPACITY,100)||null!=n.style.pointerEvents}},{name:"moveCells",
-dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(n,D){return 0<n.vertices.length&&D.editorUi.editor.graph.isContainer(n.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Style to be used for objects not in the CSV. If this is - then such objects are ignored,\n## else they are created using this as their style, eg. whiteSpace=wrap;html=1;\n#\n# unknownStyle: -\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Collapsed state for vertices. Possible values are true or false. Default is false.\n#\n# collapsed: false\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle, orgchart or a JSON string as used in\n## Layout, Apply. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
+dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(n,D){return 1==n.vertices.length&&0==n.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(n,
+D){n=1==n.vertices.length&&0==n.edges.length?n.vertices[0]:null;D=D.editorUi.editor.graph;return null!=n&&(D.isSwimlane(n)||0<D.model.getChildCount(n))},isVisible:function(n,D){return 1==n.vertices.length&&0==n.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(n,D){var I=1==n.vertices.length&&0==n.edges.length?n.vertices[0]:null;D=D.editorUi.editor.graph;return null!=I&&(D.isContainer(I)&&"0"!=n.style.collapsible||!D.isContainer(I)&&"1"==n.style.collapsible)},
+isVisible:function(n,D){return 1==n.vertices.length&&0==n.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(n,D){return 1==n.vertices.length&&0==n.edges.length&&!D.editorUi.editor.graph.isSwimlane(n.vertices[0])&&null==mxUtils.getValue(n.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(n,D){D=D.editorUi.editor.graph.model;return 0<n.vertices.length?
+D.isVertex(D.getParent(n.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(n,D){n=0<n.vertices.length?D.editorUi.editor.graph.getCellGeometry(n.vertices[0]):null;return null!=n&&!n.relative}},
+{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"fixedWidth",dispName:"Fixed Width",type:"bool",defVal:!1},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},
+{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(n,D){var I=mxUtils.getValue(n.style,mxConstants.STYLE_FILLCOLOR,null);return D.editorUi.editor.graph.isSwimlane(n.vertices[0])||null==I||I==mxConstants.NONE||0==mxUtils.getValue(n.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(n.style,mxConstants.STYLE_OPACITY,100)||
+null!=n.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(n,D){return 0<n.vertices.length&&D.editorUi.editor.graph.isContainer(n.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Style to be used for objects not in the CSV. If this is - then such objects are ignored,\n## else they are created using this as their style, eg. whiteSpace=wrap;html=1;\n#\n# unknownStyle: -\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Collapsed state for vertices. Possible values are true or false. Default is false.\n#\n# collapsed: false\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle, orgchart or a JSON string as used in\n## Layout, Apply. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
Editor.createRoughCanvas=function(n){var D=rough.canvas({getContext:function(){return n}});D.draw=function(I){var S=I.sets||[];I=I.options||this.getDefaultOptions();for(var Q=0;Q<S.length;Q++){var P=S[Q];switch(P.type){case "path":null!=I.stroke&&this._drawToContext(n,P,I);break;case "fillPath":this._drawToContext(n,P,I);break;case "fillSketch":this.fillSketch(n,P,I)}}};D.fillSketch=function(I,S,Q){var P=n.state.strokeColor,T=n.state.strokeWidth,X=n.state.strokeAlpha,ba=n.state.dashed,ja=Q.fillWeight;
0>ja&&(ja=Q.strokeWidth/2);n.setStrokeAlpha(n.state.fillAlpha);n.setStrokeColor(Q.fill||"");n.setStrokeWidth(ja);n.setDashed(!1);this._drawToContext(I,S,Q);n.setDashed(ba);n.setStrokeWidth(T);n.setStrokeColor(P);n.setStrokeAlpha(X)};D._drawToContext=function(I,S,Q){I.begin();for(var P=0;P<S.ops.length;P++){var T=S.ops[P],X=T.data;switch(T.op){case "move":I.moveTo(X[0],X[1]);break;case "bcurveTo":I.curveTo(X[0],X[1],X[2],X[3],X[4],X[5]);break;case "lineTo":I.lineTo(X[0],X[1])}}I.end();"fillPath"===
S.type&&Q.filled?I.fill():I.stroke()};return D};(function(){function n(P,T,X){this.canvas=P;this.rc=T;this.shape=X;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,n.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,n.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,n.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
@@ -11710,7 +11711,7 @@ this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if
this.shadowVisible)}}else V.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible)};Editor.prototype.useCanvasForExport=!1;try{var U=document.createElement("canvas"),Y=new Image;Y.onload=function(){try{U.getContext("2d").drawImage(Y,
0,0);var n=U.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=n&&6<n.length}catch(D){}};Y.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(n){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};b.afterDecode=function(f,l,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="19.0.2";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="19.0.3";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&
"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(c,e,g,k,m,p,v){p=null!=p?p:0<=c.indexOf("NetworkError")||0<=c.indexOf("SecurityError")||0<=c.indexOf("NS_ERROR_FAILURE")||0<=c.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -12274,7 +12275,7 @@ App.getStoredMode=function(){var b=null;null==b&&isLocalStorage&&(b=localStorage
"#G"==window.location.hash.substring(0,2)?mxscript("https://apis.google.com/js/api.js"):"0"!=urlParams.chrome||null!=window.location.hash&&"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"===window.location.hash.substring(0,45)||(window.DriveClient=null):window.DriveClient=null),"function"===typeof window.DropboxClient&&("0"!=urlParams.db&&isSvgBrowser&&(null==document.documentMode||9<document.documentMode)?App.mode==App.MODE_DROPBOX||null!=window.location.hash&&"#D"==window.location.hash.substring(0,
2)?mxscript(App.DROPBOX_URL,function(){mxscript(App.DROPINS_URL,null,"dropboxjs",App.DROPBOX_APPKEY,!0)}):"0"==urlParams.chrome&&(window.DropboxClient=null):window.DropboxClient=null),"function"===typeof window.OneDriveClient&&("0"!=urlParams.od&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?App.mode==App.MODE_ONEDRIVE||null!=window.location.hash&&"#W"==window.location.hash.substring(0,2)?mxscript(App.ONEDRIVE_URL):"0"==urlParams.chrome&&(window.OneDriveClient=
null):window.OneDriveClient=null),"function"===typeof window.TrelloClient&&("1"==urlParams.tr&&isSvgBrowser&&!mxClient.IS_IE11&&(null==document.documentMode||10<=document.documentMode)?App.mode==App.MODE_TRELLO||null!=window.location.hash&&"#T"==window.location.hash.substring(0,2)?mxscript(App.TRELLO_JQUERY_URL,function(){mxscript(App.TRELLO_URL)}):"0"==urlParams.chrome&&(window.TrelloClient=null):window.TrelloClient=null)))})();
-App.clearServiceWorker=function(b){navigator.serviceWorker.getRegistrations().then(function(f){if(null!=f&&0<f.length){for(var l=0;l<f.length;l++)f[l].unregister();null!=b&&b()}})};
+App.clearServiceWorker=function(b,f){navigator.serviceWorker.getRegistrations().then(function(l){if(null!=l&&0<l.length){for(var d=0;d<l.length;d++)l[d].unregister();null!=b&&b()}})["catch"](function(){null!=f&&f()})};
App.main=function(b,f){function l(k){mxUtils.getAll("1"!=urlParams.dev?[k]:[k,STYLE_PATH+"/default.xml"],function(m){function p(){var K=null!=f?f():new App(new Editor("0"==urlParams.chrome||"min"==uiTheme,null,null,null,"0"!=urlParams.chrome));if(null!=window.mxscript){if("function"===typeof window.DropboxClient&&null==window.Dropbox&&null!=window.DrawDropboxClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&isSvgBrowser&&(null==document.documentMode||
9<document.documentMode))mxscript(App.DROPBOX_URL,function(){mxscript(App.DROPINS_URL,function(){DrawDropboxClientCallback()},"dropboxjs",App.DROPBOX_APPKEY)});else if("undefined"===typeof window.Dropbox||"undefined"===typeof window.Dropbox.choose)window.DropboxClient=null;"function"===typeof window.OneDriveClient&&"undefined"===typeof OneDrive&&null!=window.DrawOneDriveClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&(null==navigator.userAgent||
0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.ONEDRIVE_URL,window.DrawOneDriveClientCallback):"undefined"===typeof window.OneDrive&&(window.OneDriveClient=null);"function"===typeof window.TrelloClient&&!mxClient.IS_IE11&&"undefined"===typeof window.Trello&&null!=window.DrawTrelloClientCallback&&"1"==urlParams.tr&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.TRELLO_JQUERY_URL,function(){mxscript(App.TRELLO_URL,
@@ -12792,7 +12793,7 @@ H.innerHTML="+";M.appendChild(H);mxUtils.write(M,mxResources.get("moreShapes"));
M.className="geTitle",H=document.createElement("span"),H.style.cssText="position:relative;top:6px;",mxUtils.write(H,mxResources.get("newLibrary")),M.appendChild(H),B.appendChild(M),mxEvent.addListener(M,"click",A.actions.get("newLibrary").funct),M=document.createElement("div"),M.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;",M.className="geTitle",H=document.createElement("span"),
H.style.cssText="position:relative;top:6px;",mxUtils.write(H,mxResources.get("openLibrary")),M.appendChild(H),B.appendChild(M),mxEvent.addListener(M,"click",A.actions.get("openLibrary").funct)):(M=G("newLibrary",mxResources.get("newLibrary")),M.style.boxSizing="border-box",M.style.paddingRight="6px",M.style.paddingLeft="6px",M.style.height="32px",M.style.left="0",M=G("openLibraryFrom",mxResources.get("openLibraryFrom")),M.style.borderLeft="1px solid lightgray",M.style.boxSizing="border-box",M.style.paddingRight=
"6px",M.style.paddingLeft="6px",M.style.height="32px",M.style.left="50%");B.appendChild(A.sidebar.container);B.style.overflow="hidden"}function l(A,B){if(EditorUi.windowed){var G=A.editor.graph;G.popupMenuHandler.hideMenu();if(null==A.sidebarWindow){B=Math.min(G.container.clientWidth-10,218);var M="1"==urlParams.embedInline?650:Math.min(G.container.clientHeight-40,650);A.sidebarWindow=new u(A,mxResources.get("shapes"),"1"==urlParams.sketch&&"1"!=urlParams.embedInline?66:10,"1"==urlParams.sketch&&
-"1"!=urlParams.embedInline?Math.max(30,(G.container.clientHeight-M)/2):56,B-6,M-6,function(H){f(A,H)});A.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){A.sidebarWindow.window.fit()}));A.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);A.sidebarWindow.window.setVisible(!0);A.getLocalData("sidebar",function(H){A.sidebar.showEntries(H,null,!0)});A.restoreLibraries()}else A.sidebarWindow.window.setVisible(null!=B?B:!A.sidebarWindow.window.isVisible())}else null==
+"1"!=urlParams.embedInline?Math.max(30,(G.container.clientHeight-M)/2):56,B-6,M-6,function(H){f(A,H)});A.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){A.sidebarWindow.window.fit()}));A.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);A.sidebarWindow.window.setVisible(!0);isLocalStorage&&A.getLocalData("sidebar",function(H){A.sidebar.showEntries(H,null,!0)});A.restoreLibraries()}else A.sidebarWindow.window.setVisible(null!=B?B:!A.sidebarWindow.window.isVisible())}else null==
A.sidebarElt&&(A.sidebarElt=t(),f(A,A.sidebarElt),A.sidebarElt.style.border="none",A.sidebarElt.style.width="210px",A.sidebarElt.style.borderRight="1px solid gray"),G=A.diagramContainer.parentNode,null!=A.sidebarElt.parentNode?(A.sidebarElt.parentNode.removeChild(A.sidebarElt),G.style.left="0px"):(G.parentNode.appendChild(A.sidebarElt),G.style.left=A.sidebarElt.style.width)}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=
null;else{var d=0;try{d=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}catch(A){}var t=function(){var A=document.createElement("div");A.className="geSidebarContainer";A.style.position="absolute";A.style.width="100%";A.style.height="100%";A.style.border="1px solid whiteSmoke";A.style.overflowX="hidden";A.style.overflowY="auto";return A},u=function(A,B,G,M,H,F,J){var R=t();J(R);this.window=new mxWindow(B,R,G,M,H,F,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);
this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(W,O){var V=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,U=this.table.firstChild.firstChild.firstChild;W=Math.max(0,Math.min(W,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-U.clientWidth-2));O=Math.max(0,Math.min(O,V-U.clientHeight-2));this.getX()==W&&this.getY()==O||mxWindow.prototype.setLocation.apply(this,
@@ -12846,60 +12847,60 @@ App.MODE_ATLAS?("1"!=urlParams.noExitBtn||A.mode==App.MODE_ATLAS)&&A.menus.addMe
this.addMenuItems(O,["upload"],V):A.menus.addMenuItems(O,["makeCopy"],V));A.menus.addMenuItems(O,["-","autosave"],V);null!=U&&U.isRevisionHistorySupported()&&A.menus.addMenuItems(O,["-","revisionHistory"],V)})));var H=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(O,V){H.funct(O,V);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||A.menus.addMenuItems(O,["publishLink"],V);A.mode!=App.MODE_ATLAS&&"1"!=urlParams.extAuth&&(O.addSeparator(V),A.menus.addSubmenu("embed",O,V))})));
var F=this.get("language");this.put("table",new Menu(mxUtils.bind(this,function(O,V){A.menus.addInsertTableCellItem(O,V)})));if("1"==urlParams.sketch){var J=this.get("units");this.put("units",new Menu(mxUtils.bind(this,function(O,V){J.funct(O,V);this.addMenuItems(O,["-","pageScale","-","ruler"],V)})))}this.put("extras",new Menu(mxUtils.bind(this,function(O,V){null!=F&&A.menus.addSubmenu("language",O,V);"1"!=urlParams.embed&&"1"!=urlParams.extAuth&&A.mode!=App.MODE_ATLAS&&A.menus.addSubmenu("theme",
O,V);A.menus.addSubmenu("units",O,V);O.addSeparator(V);"1"!=urlParams.sketch&&A.menus.addMenuItems(O,"pageScale ruler scrollbars - tooltips copyConnect collapseExpand".split(" "),V);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&A.mode!=App.MODE_ATLAS&&A.menus.addMenuItems(O,["-","showStartScreen","search","scratchpad"],V);O.addSeparator(V);"1"==urlParams.sketch?A.menus.addMenuItems(O,"configuration - copyConnect collapseExpand tooltips -".split(" "),
-V):(A.mode!=App.MODE_ATLAS&&A.menus.addMenuItem(O,"configuration",V),!A.isOfflineApp()&&isLocalStorage&&A.mode!=App.MODE_ATLAS&&A.menus.addMenuItem(O,"plugins",V));var U=A.getCurrentFile();null!=U&&U.isRealtimeEnabled()&&U.isRealtimeSupported()&&this.addMenuItems(O,["-","showRemoteCursors","shareCursor","-"],V);O.addSeparator(V);A.mode!=App.MODE_ATLAS&&this.addMenuItems(O,["fullscreen"],V);("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(O,["toggleDarkMode"],
-V);O.addSeparator(V)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(O,V){A.menus.addMenuItems(O,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),V)})));mxUtils.bind(this,function(){var O=this.get("insert"),V=O.funct;O.funct=function(U,Y){"1"==urlParams.sketch?(A.insertTemplateEnabled&&!A.isOffline()&&A.menus.addMenuItems(U,["insertTemplate"],Y),A.menus.addMenuItems(U,["insertImage","insertLink","-"],Y),A.menus.addSubmenu("insertAdvanced",
-U,Y,mxResources.get("advanced")),A.menus.addSubmenu("layout",U,Y)):(V.apply(this,arguments),A.menus.addSubmenu("table",U,Y))}})();var R="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),W=function(O,V,U,Y){O.addItem(U,null,mxUtils.bind(this,function(){var n=new CreateGraphDialog(A,U,Y);A.showDialog(n.container,620,420,!0,!1);n.init()}),V)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(O,V){for(var U=0;U<R.length;U++)"-"==R[U]?O.addSeparator(V):
-W(O,V,mxResources.get(R[U])+"...",R[U])})))};EditorUi.prototype.installFormatToolbar=function(A){var B=this.editor.graph,G=document.createElement("div");G.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";B.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(M,H){0<B.getSelectionCount()?(A.appendChild(G),G.innerHTML="Selected: "+
-B.getSelectionCount()):null!=G.parentNode&&G.parentNode.removeChild(G)}))};var q=!1;EditorUi.prototype.initFormatWindow=function(){if(!q&&null!=this.formatWindow){q=!0;this.formatWindow.window.setClosable(!1);var A=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){A.apply(this,arguments);this.minimized?(this.div.style.width="90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width=
-"240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(B){mxEvent.getSource(B)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var C=EditorUi.prototype.init;EditorUi.prototype.init=function(){function A(aa,ca,na){var la=F.menus.get(aa),oa=O.addMenu(mxResources.get(aa),mxUtils.bind(this,function(){la.funct.apply(this,arguments)}),W);oa.className=
-"1"==urlParams.sketch?"geToolbarButton":"geMenuItem";oa.style.display="inline-block";oa.style.boxSizing="border-box";oa.style.top="6px";oa.style.marginRight="6px";oa.style.height="30px";oa.style.paddingTop="6px";oa.style.paddingBottom="6px";oa.style.cursor="pointer";oa.setAttribute("title",mxResources.get(aa));F.menus.menuCreated(la,oa,"geMenuItem");null!=na?(oa.style.backgroundImage="url("+na+")",oa.style.backgroundPosition="center center",oa.style.backgroundRepeat="no-repeat",oa.style.backgroundSize=
-"24px 24px",oa.style.width="34px",oa.innerText=""):ca||(oa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",oa.style.backgroundPosition="right 6px center",oa.style.backgroundRepeat="no-repeat",oa.style.paddingRight="22px");return oa}function B(aa,ca,na,la,oa,ra){var ia=document.createElement("a");ia.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";ia.style.display="inline-block";ia.style.boxSizing="border-box";ia.style.height="30px";ia.style.padding="6px";ia.style.position=
-"relative";ia.style.verticalAlign="top";ia.style.top="0px";"1"==urlParams.sketch&&(ia.style.borderStyle="none",ia.style.boxShadow="none",ia.style.padding="6px",ia.style.margin="0px");null!=F.statusContainer?R.insertBefore(ia,F.statusContainer):R.appendChild(ia);null!=ra?(ia.style.backgroundImage="url("+ra+")",ia.style.backgroundPosition="center center",ia.style.backgroundRepeat="no-repeat",ia.style.backgroundSize="24px 24px",ia.style.width="34px"):mxUtils.write(ia,aa);mxEvent.addListener(ia,mxClient.IS_POINTER?
-"pointerdown":"mousedown",mxUtils.bind(this,function(Da){Da.preventDefault()}));mxEvent.addListener(ia,"click",function(Da){"disabled"!=ia.getAttribute("disabled")&&ca(Da);mxEvent.consume(Da)});null==na&&(ia.style.marginRight="4px");null!=la&&ia.setAttribute("title",la);null!=oa&&(aa=function(){oa.isEnabled()?(ia.removeAttribute("disabled"),ia.style.cursor="pointer"):(ia.setAttribute("disabled","disabled"),ia.style.cursor="default")},oa.addListener("stateChanged",aa),J.addListener("enabledChanged",
-aa),aa());return ia}function G(aa,ca,na){na=document.createElement("div");na.className="geMenuItem";na.style.display="inline-block";na.style.verticalAlign="top";na.style.marginRight="6px";na.style.padding="0 4px 0 4px";na.style.height="30px";na.style.position="relative";na.style.top="0px";"1"==urlParams.sketch&&(na.style.boxShadow="none");for(var la=0;la<aa.length;la++)null!=aa[la]&&("1"==urlParams.sketch&&(aa[la].style.padding="10px 8px",aa[la].style.width="30px"),aa[la].style.margin="0px",aa[la].style.boxShadow=
-"none",na.appendChild(aa[la]));null!=ca&&mxUtils.setOpacity(na,ca);null!=F.statusContainer&&"1"!=urlParams.sketch?R.insertBefore(na,F.statusContainer):R.appendChild(na);return na}function M(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(Q.style.left=58>S.offsetTop-S.offsetHeight/2?"70px":"10px");else{for(var aa=R.firstChild;null!=aa;){var ca=aa.nextSibling;"geMenuItem"!=aa.className&&"geItem"!=aa.className||aa.parentNode.removeChild(aa);aa=ca}W=R.firstChild;d=window.innerWidth||document.documentElement.clientWidth||
-document.body.clientWidth;aa=1E3>d||"1"==urlParams.sketch;var na=null;aa||(na=A("diagram"));ca=aa?A("diagram",null,Editor.drawLogoImage):null;null!=ca&&(na=ca);G([na,B(mxResources.get("shapes"),F.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),F.actions.get("image"),aa?Editor.shapesImage:null),B(mxResources.get("format"),F.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+F.actions.get("formatPanel").shortcut+")",F.actions.get("image"),aa?Editor.formatImage:null)],
-aa?60:null);ca=A("insert",!0,aa?D:null);G([ca,B(mxResources.get("delete"),F.actions.get("delete").funct,null,mxResources.get("delete"),F.actions.get("delete"),aa?Editor.trashImage:null)],aa?60:null);411<=d&&(G([Ma,Ia],60),520<=d&&G([ta,640<=d?B("",Ba.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",Ba,Editor.zoomInImage):null,640<=d?B("",Ha.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",Ha,Editor.zoomOutImage):null],60))}null!=na&&(mxEvent.disableContextMenu(na),mxEvent.addGestureListeners(na,
-mxUtils.bind(this,function(la){(mxEvent.isShiftDown(la)||mxEvent.isAltDown(la)||mxEvent.isMetaDown(la)||mxEvent.isControlDown(la)||mxEvent.isPopupTrigger(la))&&F.appIconClicked(la)}),null,null));ca=F.menus.get("language");null!=ca&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=d&&"1"!=urlParams.sketch?(null==wa&&(ca=O.addMenu("",ca.funct),ca.setAttribute("title",mxResources.get("language")),ca.className="geToolbarButton",ca.style.backgroundImage="url("+Editor.globeImage+")",ca.style.backgroundPosition=
-"center center",ca.style.backgroundRepeat="no-repeat",ca.style.backgroundSize="24px 24px",ca.style.position="absolute",ca.style.height="24px",ca.style.width="24px",ca.style.zIndex="1",ca.style.right="8px",ca.style.cursor="pointer",ca.style.top="1"==urlParams.embed?"12px":"11px",R.appendChild(ca),wa=ca),F.buttonContainer.style.paddingRight="34px"):(F.buttonContainer.style.paddingRight="4px",null!=wa&&(wa.parentNode.removeChild(wa),wa=null))}C.apply(this,arguments);"1"!=urlParams.embedInline&&this.doSetDarkMode(null!=
-urlParams.dark?1==urlParams.dark&&!mxClient.IS_IE&&!mxClient.IS_IE11:null!=mxSettings.settings.darkMode?mxSettings.settings.darkMode:window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches);var H=document.createElement("div");H.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";H.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(H);"1"==urlParams.sketch&&null!=this.sidebar&&this.isSettingsEnabled()&&
-(this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save()),this.sidebar.showPalette("search",mxSettings.settings.search));if("1"!=urlParams.sketch&&1E3<=d||null!=urlParams.clibs||null!=urlParams.libs||null!=urlParams["search-shapes"])l(this,!0),null!=this.sidebar&&null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes&&(this.sidebar.searchShapes(urlParams["search-shapes"]),this.sidebar.showEntries("search"));
-var F=this;mxWindow.prototype.fit=function(){if(Editor.inlineFullscreen||null==F.embedViewport)mxUtils.fit(this.div);else{var aa=parseInt(this.div.offsetLeft),ca=parseInt(this.div.offsetWidth),na=F.embedViewport.x+F.embedViewport.width,la=parseInt(this.div.offsetTop),oa=parseInt(this.div.offsetHeight),ra=F.embedViewport.y+F.embedViewport.height;this.div.style.left=Math.max(F.embedViewport.x,Math.min(aa,na-ca))+"px";this.div.style.top=Math.max(F.embedViewport.y,Math.min(la,ra-oa))+"px";this.div.style.height=
-Math.min(F.embedViewport.height,parseInt(this.div.style.height))+"px";this.div.style.width=Math.min(F.embedViewport.width,parseInt(this.div.style.width))+"px"}};this.keyHandler.bindAction(75,!0,"toggleShapes",!0);EditorUi.windowed&&("1"==urlParams.sketch||1E3<=d)&&"1"!=urlParams.embedInline&&(b(this,!0),"1"==urlParams.sketch?(this.initFormatWindow(),H=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,null!=this.formatWindow&&(1200>d||708>H)?this.formatWindow.window.toggleMinimized():
-this.formatWindow.window.setVisible(!0)):this.formatWindow.window.setVisible(!0));F=this;var J=F.editor.graph;F.toolbar=this.createToolbar(F.createDiv("geToolbar"));F.defaultLibraryName=mxResources.get("untitledLibrary");var R=document.createElement("div");R.className="geMenubarContainer";var W=null,O=new Menubar(F,R);F.statusContainer=F.createStatusContainer();F.statusContainer.style.position="relative";F.statusContainer.style.maxWidth="";F.statusContainer.style.marginTop="7px";F.statusContainer.style.marginLeft=
-"6px";F.statusContainer.style.color="gray";F.statusContainer.style.cursor="default";var V=F.hideCurrentMenu;F.hideCurrentMenu=function(){V.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};var U=F.descriptorChanged;F.descriptorChanged=function(){U.apply(this,arguments);var aa=F.getCurrentFile();if(null!=aa&&null!=aa.getTitle()){var ca=aa.getMode();"google"==ca?ca="googleDrive":"github"==ca?ca="gitHub":"gitlab"==ca?ca="gitLab":"onedrive"==ca&&(ca="oneDrive");ca=mxResources.get(ca);
-R.setAttribute("title",aa.getTitle()+(null!=ca?" ("+ca+")":""))}else R.removeAttribute("title")};F.setStatusText(F.editor.getStatus());R.appendChild(F.statusContainer);F.buttonContainer=document.createElement("div");F.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";R.appendChild(F.buttonContainer);F.menubarContainer=F.buttonContainer;F.tabContainer=document.createElement("div");F.tabContainer.className=
-"geTabContainer";F.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";H=F.diagramContainer.parentNode;var Y=document.createElement("div");Y.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";F.diagramContainer.style.top="1"==urlParams.sketch?"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){Y.style.top="20px";F.titlebar=document.createElement("div");F.titlebar.style.cssText=
-"position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var n=document.createElement("div");n.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";F.titlebar.appendChild(n);H.appendChild(F.titlebar)}n=F.menus.get("viewZoom");var D="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,I="1"==urlParams.sketch?document.createElement("div"):
-null,S="1"==urlParams.sketch?document.createElement("div"):null,Q="1"==urlParams.sketch?document.createElement("div"):null,P=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();J.refresh();J.view.validateBackground()});F.addListener("darkModeChanged",P);F.addListener("sketchModeChanged",P);var T=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)Q.style.left="10px",Q.style.top="10px",S.style.left="10px",S.style.top="60px",I.style.top="10px",I.style.right="12px",I.style.left=
-"",F.diagramContainer.setAttribute("data-bounds",F.diagramContainer.style.top+" "+F.diagramContainer.style.left+" "+F.diagramContainer.style.width+" "+F.diagramContainer.style.height),F.diagramContainer.style.top="0px",F.diagramContainer.style.left="0px",F.diagramContainer.style.bottom="0px",F.diagramContainer.style.right="0px",F.diagramContainer.style.width="",F.diagramContainer.style.height="";else{var aa=F.diagramContainer.getAttribute("data-bounds");if(null!=aa){F.diagramContainer.style.background=
-"transparent";F.diagramContainer.removeAttribute("data-bounds");var ca=J.getGraphBounds();aa=aa.split(" ");F.diagramContainer.style.top=aa[0];F.diagramContainer.style.left=aa[1];F.diagramContainer.style.width=ca.width+50+"px";F.diagramContainer.style.height=ca.height+46+"px";F.diagramContainer.style.bottom="";F.diagramContainer.style.right="";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",rect:F.diagramContainer.getBoundingClientRect()}),"*");F.refresh()}Q.style.left=F.diagramContainer.offsetLeft+
-"px";Q.style.top=F.diagramContainer.offsetTop-Q.offsetHeight-4+"px";S.style.display="";S.style.left=F.diagramContainer.offsetLeft-S.offsetWidth-4+"px";S.style.top=F.diagramContainer.offsetTop+"px";I.style.left=F.diagramContainer.offsetLeft+F.diagramContainer.offsetWidth-I.offsetWidth+"px";I.style.top=Q.style.top;I.style.right="";F.bottomResizer.style.left=F.diagramContainer.offsetLeft+(F.diagramContainer.offsetWidth-F.bottomResizer.offsetWidth)/2+"px";F.bottomResizer.style.top=F.diagramContainer.offsetTop+
-F.diagramContainer.offsetHeight-F.bottomResizer.offsetHeight/2-1+"px";F.rightResizer.style.left=F.diagramContainer.offsetLeft+F.diagramContainer.offsetWidth-F.rightResizer.offsetWidth/2-1+"px";F.rightResizer.style.top=F.diagramContainer.offsetTop+(F.diagramContainer.offsetHeight-F.bottomResizer.offsetHeight)/2+"px"}F.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";F.rightResizer.style.visibility=F.bottomResizer.style.visibility;R.style.display="none";Q.style.visibility="";I.style.visibility=
-""}),X=mxUtils.bind(this,function(){Ea.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";T()});P=mxUtils.bind(this,function(){X();b(F,!0);F.initFormatWindow();var aa=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(aa.x+aa.width+4,aa.y)});F.addListener("inlineFullscreenChanged",X);F.addListener("editInlineStart",
-P);"1"==urlParams.embedInline&&F.addListener("darkModeChanged",P);F.addListener("editInlineStop",mxUtils.bind(this,function(aa){F.diagramContainer.style.width="10px";F.diagramContainer.style.height="10px";F.diagramContainer.style.border="";F.bottomResizer.style.visibility="hidden";F.rightResizer.style.visibility="hidden";Q.style.visibility="hidden";I.style.visibility="hidden";S.style.display="none"}));if(null!=F.hoverIcons){var ba=F.hoverIcons.update;F.hoverIcons.update=function(){J.freehand.isDrawing()||
-ba.apply(this,arguments)}}if(null!=J.freehand){var ja=J.freehand.createStyle;J.freehand.createStyle=function(aa){return ja.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){S.className="geToolbarContainer";I.className="geToolbarContainer";Q.className="geToolbarContainer";R.className="geToolbarContainer";F.picker=S;var Z=!1;"1"!=urlParams.embed&&"atlassian"!=F.getServiceName()&&(mxEvent.addListener(R,"mouseenter",function(){F.statusContainer.style.display="inline-block"}),mxEvent.addListener(R,
-"mouseleave",function(){Z||(F.statusContainer.style.display="none")}));var ka=mxUtils.bind(this,function(aa){null!=F.notificationBtn&&(null!=aa?F.notificationBtn.setAttribute("title",aa):F.notificationBtn.removeAttribute("title"))});R.style.visibility=20>R.clientWidth?"hidden":"";F.editor.addListener("statusChanged",mxUtils.bind(this,function(){F.setStatusText(F.editor.getStatus());if("1"!=urlParams.embed&&"atlassian"!=F.getServiceName())if(F.statusContainer.style.display="inline-block",Z=!0,1==F.statusContainer.children.length&&
-""==F.editor.getStatus())R.style.visibility="hidden";else{if(0==F.statusContainer.children.length||1==F.statusContainer.children.length&&"function"===typeof F.statusContainer.firstChild.getAttribute&&null==F.statusContainer.firstChild.getAttribute("class")){var aa=null!=F.statusContainer.firstChild&&"function"===typeof F.statusContainer.firstChild.getAttribute?F.statusContainer.firstChild.getAttribute("title"):F.editor.getStatus();ka(aa);var ca=F.getCurrentFile();ca=null!=ca?ca.savingStatusKey:DrawioFile.prototype.savingStatusKey;
-aa==mxResources.get(ca)+"..."?(F.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(ca))+'..."src="'+Editor.tailSpin+'">',F.statusContainer.style.display="inline-block",Z=!0):6<F.buttonContainer.clientWidth&&(F.statusContainer.style.display="none",Z=!1)}else F.statusContainer.style.display="inline-block",ka(null),Z=!0;R.style.visibility=20>R.clientWidth&&!Z?"hidden":""}}));ea=A("diagram",null,Editor.menuImage);ea.style.boxShadow="none";ea.style.padding="6px";ea.style.margin=
-"0px";Q.appendChild(ea);mxEvent.disableContextMenu(ea);mxEvent.addGestureListeners(ea,mxUtils.bind(this,function(aa){(mxEvent.isShiftDown(aa)||mxEvent.isAltDown(aa)||mxEvent.isMetaDown(aa)||mxEvent.isControlDown(aa)||mxEvent.isPopupTrigger(aa))&&this.appIconClicked(aa)}),null,null);F.statusContainer.style.position="";F.statusContainer.style.display="none";F.statusContainer.style.margin="0px";F.statusContainer.style.padding="6px 0px";F.statusContainer.style.maxWidth=Math.min(d-240,280)+"px";F.statusContainer.style.display=
-"inline-block";F.statusContainer.style.textOverflow="ellipsis";F.buttonContainer.style.position="";F.buttonContainer.style.paddingRight="0px";F.buttonContainer.style.display="inline-block";var da=document.createElement("a");da.style.padding="0px";da.style.boxShadow="none";da.className="geMenuItem";da.style.display="inline-block";da.style.width="40px";da.style.height="12px";da.style.marginBottom="-2px";da.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";da.style.backgroundPosition=
-"top center";da.style.backgroundRepeat="no-repeat";da.setAttribute("title","Minimize");var fa=!1,ma=mxUtils.bind(this,function(){S.innerText="";if(!fa){var aa=function(la,oa,ra){la=B("",la.funct,null,oa,la,ra);la.style.width="40px";la.style.opacity="0.7";return ca(la,null,"pointer")},ca=function(la,oa,ra){null!=oa&&la.setAttribute("title",oa);la.style.cursor=null!=ra?ra:"default";la.style.margin="2px 0px";S.appendChild(la);mxUtils.br(S);return la};ca(F.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
-60,30,"Text",mxResources.get("text"),!0,!1,null,!0,!0),mxResources.get("text")+" ("+Editor.ctrlKey+"+Shift+X)");ca(F.sidebar.createVertexTemplate("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontColor=#000000;darkOpacity=0.05;fillColor=#FFF9B2;strokeColor=none;fillStyle=solid;direction=west;gradientDirection=north;gradientColor=#FFF2A1;shadow=1;size=20;pointerEvents=1;",140,160,"",mxResources.get("note"),!0,!1,null,!0),mxResources.get("note"));ca(F.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
-160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");ca(F.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var la=new mxCell("",new mxGeometry(0,0,J.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");la.geometry.setTerminalPoint(new mxPoint(0,0),!0);la.geometry.setTerminalPoint(new mxPoint(la.geometry.width,
-0),!1);la.geometry.points=[];la.geometry.relative=!0;la.edge=!0;ca(F.sidebar.createEdgeTemplateFromCells([la],la.geometry.width,la.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));la=la.clone();la.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";la.geometry.width=J.defaultEdgeLength+20;la.geometry.setTerminalPoint(new mxPoint(0,20),!0);la.geometry.setTerminalPoint(new mxPoint(la.geometry.width,20),!1);la=
-ca(F.sidebar.createEdgeTemplateFromCells([la],la.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));la.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");la.style.paddingBottom="14px";la.style.marginBottom="14px"})();aa(F.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var na=F.actions.get("toggleShapes");aa(na,mxResources.get("shapes")+" ("+na.shortcut+")",D);ea=A("table",null,Editor.calendarImage);ea.style.boxShadow=
-"none";ea.style.opacity="0.7";ea.style.padding="6px";ea.style.margin="0px";ea.style.width="37px";ca(ea,null,"pointer");ea=A("insert",null,Editor.plusImage);ea.style.boxShadow="none";ea.style.opacity="0.7";ea.style.padding="6px";ea.style.margin="0px";ea.style.width="37px";ca(ea,null,"pointer")}"1"!=urlParams.embedInline&&S.appendChild(da)});mxEvent.addListener(da,"click",mxUtils.bind(this,function(){fa?(mxUtils.setPrefixedStyle(S.style,"transform","translate(0, -50%)"),S.style.padding="8px 6px 4px",
-S.style.top="50%",S.style.bottom="",S.style.height="",da.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",da.style.width="40px",da.style.height="12px",da.setAttribute("title","Minimize"),fa=!1,ma()):(S.innerText="",S.appendChild(da),mxUtils.setPrefixedStyle(S.style,"transform","translate(0, 0)"),S.style.top="",S.style.bottom="12px",S.style.padding="0px",S.style.height="24px",da.style.height="24px",da.style.backgroundImage="url("+Editor.plusImage+")",da.setAttribute("title",mxResources.get("insert")),
-da.style.width="24px",fa=!0)}));ma();F.addListener("darkModeChanged",ma);F.addListener("sketchModeChanged",ma)}else F.editor.addListener("statusChanged",mxUtils.bind(this,function(){F.setStatusText(F.editor.getStatus())}));if(null!=n){var ya=function(aa){mxEvent.isShiftDown(aa)?(F.hideCurrentMenu(),F.actions.get("smartFit").funct(),mxEvent.consume(aa)):mxEvent.isAltDown(aa)&&(F.hideCurrentMenu(),F.actions.get("customZoom").funct(),mxEvent.consume(aa))},Ba=F.actions.get("zoomIn"),Ha=F.actions.get("zoomOut"),
-sa=F.actions.get("resetView");P=F.actions.get("fullscreen");var Ga=F.actions.get("undo"),Ka=F.actions.get("redo"),Ma=B("",Ga.funct,null,mxResources.get("undo")+" ("+Ga.shortcut+")",Ga,Editor.undoImage),Ia=B("",Ka.funct,null,mxResources.get("redo")+" ("+Ka.shortcut+")",Ka,Editor.redoImage),Ea=B("",P.funct,null,mxResources.get("fullscreen"),P,Editor.fullscreenImage);if(null!=I){sa=function(){pa.style.display=null!=F.pages&&("0"!=urlParams.pages||1<F.pages.length||Editor.pagesVisible)?"inline-block":
-"none"};var Fa=function(){pa.innerText="";if(null!=F.currentPage){mxUtils.write(pa,F.currentPage.getName());var aa=null!=F.pages?F.pages.length:1,ca=F.getPageIndex(F.currentPage);ca=null!=ca?ca+1:1;var na=F.currentPage.getId();pa.setAttribute("title",F.currentPage.getName()+" ("+ca+"/"+aa+")"+(null!=na?" ["+na+"]":""))}};Ea.parentNode.removeChild(Ea);var Pa=F.actions.get("delete"),Aa=B("",Pa.funct,null,mxResources.get("delete"),Pa,Editor.trashImage);Aa.style.opacity="0.1";Q.appendChild(Aa);Pa.addListener("stateChanged",
-function(){Aa.style.opacity=Pa.enabled?"":"0.1"});var za=function(){Ma.style.display=0<F.editor.undoManager.history.length||J.isEditing()?"inline-block":"none";Ia.style.display=Ma.style.display;Ma.style.opacity=Ga.enabled?"":"0.1";Ia.style.opacity=Ka.enabled?"":"0.1"};Q.appendChild(Ma);Q.appendChild(Ia);Ga.addListener("stateChanged",za);Ka.addListener("stateChanged",za);za();var pa=this.createPageMenuTab(!1,!0);pa.style.display="none";pa.style.position="";pa.style.marginLeft="";pa.style.top="";pa.style.left=
-"";pa.style.height="100%";pa.style.lineHeight="";pa.style.borderStyle="none";pa.style.padding="3px 0";pa.style.margin="0px";pa.style.background="";pa.style.border="";pa.style.boxShadow="none";pa.style.verticalAlign="top";pa.style.width="auto";pa.style.maxWidth="160px";pa.style.position="relative";pa.style.padding="6px";pa.style.textOverflow="ellipsis";pa.style.opacity="0.8";I.appendChild(pa);F.editor.addListener("pagesPatched",Fa);F.editor.addListener("pageSelected",Fa);F.editor.addListener("pageRenamed",
-Fa);F.editor.addListener("fileLoaded",Fa);Fa();F.addListener("fileDescriptorChanged",sa);F.addListener("pagesVisibleChanged",sa);F.editor.addListener("pagesPatched",sa);sa();sa=B("",Ha.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",Ha,Editor.zoomOutImage);I.appendChild(sa);var ea=O.addMenu("100%",n.funct);ea.setAttribute("title",mxResources.get("zoom"));ea.innerHTML="100%";ea.style.display="inline-block";ea.style.color="inherit";ea.style.cursor="pointer";ea.style.textAlign=
-"center";ea.style.whiteSpace="nowrap";ea.style.paddingRight="10px";ea.style.textDecoration="none";ea.style.verticalAlign="top";ea.style.padding="6px 0";ea.style.fontSize="14px";ea.style.width="40px";ea.style.opacity="0.4";I.appendChild(ea);n=B("",Ba.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",Ba,Editor.zoomInImage);I.appendChild(n);P.visible&&(I.appendChild(Ea),mxEvent.addListener(document,"fullscreenchange",function(){Ea.style.backgroundImage="url("+(null!=document.fullscreenElement?
-Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(n=F.actions.get("exit"),I.appendChild(B("",n.funct,null,mxResources.get("exit"),n,Editor.closeImage)));F.tabContainer.style.visibility="hidden";R.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";Q.style.cssText=
-"position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";I.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";Y.appendChild(Q);Y.appendChild(I);S.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
+V):(A.mode!=App.MODE_ATLAS&&A.menus.addMenuItem(O,"configuration",V),!A.isOfflineApp()&&isLocalStorage&&A.mode!=App.MODE_ATLAS&&A.menus.addMenuItem(O,"plugins",V));EditorUi.isElectronApp&&A.menus.addMenuItems(O,["-","spellCheck","autoBkp","drafts","-"],V);var U=A.getCurrentFile();null!=U&&U.isRealtimeEnabled()&&U.isRealtimeSupported()&&this.addMenuItems(O,["-","showRemoteCursors","shareCursor","-"],V);O.addSeparator(V);A.mode!=App.MODE_ATLAS&&this.addMenuItems(O,["fullscreen"],V);("1"!=urlParams.embedInline&&
+Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(O,["toggleDarkMode"],V);O.addSeparator(V)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(O,V){A.menus.addMenuItems(O,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),V)})));mxUtils.bind(this,function(){var O=this.get("insert"),V=O.funct;O.funct=function(U,Y){"1"==urlParams.sketch?(A.insertTemplateEnabled&&!A.isOffline()&&A.menus.addMenuItems(U,["insertTemplate"],Y),
+A.menus.addMenuItems(U,["insertImage","insertLink","-"],Y),A.menus.addSubmenu("insertAdvanced",U,Y,mxResources.get("advanced")),A.menus.addSubmenu("layout",U,Y)):(V.apply(this,arguments),A.menus.addSubmenu("table",U,Y))}})();var R="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),W=function(O,V,U,Y){O.addItem(U,null,mxUtils.bind(this,function(){var n=new CreateGraphDialog(A,U,Y);A.showDialog(n.container,620,420,!0,!1);n.init()}),V)};this.put("insertLayout",
+new Menu(mxUtils.bind(this,function(O,V){for(var U=0;U<R.length;U++)"-"==R[U]?O.addSeparator(V):W(O,V,mxResources.get(R[U])+"...",R[U])})))};EditorUi.prototype.installFormatToolbar=function(A){var B=this.editor.graph,G=document.createElement("div");G.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";B.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,
+function(M,H){0<B.getSelectionCount()?(A.appendChild(G),G.innerHTML="Selected: "+B.getSelectionCount()):null!=G.parentNode&&G.parentNode.removeChild(G)}))};var q=!1;EditorUi.prototype.initFormatWindow=function(){if(!q&&null!=this.formatWindow){q=!0;this.formatWindow.window.setClosable(!1);var A=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){A.apply(this,arguments);this.minimized?(this.div.style.width="90px",this.table.style.width="90px",this.div.style.left=
+parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(B){mxEvent.getSource(B)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var C=EditorUi.prototype.init;EditorUi.prototype.init=function(){function A(aa,ca,na){var la=F.menus.get(aa),oa=O.addMenu(mxResources.get(aa),
+mxUtils.bind(this,function(){la.funct.apply(this,arguments)}),W);oa.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";oa.style.display="inline-block";oa.style.boxSizing="border-box";oa.style.top="6px";oa.style.marginRight="6px";oa.style.height="30px";oa.style.paddingTop="6px";oa.style.paddingBottom="6px";oa.style.cursor="pointer";oa.setAttribute("title",mxResources.get(aa));F.menus.menuCreated(la,oa,"geMenuItem");null!=na?(oa.style.backgroundImage="url("+na+")",oa.style.backgroundPosition=
+"center center",oa.style.backgroundRepeat="no-repeat",oa.style.backgroundSize="24px 24px",oa.style.width="34px",oa.innerText=""):ca||(oa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",oa.style.backgroundPosition="right 6px center",oa.style.backgroundRepeat="no-repeat",oa.style.paddingRight="22px");return oa}function B(aa,ca,na,la,oa,ra){var ia=document.createElement("a");ia.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";ia.style.display="inline-block";ia.style.boxSizing=
+"border-box";ia.style.height="30px";ia.style.padding="6px";ia.style.position="relative";ia.style.verticalAlign="top";ia.style.top="0px";"1"==urlParams.sketch&&(ia.style.borderStyle="none",ia.style.boxShadow="none",ia.style.padding="6px",ia.style.margin="0px");null!=F.statusContainer?R.insertBefore(ia,F.statusContainer):R.appendChild(ia);null!=ra?(ia.style.backgroundImage="url("+ra+")",ia.style.backgroundPosition="center center",ia.style.backgroundRepeat="no-repeat",ia.style.backgroundSize="24px 24px",
+ia.style.width="34px"):mxUtils.write(ia,aa);mxEvent.addListener(ia,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(Da){Da.preventDefault()}));mxEvent.addListener(ia,"click",function(Da){"disabled"!=ia.getAttribute("disabled")&&ca(Da);mxEvent.consume(Da)});null==na&&(ia.style.marginRight="4px");null!=la&&ia.setAttribute("title",la);null!=oa&&(aa=function(){oa.isEnabled()?(ia.removeAttribute("disabled"),ia.style.cursor="pointer"):(ia.setAttribute("disabled","disabled"),ia.style.cursor=
+"default")},oa.addListener("stateChanged",aa),J.addListener("enabledChanged",aa),aa());return ia}function G(aa,ca,na){na=document.createElement("div");na.className="geMenuItem";na.style.display="inline-block";na.style.verticalAlign="top";na.style.marginRight="6px";na.style.padding="0 4px 0 4px";na.style.height="30px";na.style.position="relative";na.style.top="0px";"1"==urlParams.sketch&&(na.style.boxShadow="none");for(var la=0;la<aa.length;la++)null!=aa[la]&&("1"==urlParams.sketch&&(aa[la].style.padding=
+"10px 8px",aa[la].style.width="30px"),aa[la].style.margin="0px",aa[la].style.boxShadow="none",na.appendChild(aa[la]));null!=ca&&mxUtils.setOpacity(na,ca);null!=F.statusContainer&&"1"!=urlParams.sketch?R.insertBefore(na,F.statusContainer):R.appendChild(na);return na}function M(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(Q.style.left=58>S.offsetTop-S.offsetHeight/2?"70px":"10px");else{for(var aa=R.firstChild;null!=aa;){var ca=aa.nextSibling;"geMenuItem"!=aa.className&&"geItem"!=aa.className||
+aa.parentNode.removeChild(aa);aa=ca}W=R.firstChild;d=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;aa=1E3>d||"1"==urlParams.sketch;var na=null;aa||(na=A("diagram"));ca=aa?A("diagram",null,Editor.drawLogoImage):null;null!=ca&&(na=ca);G([na,B(mxResources.get("shapes"),F.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),F.actions.get("image"),aa?Editor.shapesImage:null),B(mxResources.get("format"),F.actions.get("toggleFormat").funct,null,mxResources.get("format")+
+" ("+F.actions.get("formatPanel").shortcut+")",F.actions.get("image"),aa?Editor.formatImage:null)],aa?60:null);ca=A("insert",!0,aa?D:null);G([ca,B(mxResources.get("delete"),F.actions.get("delete").funct,null,mxResources.get("delete"),F.actions.get("delete"),aa?Editor.trashImage:null)],aa?60:null);411<=d&&(G([Ma,Ia],60),520<=d&&G([ta,640<=d?B("",Ba.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",Ba,Editor.zoomInImage):null,640<=d?B("",Ha.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+
+" -)",Ha,Editor.zoomOutImage):null],60))}null!=na&&(mxEvent.disableContextMenu(na),mxEvent.addGestureListeners(na,mxUtils.bind(this,function(la){(mxEvent.isShiftDown(la)||mxEvent.isAltDown(la)||mxEvent.isMetaDown(la)||mxEvent.isControlDown(la)||mxEvent.isPopupTrigger(la))&&F.appIconClicked(la)}),null,null));ca=F.menus.get("language");null!=ca&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=d&&"1"!=urlParams.sketch?(null==wa&&(ca=O.addMenu("",ca.funct),ca.setAttribute("title",mxResources.get("language")),
+ca.className="geToolbarButton",ca.style.backgroundImage="url("+Editor.globeImage+")",ca.style.backgroundPosition="center center",ca.style.backgroundRepeat="no-repeat",ca.style.backgroundSize="24px 24px",ca.style.position="absolute",ca.style.height="24px",ca.style.width="24px",ca.style.zIndex="1",ca.style.right="8px",ca.style.cursor="pointer",ca.style.top="1"==urlParams.embed?"12px":"11px",R.appendChild(ca),wa=ca),F.buttonContainer.style.paddingRight="34px"):(F.buttonContainer.style.paddingRight="4px",
+null!=wa&&(wa.parentNode.removeChild(wa),wa=null))}C.apply(this,arguments);"1"!=urlParams.embedInline&&this.doSetDarkMode(null!=urlParams.dark?1==urlParams.dark&&!mxClient.IS_IE&&!mxClient.IS_IE11:null!=mxSettings.settings.darkMode?mxSettings.settings.darkMode:window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches);var H=document.createElement("div");H.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";H.style.bottom="1"!=urlParams.embed||
+"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(H);"1"==urlParams.sketch&&null!=this.sidebar&&this.isSettingsEnabled()&&(this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save()),this.sidebar.showPalette("search",mxSettings.settings.search));if("1"!=urlParams.sketch&&1E3<=d||null!=urlParams.clibs||null!=urlParams.libs||null!=urlParams["search-shapes"])l(this,!0),null!=
+this.sidebar&&null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes&&(this.sidebar.searchShapes(urlParams["search-shapes"]),this.sidebar.showEntries("search"));var F=this;mxWindow.prototype.fit=function(){if(Editor.inlineFullscreen||null==F.embedViewport)mxUtils.fit(this.div);else{var aa=parseInt(this.div.offsetLeft),ca=parseInt(this.div.offsetWidth),na=F.embedViewport.x+F.embedViewport.width,la=parseInt(this.div.offsetTop),oa=parseInt(this.div.offsetHeight),ra=F.embedViewport.y+F.embedViewport.height;
+this.div.style.left=Math.max(F.embedViewport.x,Math.min(aa,na-ca))+"px";this.div.style.top=Math.max(F.embedViewport.y,Math.min(la,ra-oa))+"px";this.div.style.height=Math.min(F.embedViewport.height,parseInt(this.div.style.height))+"px";this.div.style.width=Math.min(F.embedViewport.width,parseInt(this.div.style.width))+"px"}};this.keyHandler.bindAction(75,!0,"toggleShapes",!0);EditorUi.windowed&&("1"==urlParams.sketch||1E3<=d)&&"1"!=urlParams.embedInline&&(b(this,!0),"1"==urlParams.sketch?(this.initFormatWindow(),
+H=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,null!=this.formatWindow&&(1200>d||708>H)?this.formatWindow.window.toggleMinimized():this.formatWindow.window.setVisible(!0)):this.formatWindow.window.setVisible(!0));F=this;var J=F.editor.graph;F.toolbar=this.createToolbar(F.createDiv("geToolbar"));F.defaultLibraryName=mxResources.get("untitledLibrary");var R=document.createElement("div");R.className="geMenubarContainer";var W=null,O=new Menubar(F,R);F.statusContainer=
+F.createStatusContainer();F.statusContainer.style.position="relative";F.statusContainer.style.maxWidth="";F.statusContainer.style.marginTop="7px";F.statusContainer.style.marginLeft="6px";F.statusContainer.style.color="gray";F.statusContainer.style.cursor="default";var V=F.hideCurrentMenu;F.hideCurrentMenu=function(){V.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};var U=F.descriptorChanged;F.descriptorChanged=function(){U.apply(this,arguments);var aa=F.getCurrentFile();if(null!=
+aa&&null!=aa.getTitle()){var ca=aa.getMode();"google"==ca?ca="googleDrive":"github"==ca?ca="gitHub":"gitlab"==ca?ca="gitLab":"onedrive"==ca&&(ca="oneDrive");ca=mxResources.get(ca);R.setAttribute("title",aa.getTitle()+(null!=ca?" ("+ca+")":""))}else R.removeAttribute("title")};F.setStatusText(F.editor.getStatus());R.appendChild(F.statusContainer);F.buttonContainer=document.createElement("div");F.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";
+R.appendChild(F.buttonContainer);F.menubarContainer=F.buttonContainer;F.tabContainer=document.createElement("div");F.tabContainer.className="geTabContainer";F.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";H=F.diagramContainer.parentNode;var Y=document.createElement("div");Y.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";F.diagramContainer.style.top="1"==urlParams.sketch?
+"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){Y.style.top="20px";F.titlebar=document.createElement("div");F.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var n=document.createElement("div");n.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";F.titlebar.appendChild(n);H.appendChild(F.titlebar)}n=
+F.menus.get("viewZoom");var D="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,I="1"==urlParams.sketch?document.createElement("div"):null,S="1"==urlParams.sketch?document.createElement("div"):null,Q="1"==urlParams.sketch?document.createElement("div"):null,P=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();J.refresh();J.view.validateBackground()});F.addListener("darkModeChanged",P);F.addListener("sketchModeChanged",P);var T=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)Q.style.left=
+"10px",Q.style.top="10px",S.style.left="10px",S.style.top="60px",I.style.top="10px",I.style.right="12px",I.style.left="",F.diagramContainer.setAttribute("data-bounds",F.diagramContainer.style.top+" "+F.diagramContainer.style.left+" "+F.diagramContainer.style.width+" "+F.diagramContainer.style.height),F.diagramContainer.style.top="0px",F.diagramContainer.style.left="0px",F.diagramContainer.style.bottom="0px",F.diagramContainer.style.right="0px",F.diagramContainer.style.width="",F.diagramContainer.style.height=
+"";else{var aa=F.diagramContainer.getAttribute("data-bounds");if(null!=aa){F.diagramContainer.style.background="transparent";F.diagramContainer.removeAttribute("data-bounds");var ca=J.getGraphBounds();aa=aa.split(" ");F.diagramContainer.style.top=aa[0];F.diagramContainer.style.left=aa[1];F.diagramContainer.style.width=ca.width+50+"px";F.diagramContainer.style.height=ca.height+46+"px";F.diagramContainer.style.bottom="";F.diagramContainer.style.right="";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",
+rect:F.diagramContainer.getBoundingClientRect()}),"*");F.refresh()}Q.style.left=F.diagramContainer.offsetLeft+"px";Q.style.top=F.diagramContainer.offsetTop-Q.offsetHeight-4+"px";S.style.display="";S.style.left=F.diagramContainer.offsetLeft-S.offsetWidth-4+"px";S.style.top=F.diagramContainer.offsetTop+"px";I.style.left=F.diagramContainer.offsetLeft+F.diagramContainer.offsetWidth-I.offsetWidth+"px";I.style.top=Q.style.top;I.style.right="";F.bottomResizer.style.left=F.diagramContainer.offsetLeft+(F.diagramContainer.offsetWidth-
+F.bottomResizer.offsetWidth)/2+"px";F.bottomResizer.style.top=F.diagramContainer.offsetTop+F.diagramContainer.offsetHeight-F.bottomResizer.offsetHeight/2-1+"px";F.rightResizer.style.left=F.diagramContainer.offsetLeft+F.diagramContainer.offsetWidth-F.rightResizer.offsetWidth/2-1+"px";F.rightResizer.style.top=F.diagramContainer.offsetTop+(F.diagramContainer.offsetHeight-F.bottomResizer.offsetHeight)/2+"px"}F.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";F.rightResizer.style.visibility=
+F.bottomResizer.style.visibility;R.style.display="none";Q.style.visibility="";I.style.visibility=""}),X=mxUtils.bind(this,function(){Ea.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";T()});P=mxUtils.bind(this,function(){X();b(F,!0);F.initFormatWindow();var aa=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(aa.x+
+aa.width+4,aa.y)});F.addListener("inlineFullscreenChanged",X);F.addListener("editInlineStart",P);"1"==urlParams.embedInline&&F.addListener("darkModeChanged",P);F.addListener("editInlineStop",mxUtils.bind(this,function(aa){F.diagramContainer.style.width="10px";F.diagramContainer.style.height="10px";F.diagramContainer.style.border="";F.bottomResizer.style.visibility="hidden";F.rightResizer.style.visibility="hidden";Q.style.visibility="hidden";I.style.visibility="hidden";S.style.display="none"}));if(null!=
+F.hoverIcons){var ba=F.hoverIcons.update;F.hoverIcons.update=function(){J.freehand.isDrawing()||ba.apply(this,arguments)}}if(null!=J.freehand){var ja=J.freehand.createStyle;J.freehand.createStyle=function(aa){return ja.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){S.className="geToolbarContainer";I.className="geToolbarContainer";Q.className="geToolbarContainer";R.className="geToolbarContainer";F.picker=S;var Z=!1;"1"!=urlParams.embed&&"atlassian"!=F.getServiceName()&&(mxEvent.addListener(R,
+"mouseenter",function(){F.statusContainer.style.display="inline-block"}),mxEvent.addListener(R,"mouseleave",function(){Z||(F.statusContainer.style.display="none")}));var ka=mxUtils.bind(this,function(aa){null!=F.notificationBtn&&(null!=aa?F.notificationBtn.setAttribute("title",aa):F.notificationBtn.removeAttribute("title"))});R.style.visibility=20>R.clientWidth?"hidden":"";F.editor.addListener("statusChanged",mxUtils.bind(this,function(){F.setStatusText(F.editor.getStatus());if("1"!=urlParams.embed&&
+"atlassian"!=F.getServiceName())if(F.statusContainer.style.display="inline-block",Z=!0,1==F.statusContainer.children.length&&""==F.editor.getStatus())R.style.visibility="hidden";else{if(0==F.statusContainer.children.length||1==F.statusContainer.children.length&&"function"===typeof F.statusContainer.firstChild.getAttribute&&null==F.statusContainer.firstChild.getAttribute("class")){var aa=null!=F.statusContainer.firstChild&&"function"===typeof F.statusContainer.firstChild.getAttribute?F.statusContainer.firstChild.getAttribute("title"):
+F.editor.getStatus();ka(aa);var ca=F.getCurrentFile();ca=null!=ca?ca.savingStatusKey:DrawioFile.prototype.savingStatusKey;aa==mxResources.get(ca)+"..."?(F.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(ca))+'..."src="'+Editor.tailSpin+'">',F.statusContainer.style.display="inline-block",Z=!0):6<F.buttonContainer.clientWidth&&(F.statusContainer.style.display="none",Z=!1)}else F.statusContainer.style.display="inline-block",ka(null),Z=!0;R.style.visibility=20>R.clientWidth&&
+!Z?"hidden":""}}));ea=A("diagram",null,Editor.menuImage);ea.style.boxShadow="none";ea.style.padding="6px";ea.style.margin="0px";Q.appendChild(ea);mxEvent.disableContextMenu(ea);mxEvent.addGestureListeners(ea,mxUtils.bind(this,function(aa){(mxEvent.isShiftDown(aa)||mxEvent.isAltDown(aa)||mxEvent.isMetaDown(aa)||mxEvent.isControlDown(aa)||mxEvent.isPopupTrigger(aa))&&this.appIconClicked(aa)}),null,null);F.statusContainer.style.position="";F.statusContainer.style.display="none";F.statusContainer.style.margin=
+"0px";F.statusContainer.style.padding="6px 0px";F.statusContainer.style.maxWidth=Math.min(d-240,280)+"px";F.statusContainer.style.display="inline-block";F.statusContainer.style.textOverflow="ellipsis";F.buttonContainer.style.position="";F.buttonContainer.style.paddingRight="0px";F.buttonContainer.style.display="inline-block";var da=document.createElement("a");da.style.padding="0px";da.style.boxShadow="none";da.className="geMenuItem";da.style.display="inline-block";da.style.width="40px";da.style.height=
+"12px";da.style.marginBottom="-2px";da.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";da.style.backgroundPosition="top center";da.style.backgroundRepeat="no-repeat";da.setAttribute("title","Minimize");var fa=!1,ma=mxUtils.bind(this,function(){S.innerText="";if(!fa){var aa=function(la,oa,ra){la=B("",la.funct,null,oa,la,ra);la.style.width="40px";la.style.opacity="0.7";return ca(la,null,"pointer")},ca=function(la,oa,ra){null!=oa&&la.setAttribute("title",oa);la.style.cursor=null!=
+ra?ra:"default";la.style.margin="2px 0px";S.appendChild(la);mxUtils.br(S);return la};ca(F.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",60,30,"Text",mxResources.get("text"),!0,!1,null,!0,!0),mxResources.get("text")+" ("+Editor.ctrlKey+"+Shift+X)");ca(F.sidebar.createVertexTemplate("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontColor=#000000;darkOpacity=0.05;fillColor=#FFF9B2;strokeColor=none;fillStyle=solid;direction=west;gradientDirection=north;gradientColor=#FFF2A1;shadow=1;size=20;pointerEvents=1;",
+140,160,"",mxResources.get("note"),!0,!1,null,!0),mxResources.get("note"));ca(F.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");ca(F.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var la=new mxCell("",new mxGeometry(0,0,J.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");
+la.geometry.setTerminalPoint(new mxPoint(0,0),!0);la.geometry.setTerminalPoint(new mxPoint(la.geometry.width,0),!1);la.geometry.points=[];la.geometry.relative=!0;la.edge=!0;ca(F.sidebar.createEdgeTemplateFromCells([la],la.geometry.width,la.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));la=la.clone();la.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";la.geometry.width=J.defaultEdgeLength+20;la.geometry.setTerminalPoint(new mxPoint(0,
+20),!0);la.geometry.setTerminalPoint(new mxPoint(la.geometry.width,20),!1);la=ca(F.sidebar.createEdgeTemplateFromCells([la],la.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));la.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");la.style.paddingBottom="14px";la.style.marginBottom="14px"})();aa(F.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var na=F.actions.get("toggleShapes");aa(na,mxResources.get("shapes")+
+" ("+na.shortcut+")",D);ea=A("table",null,Editor.calendarImage);ea.style.boxShadow="none";ea.style.opacity="0.7";ea.style.padding="6px";ea.style.margin="0px";ea.style.width="37px";ca(ea,null,"pointer");ea=A("insert",null,Editor.plusImage);ea.style.boxShadow="none";ea.style.opacity="0.7";ea.style.padding="6px";ea.style.margin="0px";ea.style.width="37px";ca(ea,null,"pointer")}"1"!=urlParams.embedInline&&S.appendChild(da)});mxEvent.addListener(da,"click",mxUtils.bind(this,function(){fa?(mxUtils.setPrefixedStyle(S.style,
+"transform","translate(0, -50%)"),S.style.padding="8px 6px 4px",S.style.top="50%",S.style.bottom="",S.style.height="",da.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",da.style.width="40px",da.style.height="12px",da.setAttribute("title","Minimize"),fa=!1,ma()):(S.innerText="",S.appendChild(da),mxUtils.setPrefixedStyle(S.style,"transform","translate(0, 0)"),S.style.top="",S.style.bottom="12px",S.style.padding="0px",S.style.height="24px",da.style.height="24px",da.style.backgroundImage=
+"url("+Editor.plusImage+")",da.setAttribute("title",mxResources.get("insert")),da.style.width="24px",fa=!0)}));ma();F.addListener("darkModeChanged",ma);F.addListener("sketchModeChanged",ma)}else F.editor.addListener("statusChanged",mxUtils.bind(this,function(){F.setStatusText(F.editor.getStatus())}));if(null!=n){var ya=function(aa){mxEvent.isShiftDown(aa)?(F.hideCurrentMenu(),F.actions.get("smartFit").funct(),mxEvent.consume(aa)):mxEvent.isAltDown(aa)&&(F.hideCurrentMenu(),F.actions.get("customZoom").funct(),
+mxEvent.consume(aa))},Ba=F.actions.get("zoomIn"),Ha=F.actions.get("zoomOut"),sa=F.actions.get("resetView");P=F.actions.get("fullscreen");var Ga=F.actions.get("undo"),Ka=F.actions.get("redo"),Ma=B("",Ga.funct,null,mxResources.get("undo")+" ("+Ga.shortcut+")",Ga,Editor.undoImage),Ia=B("",Ka.funct,null,mxResources.get("redo")+" ("+Ka.shortcut+")",Ka,Editor.redoImage),Ea=B("",P.funct,null,mxResources.get("fullscreen"),P,Editor.fullscreenImage);if(null!=I){sa=function(){pa.style.display=null!=F.pages&&
+("0"!=urlParams.pages||1<F.pages.length||Editor.pagesVisible)?"inline-block":"none"};var Fa=function(){pa.innerText="";if(null!=F.currentPage){mxUtils.write(pa,F.currentPage.getName());var aa=null!=F.pages?F.pages.length:1,ca=F.getPageIndex(F.currentPage);ca=null!=ca?ca+1:1;var na=F.currentPage.getId();pa.setAttribute("title",F.currentPage.getName()+" ("+ca+"/"+aa+")"+(null!=na?" ["+na+"]":""))}};Ea.parentNode.removeChild(Ea);var Pa=F.actions.get("delete"),Aa=B("",Pa.funct,null,mxResources.get("delete"),
+Pa,Editor.trashImage);Aa.style.opacity="0.1";Q.appendChild(Aa);Pa.addListener("stateChanged",function(){Aa.style.opacity=Pa.enabled?"":"0.1"});var za=function(){Ma.style.display=0<F.editor.undoManager.history.length||J.isEditing()?"inline-block":"none";Ia.style.display=Ma.style.display;Ma.style.opacity=Ga.enabled?"":"0.1";Ia.style.opacity=Ka.enabled?"":"0.1"};Q.appendChild(Ma);Q.appendChild(Ia);Ga.addListener("stateChanged",za);Ka.addListener("stateChanged",za);za();var pa=this.createPageMenuTab(!1,
+!0);pa.style.display="none";pa.style.position="";pa.style.marginLeft="";pa.style.top="";pa.style.left="";pa.style.height="100%";pa.style.lineHeight="";pa.style.borderStyle="none";pa.style.padding="3px 0";pa.style.margin="0px";pa.style.background="";pa.style.border="";pa.style.boxShadow="none";pa.style.verticalAlign="top";pa.style.width="auto";pa.style.maxWidth="160px";pa.style.position="relative";pa.style.padding="6px";pa.style.textOverflow="ellipsis";pa.style.opacity="0.8";I.appendChild(pa);F.editor.addListener("pagesPatched",
+Fa);F.editor.addListener("pageSelected",Fa);F.editor.addListener("pageRenamed",Fa);F.editor.addListener("fileLoaded",Fa);Fa();F.addListener("fileDescriptorChanged",sa);F.addListener("pagesVisibleChanged",sa);F.editor.addListener("pagesPatched",sa);sa();sa=B("",Ha.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",Ha,Editor.zoomOutImage);I.appendChild(sa);var ea=O.addMenu("100%",n.funct);ea.setAttribute("title",mxResources.get("zoom"));ea.innerHTML="100%";ea.style.display=
+"inline-block";ea.style.color="inherit";ea.style.cursor="pointer";ea.style.textAlign="center";ea.style.whiteSpace="nowrap";ea.style.paddingRight="10px";ea.style.textDecoration="none";ea.style.verticalAlign="top";ea.style.padding="6px 0";ea.style.fontSize="14px";ea.style.width="40px";ea.style.opacity="0.4";I.appendChild(ea);n=B("",Ba.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",Ba,Editor.zoomInImage);I.appendChild(n);P.visible&&(I.appendChild(Ea),mxEvent.addListener(document,
+"fullscreenchange",function(){Ea.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(n=F.actions.get("exit"),I.appendChild(B("",n.funct,null,mxResources.get("exit"),n,Editor.closeImage)));F.tabContainer.style.visibility="hidden";R.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
+Q.style.cssText="position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";I.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";Y.appendChild(Q);Y.appendChild(I);S.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
mxClient.IS_POINTER&&(S.style.touchAction="none");Y.appendChild(S);window.setTimeout(function(){mxUtils.setPrefixedStyle(S.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(Y)}else{var ta=B("",ya,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",sa,Editor.zoomFitImage);R.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";ea=O.addMenu("100%",
n.funct);ea.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");ea.style.whiteSpace="nowrap";ea.style.paddingRight="10px";ea.style.textDecoration="none";ea.style.textDecoration="none";ea.style.overflow="hidden";ea.style.visibility="hidden";ea.style.textAlign="center";ea.style.cursor="pointer";ea.style.height=parseInt(F.tabContainerHeight)-1+"px";ea.style.lineHeight=parseInt(F.tabContainerHeight)+1+"px";ea.style.position="absolute";ea.style.display="block";ea.style.fontSize="12px";ea.style.width=
"59px";ea.style.right="0px";ea.style.bottom="0px";ea.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";ea.style.backgroundPosition="right 6px center";ea.style.backgroundRepeat="no-repeat";Y.appendChild(ea)}(function(aa){mxEvent.addListener(aa,"click",ya);var ca=mxUtils.bind(this,function(){aa.innerText="";mxUtils.write(aa,Math.round(100*F.editor.graph.view.scale)+"%")});F.editor.graph.view.addListener(mxEvent.EVENT_SCALE,ca);F.editor.addListener("resetGraphView",ca);F.editor.addListener("pageSelected",
diff --git a/src/main/webapp/js/viewer-static.min.js b/src/main/webapp/js/viewer-static.min.js
index 3de1d5e4..218e4cfc 100644
--- a/src/main/webapp/js/viewer-static.min.js
+++ b/src/main/webapp/js/viewer-static.min.js
@@ -110,7 +110,7 @@ if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==url
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content"]};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||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
-window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"19.0.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"19.0.3",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&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:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2<navigator.maxTouchPoints,IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,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:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==
@@ -215,10 +215,10 @@ STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",STYLE_LABEL_
STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",
STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_SWIMLANE_HEAD:"swimlaneHead",STYLE_SWIMLANE_BODY:"swimlaneBody",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",
STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",
-STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",
-STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",STYLE_CLIP_PATH:"clipPath",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",
-SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",
-ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",
+STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FIXED_WIDTH:"fixedWidth",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",
+STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",STYLE_CLIP_PATH:"clipPath",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",
+SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",
+ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",
EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};
function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};
mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};
@@ -1271,9 +1271,9 @@ mxGraph.prototype.swapBounds=function(a,b){if(null!=a){var c=this.model.getGeome
mxGraph.prototype.updateAlternateBounds=function(a,b,c){if(null!=a&&null!=b){c=this.getCurrentCellStyle(a);if(null==b.alternateBounds){var d=b;this.collapseToPreferredSize&&(a=this.getPreferredSizeForCell(a),null!=a&&(d=a,a=mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE),0<a&&(d.height=Math.max(d.height,a))));b.alternateBounds=new mxRectangle(0,0,d.width,d.height)}if(null!=b.alternateBounds){b.alternateBounds.x=b.x;b.alternateBounds.y=b.y;var e=mxUtils.toRadians(c[mxConstants.STYLE_ROTATION]||0);
0!=e&&(c=b.alternateBounds.getCenterX()-b.getCenterX(),d=b.alternateBounds.getCenterY()-b.getCenterY(),a=Math.cos(e),e=Math.sin(e),b.alternateBounds.x+=a*c-e*d-c,b.alternateBounds.y+=e*c+a*d-d)}}};mxGraph.prototype.addAllEdges=function(a){var b=a.slice();return mxUtils.removeDuplicates(b.concat(this.getAllEdges(a)))};
mxGraph.prototype.getAllEdges=function(a){var b=[];if(null!=a)for(var c=0;c<a.length;c++){for(var d=this.model.getEdgeCount(a[c]),e=0;e<d;e++)b.push(this.model.getEdgeAt(a[c],e));d=this.model.getChildren(a[c]);b=b.concat(this.getAllEdges(d))}return b};mxGraph.prototype.updateCellSize=function(a,b){b=null!=b?b:!1;this.model.beginUpdate();try{this.cellSizeUpdated(a,b),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",a,"ignoreChildren",b))}finally{this.model.endUpdate()}return a};
-mxGraph.prototype.cellSizeUpdated=function(a,b){if(null!=a){this.model.beginUpdate();try{var c=this.getPreferredSizeForCell(a),d=this.model.getGeometry(a);if(null!=c&&null!=d){var e=this.isCellCollapsed(a);d=d.clone();if(this.isSwimlane(a)){var f=this.getCellStyle(a),g=this.model.getStyle(a);null==g&&(g="");mxUtils.getValue(f,mxConstants.STYLE_HORIZONTAL,!0)?(g=mxUtils.setStyle(g,mxConstants.STYLE_STARTSIZE,c.height+8),e&&(d.height=c.height+8),d.width=c.width):(g=mxUtils.setStyle(g,mxConstants.STYLE_STARTSIZE,
-c.width+8),e&&(d.width=c.width+8),d.height=c.height);this.model.setStyle(a,g)}else{var k=this.view.createState(a),l=k.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,m=this.getVerticalAlign(k);"fixed"==k.style[mxConstants.STYLE_ASPECT]&&(c.height=Math.round(d.height*c.width*100/d.width)/100);l==mxConstants.ALIGN_RIGHT?d.x+=d.width-c.width:l==mxConstants.ALIGN_CENTER&&(d.x+=Math.round((d.width-c.width)/2));m==mxConstants.ALIGN_BOTTOM?d.y+=d.height-c.height:m==mxConstants.ALIGN_MIDDLE&&(d.y+=
-Math.round((d.height-c.height)/2));d.width=c.width;d.height=c.height}if(!b&&!e){var n=this.view.getBounds(this.model.getChildren(a));if(null!=n){var p=this.view.translate,r=this.view.scale,q=(n.y+n.height)/r-d.y-p.y;d.width=Math.max(d.width,(n.x+n.width)/r-d.x-p.x);d.height=Math.max(d.height,q)}}this.cellsResized([a],[d],!1)}}finally{this.model.endUpdate()}}};
+mxGraph.prototype.cellSizeUpdated=function(a,b){if(null!=a){this.model.beginUpdate();try{var c=this.getCellStyle(a),d=this.model.getGeometry(a);if(null!=d){var e=mxUtils.getValue(c,mxConstants.STYLE_FIXED_WIDTH,!1),f=this.getPreferredSizeForCell(a,e?d.width:null);if(null!=f){var g=this.isCellCollapsed(a);d=d.clone();if(this.isSwimlane(a)){var k=this.model.getStyle(a);null==k&&(k="");mxUtils.getValue(c,mxConstants.STYLE_HORIZONTAL,!0)?(k=mxUtils.setStyle(k,mxConstants.STYLE_STARTSIZE,f.height+8),g&&
+(d.height=f.height+8),e||(d.width=f.width)):(k=mxUtils.setStyle(k,mxConstants.STYLE_STARTSIZE,f.width+8),g&&!e&&(d.width=f.width+8),d.height=f.height);this.model.setStyle(a,k)}else{var l=this.view.createState(a),m=l.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,n=this.getVerticalAlign(l);"fixed"==l.style[mxConstants.STYLE_ASPECT]&&(f.height=Math.round(d.height*f.width*100/d.width)/100);n==mxConstants.ALIGN_BOTTOM?d.y+=d.height-f.height:n==mxConstants.ALIGN_MIDDLE&&(d.y+=Math.round((d.height-
+f.height)/2));d.height=f.height;e||(m==mxConstants.ALIGN_RIGHT?d.x+=d.width-f.width:m==mxConstants.ALIGN_CENTER&&(d.x+=Math.round((d.width-f.width)/2)),d.width=f.width)}if(!b&&!g){var p=this.view.getBounds(this.model.getChildren(a));if(null!=p){var r=this.view.translate,q=this.view.scale,t=(p.x+p.width)/q-d.x-r.x;d.height=Math.max(d.height,(p.y+p.height)/q-d.y-r.y);e||(d.width=Math.max(d.width,t))}}this.cellsResized([a],[d],!1)}}}finally{this.model.endUpdate()}}};
mxGraph.prototype.getPreferredSizeForCell=function(a,b){var c=null;if(null!=a){var d=this.view.createState(a),e=d.style;if(!this.model.isEdge(a)){var f=e[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE;a=c=0;null==this.getImage(d)&&null==e[mxConstants.STYLE_IMAGE]||e[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(e[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(c+=parseFloat(e[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),e[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&
(a+=parseFloat(e[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize));c+=2*(e[mxConstants.STYLE_SPACING]||0);c+=e[mxConstants.STYLE_SPACING_LEFT]||0;c+=e[mxConstants.STYLE_SPACING_RIGHT]||0;a+=2*(e[mxConstants.STYLE_SPACING]||0);a+=e[mxConstants.STYLE_SPACING_TOP]||0;a+=e[mxConstants.STYLE_SPACING_BOTTOM]||0;var g=this.getFoldingImage(d);null!=g&&(c+=g.width+8);g=this.cellRenderer.getLabelValue(d);null!=g&&0<g.length?(this.isHtmlLabel(d.cell)||(g=mxUtils.htmlEntities(g,!1)),g=g.replace(/\n/g,
"<br>"),d=mxUtils.getSizeForString(g,f,e[mxConstants.STYLE_FONTFAMILY],b,e[mxConstants.STYLE_FONTSTYLE]),b=d.width+c,d=d.height+a,mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)||(e=d,d=b,b=e),this.gridEnabled&&(b=this.snap(b+this.gridSize/2),d=this.snap(d+this.gridSize/2)),c=new mxRectangle(0,0,b,d)):(e=4*this.gridSize,c=new mxRectangle(0,0,e,e))}}return c};mxGraph.prototype.resizeCell=function(a,b,c){return this.resizeCells([a],[b],c)[0]};
@@ -1858,12 +1858,13 @@ mxCellHighlight.prototype.repaint=function(){null!=this.state&&null!=this.shape&
"0"),this.shape.strokewidth=this.getStrokeWidth()/this.state.view.scale,this.shape.outline=!0),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),this.shape.redraw())};mxCellHighlight.prototype.hide=function(){this.highlight(null)};mxCellHighlight.prototype.highlight=function(a){this.state!=a&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=a,null!=this.state&&this.drawHighlight())};
mxCellHighlight.prototype.isHighlightAt=function(a,b){var c=!1;if(null!=this.shape&&null!=document.elementFromPoint)for(a=document.elementFromPoint(a,b);null!=a;){if(a==this.shape.node){c=!0;break}a=a.parentNode}return c};mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler);this.graph.getView().removeListener(this.repaintHandler);this.graph.getModel().removeListener(this.repaintHandler);null!=this.shape&&(this.shape.destroy(),this.shape=null)};
var mxCodecRegistry={codecs:[],aliases:[],register:function(a){if(null!=a){var b=a.getName();mxCodecRegistry.codecs[b]=a;var c=mxUtils.getFunctionName(a.template.constructor);c!=b&&mxCodecRegistry.addAlias(c,b)}return a},addAlias:function(a,b){mxCodecRegistry.aliases[a]=b},getCodec:function(a){var b=null;if(null!=a){b=mxUtils.getFunctionName(a);var c=mxCodecRegistry.aliases[b];null!=c&&(b=c);b=mxCodecRegistry.codecs[b];if(null==b)try{b=new mxObjectCodec(new a),mxCodecRegistry.register(b)}catch(d){}}return b}};
-function mxCodec(a){this.document=a||mxUtils.createXmlDocument();this.objects=[]}mxCodec.prototype.document=null;mxCodec.prototype.objects=null;mxCodec.prototype.elements=null;mxCodec.prototype.encodeDefaults=!1;mxCodec.prototype.putObject=function(a,b){return this.objects[a]=b};mxCodec.prototype.getObject=function(a){var b=null;null!=a&&(b=this.objects[a],null==b&&(b=this.lookup(a),null==b&&(a=this.getElementById(a),null!=a&&(b=this.decode(a)))));return b};mxCodec.prototype.lookup=function(a){return null};
-mxCodec.prototype.getElementById=function(a){this.updateElements();return this.elements[a]};mxCodec.prototype.updateElements=function(){null==this.elements&&(this.elements={},null!=this.document.documentElement&&this.addElement(this.document.documentElement))};
+function mxCodec(a){this.document=a||mxUtils.createXmlDocument();this.objects=[]}mxCodec.allowlist=null;mxCodec.prototype.document=null;mxCodec.prototype.objects=null;mxCodec.prototype.elements=null;mxCodec.prototype.encodeDefaults=!1;mxCodec.prototype.putObject=function(a,b){return this.objects[a]=b};mxCodec.prototype.getObject=function(a){var b=null;null!=a&&(b=this.objects[a],null==b&&(b=this.lookup(a),null==b&&(a=this.getElementById(a),null!=a&&(b=this.decode(a)))));return b};
+mxCodec.prototype.lookup=function(a){return null};mxCodec.prototype.getElementById=function(a){this.updateElements();return this.elements[a]};mxCodec.prototype.updateElements=function(){null==this.elements&&(this.elements={},null!=this.document.documentElement&&this.addElement(this.document.documentElement))};
mxCodec.prototype.addElement=function(a){if(a.nodeType==mxConstants.NODETYPE_ELEMENT){var b=a.getAttribute("id");if(null!=b)if(null==this.elements[b])this.elements[b]=a;else if(this.elements[b]!=a)throw Error(b+": Duplicate ID");}for(a=a.firstChild;null!=a;)this.addElement(a),a=a.nextSibling};mxCodec.prototype.getId=function(a){var b=null;null!=a&&(b=this.reference(a),null==b&&a instanceof mxCell&&(b=a.getId(),null==b&&(b=mxCellPath.create(a),0==b.length&&(b="root"))));return b};
mxCodec.prototype.reference=function(a){return null};mxCodec.prototype.encode=function(a){var b=null;if(null!=a&&null!=a.constructor){var c=mxCodecRegistry.getCodec(a.constructor);null!=c?b=c.encode(this,a):mxUtils.isNode(a)?b=mxUtils.importNode(this.document,a,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(a.constructor))}return b};
-mxCodec.prototype.decode=function(a,b){this.updateElements();var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=null;try{c=window[a.nodeName]}catch(d){}c=mxCodecRegistry.getCodec(c);null!=c?c=c.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}return c};mxCodec.prototype.encodeCell=function(a,b,c){b.appendChild(this.encode(a));if(null==c||c){c=a.getChildCount();for(var d=0;d<c;d++)this.encodeCell(a.getChildAt(d),b)}};
-mxCodec.prototype.isCellCodec=function(a){return null!=a&&"function"==typeof a.isCellCodec?a.isCellCodec():!1};mxCodec.prototype.decodeCell=function(a,b){b=null!=b?b:!0;var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=mxCodecRegistry.getCodec(a.nodeName);if(!this.isCellCodec(c))for(var d=a.firstChild;null!=d&&!this.isCellCodec(c);)c=mxCodecRegistry.getCodec(d.nodeName),d=d.nextSibling;this.isCellCodec(c)||(c=mxCodecRegistry.getCodec(mxCell));c=c.decode(this,a);b&&this.insertIntoGraph(c)}return c};
+mxCodec.prototype.decode=function(a,b){this.updateElements();var c=null;null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT&&(c=this.getConstructor(a.nodeName),c=mxCodecRegistry.getCodec(c),null!=c?c=c.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as")));return c};mxCodec.prototype.getConstructor=function(a){var b=null;try{null==mxCodec.allowlist||0<=mxUtils.indexOf(mxCodec.allowlist,a)?b=window[a]:null!=window.console&&console.error("mxCodec.getConstructor: "+a+" not allowed in mxCodec.allowlist")}catch(c){}return b};
+mxCodec.prototype.encodeCell=function(a,b,c){b.appendChild(this.encode(a));if(null==c||c){c=a.getChildCount();for(var d=0;d<c;d++)this.encodeCell(a.getChildAt(d),b)}};mxCodec.prototype.isCellCodec=function(a){return null!=a&&"function"==typeof a.isCellCodec?a.isCellCodec():!1};
+mxCodec.prototype.decodeCell=function(a,b){b=null!=b?b:!0;var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=mxCodecRegistry.getCodec(a.nodeName);if(!this.isCellCodec(c))for(var d=a.firstChild;null!=d&&!this.isCellCodec(c);)c=mxCodecRegistry.getCodec(d.nodeName),d=d.nextSibling;this.isCellCodec(c)||(c=mxCodecRegistry.getCodec(mxCell));c=c.decode(this,a);b&&this.insertIntoGraph(c)}return c};
mxCodec.prototype.insertIntoGraph=function(a){var b=a.parent,c=a.getTerminal(!0),d=a.getTerminal(!1);a.setTerminal(null,!1);a.setTerminal(null,!0);a.parent=null;if(null!=b){if(b==a)throw Error(b.id+": Self Reference");b.insert(a)}null!=c&&c.insertEdge(a,!0);null!=d&&d.insertEdge(a,!1)};mxCodec.prototype.setAttribute=function(a,b,c){null!=b&&null!=c&&a.setAttribute(b,c)};
function mxObjectCodec(a,b,c,d){this.template=a;this.exclude=null!=b?b:[];this.idrefs=null!=c?c:[];this.mapping=null!=d?d:[];this.reverse={};for(var e in this.mapping)this.reverse[this.mapping[e]]=e}mxObjectCodec.allowEval=!1;mxObjectCodec.prototype.template=null;mxObjectCodec.prototype.exclude=null;mxObjectCodec.prototype.idrefs=null;mxObjectCodec.prototype.mapping=null;mxObjectCodec.prototype.reverse=null;mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)};
mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor};mxObjectCodec.prototype.getFieldName=function(a){if(null!=a){var b=this.reverse[a];null!=b&&(a=b)}return a};mxObjectCodec.prototype.getAttributeName=function(a){if(null!=a){var b=this.mapping[a];null!=b&&(a=b)}return a};mxObjectCodec.prototype.isExcluded=function(a,b,c,d){return b==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,b)};
@@ -2061,10 +2062,10 @@ this.graph.isCellSelected(E)&&!this.graph.isToggleEvent(f.getEvent())||this.grap
0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(J,V){this.clearSelectionState()});n.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionStateListener);
n.getModel().addListener(mxEvent.CHANGE,this.selectionStateListener);n.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);n.addListener(mxEvent.EDITING_STOPPED,this.selectionStateListener);n.getView().addListener("unitChanged",this.selectionStateListener);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,n.isEnabled=function(){return!1},n.panningHandler.isForcePanningEvent=function(J){return!mxEvent.isPopupTrigger(J.getEvent())});this.actions=new Actions(this);this.menus=
this.createMenus();if(!n.standalone){var t="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),E="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),
-d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(J){try{var V=n.getCellStyle(J,!1),P=[],R=[],ia;for(ia in V)P.push(V[ia]),R.push(ia);n.getModel().isEdge(J)?n.currentEdgeStyle={}:n.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",R,"values",P,"cells",[J]))}catch(la){this.handleError(la)}};this.clearDefaultStyle=function(){n.currentEdgeStyle=mxUtils.clone(n.defaultEdgeStyle);
+d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(J){try{var V=n.getCellStyle(J,!1),P=[],R=[],ha;for(ha in V)P.push(V[ha]),R.push(ha);n.getModel().isEdge(J)?n.currentEdgeStyle={}:n.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",R,"values",P,"cells",[J]))}catch(la){this.handleError(la)}};this.clearDefaultStyle=function(){n.currentEdgeStyle=mxUtils.clone(n.defaultEdgeStyle);
n.currentVertexStyle=mxUtils.clone(n.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var f=["fontFamily","fontSource","fontSize","fontColor"];for(e=0;e<f.length;e++)0>mxUtils.indexOf(t,f[e])&&t.push(f[e]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),m=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
-["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<m.length;e++)for(k=0;k<m[e].length;k++)t.push(m[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var q=function(J,V,P,R,ia,la,ta){R=null!=R?R:n.currentVertexStyle;ia=null!=ia?ia:n.currentEdgeStyle;la=null!=la?la:!0;P=null!=P?P:n.getModel();if(ta){ta=[];for(var u=0;u<J.length;u++)ta=ta.concat(P.getDescendants(J[u]));J=ta}P.beginUpdate();try{for(u=0;u<J.length;u++){var I=J[u];if(V)var N=["fontSize",
-"fontFamily","fontColor"];else{var W=P.getStyle(I),T=null!=W?W.split(";"):[];N=t.slice();for(var Q=0;Q<T.length;Q++){var Z=T[Q],na=Z.indexOf("=");if(0<=na){var va=Z.substring(0,na),Ba=mxUtils.indexOf(N,va);0<=Ba&&N.splice(Ba,1);for(ta=0;ta<m.length;ta++){var sa=m[ta];if(0<=mxUtils.indexOf(sa,va))for(var Da=0;Da<sa.length;Da++){var Aa=mxUtils.indexOf(N,sa[Da]);0<=Aa&&N.splice(Aa,1)}}}}}var za=P.isEdge(I);ta=za?ia:R;var Ca=P.getStyle(I);for(Q=0;Q<N.length;Q++){va=N[Q];var Qa=ta[va];null!=Qa&&"edgeStyle"!=
+["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<m.length;e++)for(k=0;k<m[e].length;k++)t.push(m[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var q=function(J,V,P,R,ha,la,ta){R=null!=R?R:n.currentVertexStyle;ha=null!=ha?ha:n.currentEdgeStyle;la=null!=la?la:!0;P=null!=P?P:n.getModel();if(ta){ta=[];for(var u=0;u<J.length;u++)ta=ta.concat(P.getDescendants(J[u]));J=ta}P.beginUpdate();try{for(u=0;u<J.length;u++){var I=J[u];if(V)var N=["fontSize",
+"fontFamily","fontColor"];else{var W=P.getStyle(I),T=null!=W?W.split(";"):[];N=t.slice();for(var Q=0;Q<T.length;Q++){var Z=T[Q],na=Z.indexOf("=");if(0<=na){var va=Z.substring(0,na),Ba=mxUtils.indexOf(N,va);0<=Ba&&N.splice(Ba,1);for(ta=0;ta<m.length;ta++){var sa=m[ta];if(0<=mxUtils.indexOf(sa,va))for(var Da=0;Da<sa.length;Da++){var Aa=mxUtils.indexOf(N,sa[Da]);0<=Aa&&N.splice(Aa,1)}}}}}var za=P.isEdge(I);ta=za?ha:R;var Ca=P.getStyle(I);for(Q=0;Q<N.length;Q++){va=N[Q];var Qa=ta[va];null!=Qa&&"edgeStyle"!=
va&&("shape"!=va||za)&&(!za||la||0>mxUtils.indexOf(d,va))&&(Ca=mxUtils.setStyle(Ca,va,Qa))}Editor.simpleLabels&&(Ca=mxUtils.setStyle(mxUtils.setStyle(Ca,"html",null),"whiteSpace",null));P.setStyle(I,Ca)}}finally{P.endUpdate()}return J};n.addListener("cellsInserted",function(J,V){q(V.getProperty("cells"),null,null,null,null,!0,!0)});n.addListener("textInserted",function(J,V){q(V.getProperty("cells"),!0)});this.insertHandler=q;this.createDivs();this.createUi();this.refresh();var y=mxUtils.bind(this,
function(J){null==J&&(J=window.event);return n.isEditing()||null!=J&&this.isSelectionAllowed(J)});this.container==document.body&&(this.menubarContainer.onselectstart=y,this.menubarContainer.onmousedown=y,this.toolbarContainer.onselectstart=y,this.toolbarContainer.onmousedown=y,this.diagramContainer.onselectstart=y,this.diagramContainer.onmousedown=y,this.sidebarContainer.onselectstart=y,this.sidebarContainer.onmousedown=y,this.formatContainer.onselectstart=y,this.formatContainer.onmousedown=y,this.footerContainer.onselectstart=
y,this.footerContainer.onmousedown=y,null!=this.tabContainer&&(this.tabContainer.onselectstart=y));!this.editor.chromeless||this.editor.editable?(e=function(J){if(null!=J){var V=mxEvent.getSource(J);if("A"==V.nodeName)for(;null!=V;){if("geHint"==V.className)return!0;V=V.parentNode}}return y(J)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",e):this.diagramContainer.oncontextmenu=e):n.panningHandler.usePopupTrigger=
@@ -2076,9 +2077,9 @@ X=mxUtils.bind(this,function(){if(null!=this.toolbar&&ba!=n.cellEditor.isContent
Y=J;pa=P;O=V}}),ea=this,ka=n.cellEditor.startEditing;n.cellEditor.startEditing=function(){ka.apply(this,arguments);X();if(n.cellEditor.isContentEditing()){var J=!1,V=function(){J||(J=!0,window.setTimeout(function(){var P=n.getSelectedEditingElement();null!=P&&(P=mxUtils.getCurrentStyle(P),null!=P&&null!=ea.toolbar&&(ea.toolbar.setFontName(Graph.stripQuotes(P.fontFamily)),ea.toolbar.setFontSize(parseInt(P.fontSize))));J=!1},0))};mxEvent.addListener(n.cellEditor.textarea,"input",V);mxEvent.addListener(n.cellEditor.textarea,
"touchend",V);mxEvent.addListener(n.cellEditor.textarea,"mouseup",V);mxEvent.addListener(n.cellEditor.textarea,"keyup",V);V()}};var ja=n.cellEditor.stopEditing;n.cellEditor.stopEditing=function(J,V){try{ja.apply(this,arguments),X()}catch(P){ea.handleError(P)}};n.container.setAttribute("tabindex","0");n.container.style.cursor="default";if(window.self===window.top&&null!=n.container.parentNode)try{n.container.focus()}catch(J){}var U=n.fireMouseEvent;n.fireMouseEvent=function(J,V,P){J==mxEvent.MOUSE_DOWN&&
this.container.focus();U.apply(this,arguments)};n.popupMenuHandler.autoExpand=!0;null!=this.menus&&(n.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(J,V,P){this.menus.createPopupMenu(J,V,P)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(J){n.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};n.connectionHandler.addListener(mxEvent.CONNECT,function(J,V){var P=[V.getProperty("cell")];V.getProperty("terminalInserted")&&
-(P.push(V.getProperty("terminal")),window.setTimeout(function(){null!=ea.hoverIcons&&ea.hoverIcons.update(n.view.getState(P[P.length-1]))},0));q(P)});this.addListener("styleChanged",mxUtils.bind(this,function(J,V){var P=V.getProperty("cells"),R=J=!1;if(0<P.length)for(var ia=0;ia<P.length&&(J=n.getModel().isVertex(P[ia])||J,!(R=n.getModel().isEdge(P[ia])||R)||!J);ia++);else R=J=!0;P=V.getProperty("keys");V=V.getProperty("values");for(ia=0;ia<P.length;ia++){var la=0<=mxUtils.indexOf(f,P[ia]);if("strokeColor"!=
-P[ia]||null!=V[ia]&&"none"!=V[ia])if(0<=mxUtils.indexOf(E,P[ia]))R||0<=mxUtils.indexOf(g,P[ia])?null==V[ia]?delete n.currentEdgeStyle[P[ia]]:n.currentEdgeStyle[P[ia]]=V[ia]:J&&0<=mxUtils.indexOf(t,P[ia])&&(null==V[ia]?delete n.currentVertexStyle[P[ia]]:n.currentVertexStyle[P[ia]]=V[ia]);else if(0<=mxUtils.indexOf(t,P[ia])){if(J||la)null==V[ia]?delete n.currentVertexStyle[P[ia]]:n.currentVertexStyle[P[ia]]=V[ia];if(R||la||0<=mxUtils.indexOf(g,P[ia]))null==V[ia]?delete n.currentEdgeStyle[P[ia]]:n.currentEdgeStyle[P[ia]]=
-V[ia]}}null!=this.toolbar&&(this.toolbar.setFontName(n.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(n.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==n.currentEdgeStyle.edgeStyle&&"1"==n.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==n.currentEdgeStyle.edgeStyle||"none"==n.currentEdgeStyle.edgeStyle||null==
+(P.push(V.getProperty("terminal")),window.setTimeout(function(){null!=ea.hoverIcons&&ea.hoverIcons.update(n.view.getState(P[P.length-1]))},0));q(P)});this.addListener("styleChanged",mxUtils.bind(this,function(J,V){var P=V.getProperty("cells"),R=J=!1;if(0<P.length)for(var ha=0;ha<P.length&&(J=n.getModel().isVertex(P[ha])||J,!(R=n.getModel().isEdge(P[ha])||R)||!J);ha++);else R=J=!0;P=V.getProperty("keys");V=V.getProperty("values");for(ha=0;ha<P.length;ha++){var la=0<=mxUtils.indexOf(f,P[ha]);if("strokeColor"!=
+P[ha]||null!=V[ha]&&"none"!=V[ha])if(0<=mxUtils.indexOf(E,P[ha]))R||0<=mxUtils.indexOf(g,P[ha])?null==V[ha]?delete n.currentEdgeStyle[P[ha]]:n.currentEdgeStyle[P[ha]]=V[ha]:J&&0<=mxUtils.indexOf(t,P[ha])&&(null==V[ha]?delete n.currentVertexStyle[P[ha]]:n.currentVertexStyle[P[ha]]=V[ha]);else if(0<=mxUtils.indexOf(t,P[ha])){if(J||la)null==V[ha]?delete n.currentVertexStyle[P[ha]]:n.currentVertexStyle[P[ha]]=V[ha];if(R||la||0<=mxUtils.indexOf(g,P[ha]))null==V[ha]?delete n.currentEdgeStyle[P[ha]]:n.currentEdgeStyle[P[ha]]=
+V[ha]}}null!=this.toolbar&&(this.toolbar.setFontName(n.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(n.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==n.currentEdgeStyle.edgeStyle&&"1"==n.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==n.currentEdgeStyle.edgeStyle||"none"==n.currentEdgeStyle.edgeStyle||null==
n.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&
(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==n.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==n.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==n.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"))}));null!=this.toolbar&&(b=mxUtils.bind(this,function(){var J=n.currentVertexStyle.fontFamily||"Helvetica",V=String(n.currentVertexStyle.fontSize||"12"),P=n.getView().getState(n.getSelectionCell());null!=P&&(J=
P.style[mxConstants.STYLE_FONTFAMILY]||J,V=P.style[mxConstants.STYLE_FONTSIZE]||V,10<J.length&&(J=J.substring(0,8)+"..."));this.toolbar.setFontName(J);this.toolbar.setFontSize(V)}),n.getSelectionModel().addListener(mxEvent.CHANGE,b),n.getModel().addListener(mxEvent.CHANGE,b));n.addListener(mxEvent.CELLS_ADDED,function(J,V){J=V.getProperty("cells");V=V.getProperty("parent");null!=V&&n.getModel().isLayer(V)&&!n.isCellVisible(V)&&null!=J&&0<J.length&&n.getModel().setVisible(V,!0)});this.gestureHandler=
@@ -2129,13 +2130,13 @@ EditorUi.prototype.initClipboard=function(){var b=this,e=mxClipboard.cut;mxClipb
null;t.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):E=k.apply(this,arguments);b.updatePasteActionStates();return E};var n=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){n.apply(this,arguments);b.updatePasteActionStates()};var D=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(t,E){D.apply(this,arguments);b.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
EditorUi.prototype.initCanvas=function(){var b=this.editor.graph;b.timerAutoScroll=!0;b.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((b.container.offsetWidth-34)/b.view.scale)),Math.max(0,Math.round((b.container.offsetHeight-34)/b.view.scale)))};b.view.getBackgroundPageBounds=function(){var P=this.graph.getPageLayout(),R=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+P.x*R.width),this.scale*(this.translate.y+P.y*R.height),this.scale*P.width*R.width,
-this.scale*P.height*R.height)};b.getPreferredPageSize=function(P,R,ia){P=this.getPageLayout();R=this.getPageSize();return new mxRectangle(0,0,P.width*R.width,P.height*R.height)};var e=null,k=this;if(this.editor.isChromelessView()){this.chromelessResize=e=mxUtils.bind(this,function(P,R,ia,la){if(null!=b.container&&!b.isViewer()){ia=null!=ia?ia:0;la=null!=la?la:0;var ta=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),u=mxUtils.hasScrollbars(b.container),I=b.view.translate,N=b.view.scale,
+this.scale*P.height*R.height)};b.getPreferredPageSize=function(P,R,ha){P=this.getPageLayout();R=this.getPageSize();return new mxRectangle(0,0,P.width*R.width,P.height*R.height)};var e=null,k=this;if(this.editor.isChromelessView()){this.chromelessResize=e=mxUtils.bind(this,function(P,R,ha,la){if(null!=b.container&&!b.isViewer()){ha=null!=ha?ha:0;la=null!=la?la:0;var ta=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),u=mxUtils.hasScrollbars(b.container),I=b.view.translate,N=b.view.scale,
W=mxRectangle.fromRectangle(ta);W.x=W.x/N-I.x;W.y=W.y/N-I.y;W.width/=N;W.height/=N;I=b.container.scrollTop;var T=b.container.scrollLeft,Q=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)Q+=3;var Z=b.container.offsetWidth-Q;Q=b.container.offsetHeight-Q;P=P?Math.max(.3,Math.min(R||1,Z/W.width)):N;R=(Z-P*W.width)/2/P;var na=0==this.lightboxVerticalDivider?0:(Q-P*W.height)/this.lightboxVerticalDivider/P;u&&(R=Math.max(R,0),na=Math.max(na,0));if(u||ta.width<Z||ta.height<
-Q)b.view.scaleAndTranslate(P,Math.floor(R-W.x),Math.floor(na-W.y)),b.container.scrollTop=I*P/N,b.container.scrollLeft=T*P/N;else if(0!=ia||0!=la)ta=b.view.translate,b.view.setTranslate(Math.floor(ta.x+ia/N),Math.floor(ta.y+la/N))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var n=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",n);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",
+Q)b.view.scaleAndTranslate(P,Math.floor(R-W.x),Math.floor(na-W.y)),b.container.scrollTop=I*P/N,b.container.scrollLeft=T*P/N;else if(0!=ha||0!=la)ta=b.view.translate,b.view.setTranslate(Math.floor(ta.x+ha/N),Math.floor(ta.y+la/N))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var n=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",n);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",
n)});this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(P){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(P){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var D=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";
this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=b.isViewer()?"0":"50%";mxClient.IS_IE||mxClient.IS_IE11?(this.chromelessToolbar.style.backgroundColor="#ffffff",this.chromelessToolbar.style.border="3px solid black"):this.chromelessToolbar.style.backgroundColor="#000000";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,
-"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out");var t=mxUtils.bind(this,function(){var P=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=P?parseInt(P["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",t);t();var E=0;t=mxUtils.bind(this,function(P,R,ia){E++;
-var la=document.createElement("span");la.style.paddingLeft="8px";la.style.paddingRight="8px";la.style.cursor="pointer";mxEvent.addListener(la,"click",P);null!=ia&&la.setAttribute("title",ia);P=document.createElement("img");P.setAttribute("border","0");P.setAttribute("src",R);P.style.width="36px";P.style.filter="invert(100%)";la.appendChild(P);this.chromelessToolbar.appendChild(la);return la});null!=D.backBtn&&t(mxUtils.bind(this,function(P){window.location.href=D.backBtn.url;mxEvent.consume(P)}),
+"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out");var t=mxUtils.bind(this,function(){var P=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=P?parseInt(P["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",t);t();var E=0;t=mxUtils.bind(this,function(P,R,ha){E++;
+var la=document.createElement("span");la.style.paddingLeft="8px";la.style.paddingRight="8px";la.style.cursor="pointer";mxEvent.addListener(la,"click",P);null!=ha&&la.setAttribute("title",ha);P=document.createElement("img");P.setAttribute("border","0");P.setAttribute("src",R);P.style.width="36px";P.style.filter="invert(100%)";la.appendChild(P);this.chromelessToolbar.appendChild(la);return la});null!=D.backBtn&&t(mxUtils.bind(this,function(P){window.location.href=D.backBtn.url;mxEvent.consume(P)}),
Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var d=t(mxUtils.bind(this,function(P){this.actions.get("previousPage").funct();mxEvent.consume(P)}),Editor.previousImage,mxResources.get("previousPage")),f=document.createElement("div");f.style.fontFamily=Editor.defaultHtmlFont;f.style.display="inline-block";f.style.verticalAlign="top";f.style.fontWeight="bold";f.style.marginTop="8px";f.style.fontSize="14px";f.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";
this.chromelessToolbar.appendChild(f);var g=t(mxUtils.bind(this,function(P){this.actions.get("nextPage").funct();mxEvent.consume(P)}),Editor.nextImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerText="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var q=mxUtils.bind(this,
function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",d.style.display="",f.style.display="inline-block"):(g.style.display="none",d.style.display="none",f.style.display="none");m()});this.editor.addListener("resetGraphView",q);this.editor.addListener("pageSelected",m)}t(mxUtils.bind(this,function(P){this.actions.get("zoomOut").funct();mxEvent.consume(P)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(P){this.actions.get("zoomIn").funct();
@@ -2150,18 +2151,18 @@ document.body))&&t(mxUtils.bind(this,function(P){"1"==urlParams.close||D.closeBt
(mxEvent.isShiftDown(P)||H(30),C())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(P){mxEvent.consume(P)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(P){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(P)?C():H(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(P){mxEvent.isShiftDown(P)?C():H(100);mxEvent.consume(P)}));mxEvent.addListener(this.chromelessToolbar,
"mouseleave",mxUtils.bind(this,function(P){mxEvent.isTouchEvent(P)||H(30)}));var ba=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(P,R){this.startX=R.getGraphX();this.startY=R.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(P,R){},mouseUp:function(P,R){mxEvent.isTouchEvent(R.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<ba&&Math.abs(this.scrollTop-b.container.scrollTop)<
ba&&Math.abs(this.startX-R.getGraphX())<ba&&Math.abs(this.startY-R.getGraphY())<ba&&(0<parseFloat(k.chromelessToolbar.style.opacity||0)?C():H(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var Y=b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var P=this.graph.getPagePadding(),R=this.graph.getPageSize();this.translate.x=P.x-(this.x0||0)*R.width;this.translate.y=P.y-(this.y0||0)*
-R.height}Y.apply(this,arguments)};if(!b.isViewer()){var pa=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var P=this.getPageLayout(),R=this.getPagePadding(),ia=this.getPageSize(),la=Math.ceil(2*R.x+P.width*ia.width),ta=Math.ceil(2*R.y+P.height*ia.height),u=b.minimumGraphSize;if(null==u||u.width!=la||u.height!=ta)b.minimumGraphSize=new mxRectangle(0,0,la,ta);la=R.x-P.x*ia.width;R=R.y-P.y*ia.height;this.autoTranslate||this.view.translate.x==
-la&&this.view.translate.y==R?pa.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=P.x,this.view.y0=P.y,P=b.view.translate.x,ia=b.view.translate.y,b.view.setTranslate(la,R),b.container.scrollLeft+=Math.round((la-P)*b.view.scale),b.container.scrollTop+=Math.round((R-ia)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var O=b.view.getBackgroundPane(),X=b.view.getDrawPane();b.cumulativeZoomFactor=1;var ea=null,ka=null,
+R.height}Y.apply(this,arguments)};if(!b.isViewer()){var pa=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var P=this.getPageLayout(),R=this.getPagePadding(),ha=this.getPageSize(),la=Math.ceil(2*R.x+P.width*ha.width),ta=Math.ceil(2*R.y+P.height*ha.height),u=b.minimumGraphSize;if(null==u||u.width!=la||u.height!=ta)b.minimumGraphSize=new mxRectangle(0,0,la,ta);la=R.x-P.x*ha.width;R=R.y-P.y*ha.height;this.autoTranslate||this.view.translate.x==
+la&&this.view.translate.y==R?pa.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=P.x,this.view.y0=P.y,P=b.view.translate.x,ha=b.view.translate.y,b.view.setTranslate(la,R),b.container.scrollLeft+=Math.round((la-P)*b.view.scale),b.container.scrollTop+=Math.round((R-ha)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var O=b.view.getBackgroundPane(),X=b.view.getDrawPane();b.cumulativeZoomFactor=1;var ea=null,ka=null,
ja=null,U=null,J=null,V=function(P){null!=ea&&window.clearTimeout(ea);0<=P&&window.setTimeout(function(){if(!b.isMouseDown||U)ea=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),X.style.transformOrigin="",O.style.transformOrigin="",mxClient.IS_SF?
-(X.style.transform="scale(1)",O.style.transform="scale(1)",window.setTimeout(function(){X.style.transform="";O.style.transform=""},0)):(X.style.transform="",O.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var R=new mxPoint(b.container.scrollLeft,b.container.scrollTop),ia=mxUtils.getOffset(b.container),la=b.view.scale,ta=0,u=0;null!=ka&&(ta=b.container.offsetWidth/2-ka.x+ia.x,u=b.container.offsetHeight/2-ka.y+ia.y);b.zoom(b.cumulativeZoomFactor,
+(X.style.transform="scale(1)",O.style.transform="scale(1)",window.setTimeout(function(){X.style.transform="";O.style.transform=""},0)):(X.style.transform="",O.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var R=new mxPoint(b.container.scrollLeft,b.container.scrollTop),ha=mxUtils.getOffset(b.container),la=b.view.scale,ta=0,u=0;null!=ka&&(ta=b.container.offsetWidth/2-ka.x+ha.x,u=b.container.offsetHeight/2-ka.y+ha.y);b.zoom(b.cumulativeZoomFactor,
null,b.isFastZoomEnabled()?20:null);b.view.scale!=la&&(null!=ja&&(ta+=R.x-ja.x,u+=R.y-ja.y),null!=e&&k.chromelessResize(!1,null,ta*(b.cumulativeZoomFactor-1),u*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==ta&&0==u||(b.container.scrollLeft-=ta*(b.cumulativeZoomFactor-1),b.container.scrollTop-=u*(b.cumulativeZoomFactor-1)));null!=J&&X.setAttribute("filter",J);b.cumulativeZoomFactor=1;J=U=ka=ja=ea=null}),null!=P?P:b.isFastZoomEnabled()?k.wheelZoomDelay:k.lazyZoomDelay)},0)};b.lazyZoom=
-function(P,R,ia,la){la=null!=la?la:this.zoomFactor;(R=R||!b.scrollbars)&&(ka=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));P?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
+function(P,R,ha,la){la=null!=la?la:this.zoomFactor;(R=R||!b.scrollbars)&&(ka=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));P?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==J&&""!=X.getAttribute("filter")&&(J=X.getAttribute("filter"),X.removeAttribute("filter")),ja=new mxPoint(b.container.scrollLeft,b.container.scrollTop),P=R||null==ka?b.container.scrollLeft+
b.container.clientWidth/2:ka.x+b.container.scrollLeft-b.container.offsetLeft,la=R||null==ka?b.container.scrollTop+b.container.clientHeight/2:ka.y+b.container.scrollTop-b.container.offsetTop,X.style.transformOrigin=P+"px "+la+"px",X.style.transform="scale("+this.cumulativeZoomFactor+")",O.style.transformOrigin=P+"px "+la+"px",O.style.transform="scale("+this.cumulativeZoomFactor+")",null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(P=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(P.style,
"transform-origin",(R||null==ka?b.container.clientWidth/2+b.container.scrollLeft-P.offsetLeft+"px":ka.x+b.container.scrollLeft-P.offsetLeft-b.container.offsetLeft+"px")+" "+(R||null==ka?b.container.clientHeight/2+b.container.scrollTop-P.offsetTop+"px":ka.y+b.container.scrollTop-P.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(P.style,"transform","scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=k.hoverIcons&&
-k.hoverIcons.reset());V(b.isFastZoomEnabled()?ia:0)};mxEvent.addGestureListeners(b.container,function(P){null!=ea&&window.clearTimeout(ea)},null,function(P){1!=b.cumulativeZoomFactor&&V(0)});mxEvent.addListener(b.container,"scroll",function(P){null==ea||b.isMouseDown||1==b.cumulativeZoomFactor||V(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(P,R,ia,la,ta){b.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!ia&&b.isScrollWheelEvent(P))ia=
-b.view.getTranslate(),la=40/b.view.scale,mxEvent.isShiftDown(P)?b.view.setTranslate(ia.x+(R?-la:la),ia.y):b.view.setTranslate(ia.x,ia.y+(R?la:-la));else if(ia||b.isZoomWheelEvent(P))for(var u=mxEvent.getSource(P);null!=u;){if(u==b.container)return b.tooltipHandler.hideTooltip(),ka=null!=la&&null!=ta?new mxPoint(la,ta):new mxPoint(mxEvent.getClientX(P),mxEvent.getClientY(P)),U=ia,ia=b.zoomFactor,la=null,P.ctrlKey&&null!=P.deltaY&&40>Math.abs(P.deltaY)&&Math.round(P.deltaY)!=P.deltaY?ia=1+Math.abs(P.deltaY)/
-20*(ia-1):null!=P.movementY&&"pointermove"==P.type&&(ia=1+Math.max(1,Math.abs(P.movementY))/20*(ia-1),la=-1),b.lazyZoom(R,null,la,ia),mxEvent.consume(P),!1;u=u.parentNode}}),b.container);b.panningHandler.zoomGraph=function(P){b.cumulativeZoomFactor=P.scale;b.lazyZoom(0<P.scale,!0);mxEvent.consume(P)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(e){this.actions.get("print").funct();mxEvent.consume(e)}),Editor.printImage,mxResources.get("print"))};
+k.hoverIcons.reset());V(b.isFastZoomEnabled()?ha:0)};mxEvent.addGestureListeners(b.container,function(P){null!=ea&&window.clearTimeout(ea)},null,function(P){1!=b.cumulativeZoomFactor&&V(0)});mxEvent.addListener(b.container,"scroll",function(P){null==ea||b.isMouseDown||1==b.cumulativeZoomFactor||V(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(P,R,ha,la,ta){b.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!ha&&b.isScrollWheelEvent(P))ha=
+b.view.getTranslate(),la=40/b.view.scale,mxEvent.isShiftDown(P)?b.view.setTranslate(ha.x+(R?-la:la),ha.y):b.view.setTranslate(ha.x,ha.y+(R?la:-la));else if(ha||b.isZoomWheelEvent(P))for(var u=mxEvent.getSource(P);null!=u;){if(u==b.container)return b.tooltipHandler.hideTooltip(),ka=null!=la&&null!=ta?new mxPoint(la,ta):new mxPoint(mxEvent.getClientX(P),mxEvent.getClientY(P)),U=ha,ha=b.zoomFactor,la=null,P.ctrlKey&&null!=P.deltaY&&40>Math.abs(P.deltaY)&&Math.round(P.deltaY)!=P.deltaY?ha=1+Math.abs(P.deltaY)/
+20*(ha-1):null!=P.movementY&&"pointermove"==P.type&&(ha=1+Math.max(1,Math.abs(P.movementY))/20*(ha-1),la=-1),b.lazyZoom(R,null,la,ha),mxEvent.consume(P),!1;u=u.parentNode}}),b.container);b.panningHandler.zoomGraph=function(P){b.cumulativeZoomFactor=P.scale;b.lazyZoom(0<P.scale,!0);mxEvent.consume(P)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(e){this.actions.get("print").funct();mxEvent.consume(e)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.isPagesEnabled=function(){return this.editor.editable||"1"!=urlParams["hide-pages"]};EditorUi.prototype.createTemporaryGraph=function(b){return Graph.createOffscreenGraph(b)};EditorUi.prototype.addChromelessClickHandler=function(){var b=urlParams.highlight;null!=b&&0<b.length&&(b="#"+b);this.editor.graph.addClickHandler(b)};
EditorUi.prototype.toggleFormatPanel=function(b){b=null!=b?b:0==this.formatWidth;null!=this.format&&(this.formatWidth=b?240:0,this.formatContainer.style.display=b?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
EditorUi.prototype.lightboxFit=function(b){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var e=urlParams.border,k=60;null!=e&&(k=parseInt(e));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(k,null,null,null,null,null,b);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var b=this.editor.graph.getModel();return 1==b.getChildCount(b.root)&&0==b.getChildCount(b.getChildAt(b.root,0))};
@@ -2253,29 +2254,29 @@ this.scrollHandler=null);if(null!=this.destroyFunctions){for(b=0;b<this.destroyF
Date.prototype.toISOString||function(){function b(e){e=String(e);1===e.length&&(e="0"+e);return e}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+b(this.getUTCMonth()+1)+"-"+b(this.getUTCDate())+"T"+b(this.getUTCHours())+":"+b(this.getUTCMinutes())+":"+b(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
Uint8Array.from||(Uint8Array.from=function(){var b=Object.prototype.toString,e=function(n){return"function"===typeof n||"[object Function]"===b.call(n)},k=Math.pow(2,53)-1;return function(n){var D=Object(n);if(null==n)throw new TypeError("Array.from requires an array-like object - not null or undefined");var t=1<arguments.length?arguments[1]:void 0,E;if("undefined"!==typeof t){if(!e(t))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(E=
arguments[2])}var d=Number(D.length);d=isNaN(d)?0:0!==d&&isFinite(d)?(0<d?1:-1)*Math.floor(Math.abs(d)):d;d=Math.min(Math.max(d,0),k);for(var f=e(this)?Object(new this(d)):Array(d),g=0,m;g<d;)m=D[g],f[g]=t?"undefined"===typeof E?t(m,g):t.call(E,m,g):m,g+=1;f.length=d;return f}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
-mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var b=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===b||"en-ca"===b||"es-mx"===b?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
-mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
-mxGraphView.prototype.setUnit=function(b){this.unit!=b&&(this.unit=b,this.fireEvent(new mxEventObject("unitChanged","unit",b)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(b,e,k){return null};
+mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxCodec.allowlist="mxStylesheet Array mxGraphModel mxCell mxGeometry mxRectangle mxPoint".split(" ");mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var b=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===b||"en-ca"===b||"es-mx"===b?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}})();
+mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;
+mxGraphView.prototype.unit=mxConstants.POINTS;mxGraphView.prototype.setUnit=function(b){this.unit!=b&&(this.unit=b,this.fireEvent(new mxEventObject("unitChanged","unit",b)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(b,e,k){return null};
mxImageShape.prototype.getImageDataUri=function(){var b=this.image;if("data:image/svg+xml;base64,"==b.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=b)this.clippedSvg=Graph.clipSvgDataUri(b,!0),this.clippedImage=b;b=this.clippedSvg}return b};
Graph=function(b,e,k,n,D,t){mxGraph.call(this,b,e,k,n);this.themes=D||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=t?t:!1;b=this.baseUrl;e=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<e&&(e=b.indexOf("/",e+2),0<e&&(this.domainUrl=b.substring(0,e)),e=b.lastIndexOf("/"),0<e&&(this.domainPathUrl=b.substring(0,e+1)));this.isHtmlLabel=function(J){J=this.getCurrentCellStyle(J);
return null!=J?"1"==J.html||"wrap"==J[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var E=null,d=null,f=null,g=null,m=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(J,V){if("mouseDown"==V.getProperty("eventName")&&this.isEnabled()){J=V.getProperty("event");var P=J.getState();V=this.view.scale;if(!mxEvent.isAltDown(J.getEvent())&&null!=P)if(this.model.isEdge(P.cell))if(E=new mxPoint(J.getGraphX(),J.getGraphY()),m=this.isCellSelected(P.cell),f=P,d=J,null!=P.text&&null!=
-P.text.boundingBox&&mxUtils.contains(P.text.boundingBox,J.getGraphX(),J.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var R=this.selectionCellsHandler.getHandler(P.cell);null!=R&&null!=R.bends&&0<R.bends.length&&(g=R.getHandleForEvent(J))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(J.getEvent())&&(R=this.selectionCellsHandler.getHandler(P.cell),null==R||null==R.getHandleForEvent(J))){var ia=new mxRectangle(J.getGraphX()-1,J.getGraphY()-1),la=mxEvent.isTouchEvent(J.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+2)/2;R=la+2;ia.grow(la);if(this.isTableCell(P.cell)&&!this.isCellSelected(P.cell)&&!(mxUtils.contains(P,J.getGraphX()-R,J.getGraphY()-R)&&mxUtils.contains(P,J.getGraphX()-R,J.getGraphY()+R)&&mxUtils.contains(P,J.getGraphX()+R,J.getGraphY()+R)&&mxUtils.contains(P,J.getGraphX()+R,J.getGraphY()-R))){var ta=this.model.getParent(P.cell);R=this.model.getParent(ta);if(!this.isCellSelected(R)){la*=V;var u=2*la;if(this.model.getChildAt(R,0)!=ta&&mxUtils.intersects(ia,
-new mxRectangle(P.x,P.y-la,P.width,u))||this.model.getChildAt(ta,0)!=P.cell&&mxUtils.intersects(ia,new mxRectangle(P.x-la,P.y,u,P.height))||mxUtils.intersects(ia,new mxRectangle(P.x,P.y+P.height-la,P.width,u))||mxUtils.intersects(ia,new mxRectangle(P.x+P.width-la,P.y,u,P.height)))ta=this.selectionCellsHandler.isHandled(R),this.selectCellForEvent(R,J.getEvent()),R=this.selectionCellsHandler.getHandler(R),null!=R&&(la=R.getHandleForEvent(J),null!=la&&(R.start(J.getGraphX(),J.getGraphY(),la),R.blockDelayedSelection=
-!ta,J.consume()))}}for(;!J.isConsumed()&&null!=P&&(this.isTableCell(P.cell)||this.isTableRow(P.cell)||this.isTable(P.cell));)this.isSwimlane(P.cell)&&(R=this.getActualStartSize(P.cell),(0<R.x||0<R.width)&&mxUtils.intersects(ia,new mxRectangle(P.x+(R.x-R.width-1)*V+(0==R.x?P.width:0),P.y,1,P.height))||(0<R.y||0<R.height)&&mxUtils.intersects(ia,new mxRectangle(P.x,P.y+(R.y-R.height-1)*V+(0==R.y?P.height:0),P.width,1)))&&(this.selectCellForEvent(P.cell,J.getEvent()),R=this.selectionCellsHandler.getHandler(P.cell),
+P.text.boundingBox&&mxUtils.contains(P.text.boundingBox,J.getGraphX(),J.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var R=this.selectionCellsHandler.getHandler(P.cell);null!=R&&null!=R.bends&&0<R.bends.length&&(g=R.getHandleForEvent(J))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(J.getEvent())&&(R=this.selectionCellsHandler.getHandler(P.cell),null==R||null==R.getHandleForEvent(J))){var ha=new mxRectangle(J.getGraphX()-1,J.getGraphY()-1),la=mxEvent.isTouchEvent(J.getEvent())?mxShape.prototype.svgStrokeTolerance-
+1:(mxShape.prototype.svgStrokeTolerance+2)/2;R=la+2;ha.grow(la);if(this.isTableCell(P.cell)&&!this.isCellSelected(P.cell)&&!(mxUtils.contains(P,J.getGraphX()-R,J.getGraphY()-R)&&mxUtils.contains(P,J.getGraphX()-R,J.getGraphY()+R)&&mxUtils.contains(P,J.getGraphX()+R,J.getGraphY()+R)&&mxUtils.contains(P,J.getGraphX()+R,J.getGraphY()-R))){var ta=this.model.getParent(P.cell);R=this.model.getParent(ta);if(!this.isCellSelected(R)){la*=V;var u=2*la;if(this.model.getChildAt(R,0)!=ta&&mxUtils.intersects(ha,
+new mxRectangle(P.x,P.y-la,P.width,u))||this.model.getChildAt(ta,0)!=P.cell&&mxUtils.intersects(ha,new mxRectangle(P.x-la,P.y,u,P.height))||mxUtils.intersects(ha,new mxRectangle(P.x,P.y+P.height-la,P.width,u))||mxUtils.intersects(ha,new mxRectangle(P.x+P.width-la,P.y,u,P.height)))ta=this.selectionCellsHandler.isHandled(R),this.selectCellForEvent(R,J.getEvent()),R=this.selectionCellsHandler.getHandler(R),null!=R&&(la=R.getHandleForEvent(J),null!=la&&(R.start(J.getGraphX(),J.getGraphY(),la),R.blockDelayedSelection=
+!ta,J.consume()))}}for(;!J.isConsumed()&&null!=P&&(this.isTableCell(P.cell)||this.isTableRow(P.cell)||this.isTable(P.cell));)this.isSwimlane(P.cell)&&(R=this.getActualStartSize(P.cell),(0<R.x||0<R.width)&&mxUtils.intersects(ha,new mxRectangle(P.x+(R.x-R.width-1)*V+(0==R.x?P.width:0),P.y,1,P.height))||(0<R.y||0<R.height)&&mxUtils.intersects(ha,new mxRectangle(P.x,P.y+(R.y-R.height-1)*V+(0==R.y?P.height:0),P.width,1)))&&(this.selectCellForEvent(P.cell,J.getEvent()),R=this.selectionCellsHandler.getHandler(P.cell),
null!=R&&(la=mxEvent.CUSTOM_HANDLE-R.customHandles.length+1,R.start(J.getGraphX(),J.getGraphY(),la),J.consume())),P=this.view.getState(this.model.getParent(P.cell))}}}));this.addMouseListener({mouseDown:function(J,V){},mouseMove:mxUtils.bind(this,function(J,V){J=this.selectionCellsHandler.handlers.map;for(var P in J)if(null!=J[P].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(V.getEvent())){var R=this.tolerance;if(null!=E&&null!=f&&null!=d){if(P=f,Math.abs(E.x-
-V.getGraphX())>R||Math.abs(E.y-V.getGraphY())>R){var ia=this.selectionCellsHandler.getHandler(P.cell);null==ia&&this.model.isEdge(P.cell)&&(ia=this.createHandler(P));if(null!=ia&&null!=ia.bends&&0<ia.bends.length){J=ia.getHandleForEvent(d);var la=this.view.getEdgeStyle(P);R=la==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(J=g);if(R&&0!=J&&J!=ia.bends.length-1&&J!=mxEvent.LABEL_HANDLE)!R||null==P.visibleSourceState&&null==P.visibleTargetState||(this.graphHandler.reset(),V.consume());else if(J==
-mxEvent.LABEL_HANDLE||0==J||null!=P.visibleSourceState||J==ia.bends.length-1||null!=P.visibleTargetState)R||J==mxEvent.LABEL_HANDLE||(R=P.absolutePoints,null!=R&&(null==la&&null==J||la==mxEdgeStyle.OrthConnector)&&(J=g,null==J&&(J=new mxRectangle(E.x,E.y),J.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(J,R[0].x,R[0].y)?J=0:mxUtils.contains(J,R[R.length-1].x,R[R.length-1].y)?J=ia.bends.length-1:null!=la&&(2==R.length||3==R.length&&(0==Math.round(R[0].x-R[1].x)&&0==Math.round(R[1].x-
-R[2].x)||0==Math.round(R[0].y-R[1].y)&&0==Math.round(R[1].y-R[2].y)))?J=2:(J=mxUtils.findNearestSegment(P,E.x,E.y),J=null==la?mxEvent.VIRTUAL_HANDLE-J:J+1))),null==J&&(J=mxEvent.VIRTUAL_HANDLE)),ia.start(V.getGraphX(),V.getGraphX(),J),V.consume(),this.graphHandler.reset()}null!=ia&&(this.selectionCellsHandler.isHandlerActive(ia)?this.isCellSelected(P.cell)||(this.selectionCellsHandler.handlers.put(P.cell,ia),this.selectCellForEvent(P.cell,V.getEvent())):this.isCellSelected(P.cell)||ia.destroy());
-m=!1;E=d=f=g=null}}else if(P=V.getState(),null!=P&&this.isCellEditable(P.cell)){ia=null;if(this.model.isEdge(P.cell)){if(J=new mxRectangle(V.getGraphX(),V.getGraphY()),J.grow(mxEdgeHandler.prototype.handleImage.width/2),R=P.absolutePoints,null!=R)if(null!=P.text&&null!=P.text.boundingBox&&mxUtils.contains(P.text.boundingBox,V.getGraphX(),V.getGraphY()))ia="move";else if(mxUtils.contains(J,R[0].x,R[0].y)||mxUtils.contains(J,R[R.length-1].x,R[R.length-1].y))ia="pointer";else if(null!=P.visibleSourceState||
-null!=P.visibleTargetState)J=this.view.getEdgeStyle(P),ia="crosshair",J!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(P)&&(V=mxUtils.findNearestSegment(P,V.getGraphX(),V.getGraphY()),V<R.length-1&&0<=V&&(ia=0==Math.round(R[V].x-R[V+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(V.getEvent())){R=mxShape.prototype.svgStrokeTolerance/2;J=new mxRectangle(V.getGraphX(),V.getGraphY());J.grow(R);if(this.isTableCell(P.cell)&&(V=this.model.getParent(P.cell),R=this.model.getParent(V),!this.isCellSelected(R)))if(mxUtils.intersects(J,
-new mxRectangle(P.x,P.y-2,P.width,4))&&this.model.getChildAt(R,0)!=V||mxUtils.intersects(J,new mxRectangle(P.x,P.y+P.height-2,P.width,4)))ia="row-resize";else if(mxUtils.intersects(J,new mxRectangle(P.x-2,P.y,4,P.height))&&this.model.getChildAt(V,0)!=P.cell||mxUtils.intersects(J,new mxRectangle(P.x+P.width-2,P.y,4,P.height)))ia="col-resize";for(V=P;null==ia&&null!=V&&(this.isTableCell(V.cell)||this.isTableRow(V.cell)||this.isTable(V.cell));)this.isSwimlane(V.cell)&&(R=this.getActualStartSize(V.cell),
-la=this.view.scale,(0<R.x||0<R.width)&&mxUtils.intersects(J,new mxRectangle(V.x+(R.x-R.width-1)*la+(0==R.x?V.width*la:0),V.y,1,V.height))?ia="col-resize":(0<R.y||0<R.height)&&mxUtils.intersects(J,new mxRectangle(V.x,V.y+(R.y-R.height-1)*la+(0==R.y?V.height:0),V.width,1))&&(ia="row-resize")),V=this.view.getState(this.model.getParent(V.cell))}null!=ia&&P.setCursor(ia)}}}),mouseUp:mxUtils.bind(this,function(J,V){g=E=d=f=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=
+V.getGraphX())>R||Math.abs(E.y-V.getGraphY())>R){var ha=this.selectionCellsHandler.getHandler(P.cell);null==ha&&this.model.isEdge(P.cell)&&(ha=this.createHandler(P));if(null!=ha&&null!=ha.bends&&0<ha.bends.length){J=ha.getHandleForEvent(d);var la=this.view.getEdgeStyle(P);R=la==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(J=g);if(R&&0!=J&&J!=ha.bends.length-1&&J!=mxEvent.LABEL_HANDLE)!R||null==P.visibleSourceState&&null==P.visibleTargetState||(this.graphHandler.reset(),V.consume());else if(J==
+mxEvent.LABEL_HANDLE||0==J||null!=P.visibleSourceState||J==ha.bends.length-1||null!=P.visibleTargetState)R||J==mxEvent.LABEL_HANDLE||(R=P.absolutePoints,null!=R&&(null==la&&null==J||la==mxEdgeStyle.OrthConnector)&&(J=g,null==J&&(J=new mxRectangle(E.x,E.y),J.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(J,R[0].x,R[0].y)?J=0:mxUtils.contains(J,R[R.length-1].x,R[R.length-1].y)?J=ha.bends.length-1:null!=la&&(2==R.length||3==R.length&&(0==Math.round(R[0].x-R[1].x)&&0==Math.round(R[1].x-
+R[2].x)||0==Math.round(R[0].y-R[1].y)&&0==Math.round(R[1].y-R[2].y)))?J=2:(J=mxUtils.findNearestSegment(P,E.x,E.y),J=null==la?mxEvent.VIRTUAL_HANDLE-J:J+1))),null==J&&(J=mxEvent.VIRTUAL_HANDLE)),ha.start(V.getGraphX(),V.getGraphX(),J),V.consume(),this.graphHandler.reset()}null!=ha&&(this.selectionCellsHandler.isHandlerActive(ha)?this.isCellSelected(P.cell)||(this.selectionCellsHandler.handlers.put(P.cell,ha),this.selectCellForEvent(P.cell,V.getEvent())):this.isCellSelected(P.cell)||ha.destroy());
+m=!1;E=d=f=g=null}}else if(P=V.getState(),null!=P&&this.isCellEditable(P.cell)){ha=null;if(this.model.isEdge(P.cell)){if(J=new mxRectangle(V.getGraphX(),V.getGraphY()),J.grow(mxEdgeHandler.prototype.handleImage.width/2),R=P.absolutePoints,null!=R)if(null!=P.text&&null!=P.text.boundingBox&&mxUtils.contains(P.text.boundingBox,V.getGraphX(),V.getGraphY()))ha="move";else if(mxUtils.contains(J,R[0].x,R[0].y)||mxUtils.contains(J,R[R.length-1].x,R[R.length-1].y))ha="pointer";else if(null!=P.visibleSourceState||
+null!=P.visibleTargetState)J=this.view.getEdgeStyle(P),ha="crosshair",J!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(P)&&(V=mxUtils.findNearestSegment(P,V.getGraphX(),V.getGraphY()),V<R.length-1&&0<=V&&(ha=0==Math.round(R[V].x-R[V+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(V.getEvent())){R=mxShape.prototype.svgStrokeTolerance/2;J=new mxRectangle(V.getGraphX(),V.getGraphY());J.grow(R);if(this.isTableCell(P.cell)&&(V=this.model.getParent(P.cell),R=this.model.getParent(V),!this.isCellSelected(R)))if(mxUtils.intersects(J,
+new mxRectangle(P.x,P.y-2,P.width,4))&&this.model.getChildAt(R,0)!=V||mxUtils.intersects(J,new mxRectangle(P.x,P.y+P.height-2,P.width,4)))ha="row-resize";else if(mxUtils.intersects(J,new mxRectangle(P.x-2,P.y,4,P.height))&&this.model.getChildAt(V,0)!=P.cell||mxUtils.intersects(J,new mxRectangle(P.x+P.width-2,P.y,4,P.height)))ha="col-resize";for(V=P;null==ha&&null!=V&&(this.isTableCell(V.cell)||this.isTableRow(V.cell)||this.isTable(V.cell));)this.isSwimlane(V.cell)&&(R=this.getActualStartSize(V.cell),
+la=this.view.scale,(0<R.x||0<R.width)&&mxUtils.intersects(J,new mxRectangle(V.x+(R.x-R.width-1)*la+(0==R.x?V.width*la:0),V.y,1,V.height))?ha="col-resize":(0<R.y||0<R.height)&&mxUtils.intersects(J,new mxRectangle(V.x,V.y+(R.y-R.height-1)*la+(0==R.y?V.height:0),V.width,1))&&(ha="row-resize")),V=this.view.getState(this.model.getParent(V.cell))}null!=ha&&P.setCursor(ha)}}}),mouseUp:mxUtils.bind(this,function(J,V){g=E=d=f=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=
function(J){var V=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);J.view.graph.isHtmlLabel(J.cell)&&(V=1!=J.style.html?mxUtils.htmlEntities(V,!1):J.view.graph.sanitizeHtml(V));return V};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=
-!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(J,V){return!1};this.alternateEdgeStyle="vertical";null==n&&this.loadStylesheet();var q=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var J=q.apply(this,arguments);if(this.graph.pageVisible){var V=[],P=this.graph.pageFormat,R=this.graph.pageScale,ia=P.width*R;P=P.height*R;R=this.graph.view.translate;for(var la=this.graph.view.scale,
-ta=this.graph.getPageLayout(),u=0;u<ta.width;u++)V.push(new mxRectangle(((ta.x+u)*ia+R.x)*la,(ta.y*P+R.y)*la,ia*la,P*la));for(u=1;u<ta.height;u++)V.push(new mxRectangle((ta.x*ia+R.x)*la,((ta.y+u)*P+R.y)*la,ia*la,P*la));J=V.concat(J)}return J};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(J,V){return null==J.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(J){this.previewColor="#000000"==this.graph.background?
-"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var y=this.graphHandler.getCells;this.graphHandler.getCells=function(J){for(var V=y.apply(this,arguments),P=new mxDictionary,R=[],ia=0;ia<V.length;ia++){var la=this.graph.isTableCell(J)&&this.graph.isTableCell(V[ia])&&this.graph.isCellSelected(V[ia])?this.graph.model.getParent(V[ia]):this.graph.isTableRow(J)&&this.graph.isTableRow(V[ia])&&this.graph.isCellSelected(V[ia])?V[ia]:
-this.graph.getCompositeParent(V[ia]);null==la||P.get(la)||(P.put(la,!0),R.push(la))}return R};var F=this.graphHandler.start;this.graphHandler.start=function(J,V,P,R){var ia=!1;this.graph.isTableCell(J)&&(this.graph.isCellSelected(J)?ia=!0:J=this.graph.model.getParent(J));ia||this.graph.isTableRow(J)&&this.graph.isCellSelected(J)||(J=this.graph.getCompositeParent(J));F.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(J,V){V=this.graph.getCompositeParent(V);return mxConnectionHandler.prototype.createTargetVertex.apply(this,
+!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(J,V){return!1};this.alternateEdgeStyle="vertical";null==n&&this.loadStylesheet();var q=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var J=q.apply(this,arguments);if(this.graph.pageVisible){var V=[],P=this.graph.pageFormat,R=this.graph.pageScale,ha=P.width*R;P=P.height*R;R=this.graph.view.translate;for(var la=this.graph.view.scale,
+ta=this.graph.getPageLayout(),u=0;u<ta.width;u++)V.push(new mxRectangle(((ta.x+u)*ha+R.x)*la,(ta.y*P+R.y)*la,ha*la,P*la));for(u=1;u<ta.height;u++)V.push(new mxRectangle((ta.x*ha+R.x)*la,((ta.y+u)*P+R.y)*la,ha*la,P*la));J=V.concat(J)}return J};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(J,V){return null==J.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(J){this.previewColor="#000000"==this.graph.background?
+"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var y=this.graphHandler.getCells;this.graphHandler.getCells=function(J){for(var V=y.apply(this,arguments),P=new mxDictionary,R=[],ha=0;ha<V.length;ha++){var la=this.graph.isTableCell(J)&&this.graph.isTableCell(V[ha])&&this.graph.isCellSelected(V[ha])?this.graph.model.getParent(V[ha]):this.graph.isTableRow(J)&&this.graph.isTableRow(V[ha])&&this.graph.isCellSelected(V[ha])?V[ha]:
+this.graph.getCompositeParent(V[ha]);null==la||P.get(la)||(P.put(la,!0),R.push(la))}return R};var F=this.graphHandler.start;this.graphHandler.start=function(J,V,P,R){var ha=!1;this.graph.isTableCell(J)&&(this.graph.isCellSelected(J)?ha=!0:J=this.graph.model.getParent(J));ha||this.graph.isTableRow(J)&&this.graph.isCellSelected(J)||(J=this.graph.getCompositeParent(J));F.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(J,V){V=this.graph.getCompositeParent(V);return mxConnectionHandler.prototype.createTargetVertex.apply(this,
arguments)};var C=new mxRubberband(this);this.getRubberband=function(){return C};var H=(new Date).getTime(),G=0,aa=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var J=this.currentState;aa.apply(this,arguments);J!=this.currentState?(H=(new Date).getTime(),G=0):G=(new Date).getTime()-H};var da=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(J){return mxEvent.isShiftDown(J.getEvent())&&mxEvent.isAltDown(J.getEvent())?!1:
null!=this.currentState&&J.getState()==this.currentState&&2E3<G||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&da.apply(this,arguments)};var ba=this.isToggleEvent;this.isToggleEvent=function(J){return ba.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(J)};var Y=C.isForceRubberbandEvent;C.isForceRubberbandEvent=function(J){return Y.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(J.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&
mxClient.IS_FF&&mxClient.IS_WIN&&null==J.getState()&&mxEvent.isTouchEvent(J.getEvent())};var pa=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(pa=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=pa)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(J){return mxEvent.isMouseEvent(J.getEvent())};
@@ -2488,100 +2489,100 @@ return z};mxConnectionHandler.prototype.updatePreview=function(z){};var E=mxConn
function(){for(var z="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",L="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),M=0;M<L.length;M++)null!=this.currentEdgeStyle[L[M]]&&(z+=L[M]+"="+this.currentEdgeStyle[L[M]]+";");null!=this.currentEdgeStyle.orthogonalLoop?z+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
(z+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?z+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(z+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(z+="elbow="+this.currentEdgeStyle.elbow+";");return z=null!=this.currentEdgeStyle.html?z+("html="+this.currentEdgeStyle.html+";"):z+"html=1;"};
Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var z=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=z&&(new mxCodec(z.ownerDocument)).decode(z,this.getStylesheet())};Graph.prototype.createCellLookup=function(z,L){L=null!=L?L:{};for(var M=0;M<z.length;M++){var S=z[M];L[mxObjectIdentity.get(S)]=S.getId();for(var ca=this.model.getChildCount(S),
-ha=0;ha<ca;ha++)this.createCellLookup([this.model.getChildAt(S,ha)],L)}return L};Graph.prototype.createCellMapping=function(z,L,M){M=null!=M?M:{};for(var S in z){var ca=L[S];null==M[ca]&&(M[ca]=z[S].getId()||"")}return M};Graph.prototype.importGraphModel=function(z,L,M,S){L=null!=L?L:0;M=null!=M?M:0;var ca=new mxCodec(z.ownerDocument),ha=new mxGraphModel;ca.decode(z,ha);z=[];ca={};var oa={},ra=ha.getChildren(this.cloneCell(ha.root,this.isCloneInvalidEdges(),ca));if(null!=ra){var qa=this.createCellLookup([ha.root]);
-ra=ra.slice();this.model.beginUpdate();try{if(1!=ra.length||this.isCellLocked(this.getDefaultParent()))for(ha=0;ha<ra.length;ha++)xa=this.model.getChildren(this.moveCells([ra[ha]],L,M,!1,this.model.getRoot())[0]),null!=xa&&(z=z.concat(xa));else{var xa=ha.getChildren(ra[0]);null!=xa&&(z=this.moveCells(xa,L,M,!1,this.getDefaultParent()),oa[ha.getChildAt(ha.root,0).getId()]=this.getDefaultParent().getId())}if(null!=z&&(this.createCellMapping(ca,qa,oa),this.updateCustomLinks(oa,z),S)){this.isGridEnabled()&&
-(L=this.snap(L),M=this.snap(M));var Ga=this.getBoundingBoxFromGeometry(z,!0);null!=Ga&&this.moveCells(z,L-Ga.x,M-Ga.y)}}finally{this.model.endUpdate()}}return z};Graph.prototype.encodeCells=function(z){for(var L={},M=this.cloneCells(z,null,L),S=new mxDictionary,ca=0;ca<z.length;ca++)S.put(z[ca],!0);var ha=new mxCodec,oa=new mxGraphModel,ra=oa.getChildAt(oa.getRoot(),0);for(ca=0;ca<M.length;ca++){oa.add(ra,M[ca]);var qa=this.view.getState(z[ca]);if(null!=qa){var xa=this.getCellGeometry(M[ca]);null!=
-xa&&xa.relative&&!this.model.isEdge(z[ca])&&null==S.get(this.model.getParent(z[ca]))&&(xa.offset=null,xa.relative=!1,xa.x=qa.x/qa.view.scale-qa.view.translate.x,xa.y=qa.y/qa.view.scale-qa.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(L,this.createCellLookup(z)),M);return ha.encode(oa)};Graph.prototype.isSwimlane=function(z,L){var M=null;null==z||this.model.isEdge(z)||this.model.getParent(z)==this.model.getRoot()||(M=this.getCurrentCellStyle(z,L)[mxConstants.STYLE_SHAPE]);return M==
-mxConstants.SHAPE_SWIMLANE||"table"==M||"tableRow"==M};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(z){var L=this.model.getParent(z);if(null!=L){var M=this.getCurrentCellStyle(L);if(null!=M.expand)return"0"!=M.expand}return d.apply(this,arguments)&&(null==L||!this.isTable(L))};var f=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(z,L,M,S,ca,ha,oa,ra){null==ra&&(ra=this.model.getParent(z),this.isTable(ra)||this.isTableRow(ra))&&(ra=this.getCellAt(ha,oa,
-null,!0,!1));M=null;this.model.beginUpdate();try{M=f.apply(this,[z,L,M,S,ca,ha,oa,ra]);this.model.setValue(M,"");var qa=this.getChildCells(M,!0);for(L=0;L<qa.length;L++){var xa=this.getCellGeometry(qa[L]);null!=xa&&xa.relative&&0<xa.x&&this.model.remove(qa[L])}var Ga=this.getChildCells(z,!0);for(L=0;L<Ga.length;L++)xa=this.getCellGeometry(Ga[L]),null!=xa&&xa.relative&&0>=xa.x&&this.model.remove(Ga[L]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[M]);this.setCellStyles(mxConstants.STYLE_ENDARROW,
+ia=0;ia<ca;ia++)this.createCellLookup([this.model.getChildAt(S,ia)],L)}return L};Graph.prototype.createCellMapping=function(z,L,M){M=null!=M?M:{};for(var S in z){var ca=L[S];null==M[ca]&&(M[ca]=z[S].getId()||"")}return M};Graph.prototype.importGraphModel=function(z,L,M,S){L=null!=L?L:0;M=null!=M?M:0;var ca=new mxCodec(z.ownerDocument),ia=new mxGraphModel;ca.decode(z,ia);z=[];ca={};var oa={},ra=ia.getChildren(this.cloneCell(ia.root,this.isCloneInvalidEdges(),ca));if(null!=ra){var qa=this.createCellLookup([ia.root]);
+ra=ra.slice();this.model.beginUpdate();try{if(1!=ra.length||this.isCellLocked(this.getDefaultParent()))for(ia=0;ia<ra.length;ia++)xa=this.model.getChildren(this.moveCells([ra[ia]],L,M,!1,this.model.getRoot())[0]),null!=xa&&(z=z.concat(xa));else{var xa=ia.getChildren(ra[0]);null!=xa&&(z=this.moveCells(xa,L,M,!1,this.getDefaultParent()),oa[ia.getChildAt(ia.root,0).getId()]=this.getDefaultParent().getId())}if(null!=z&&(this.createCellMapping(ca,qa,oa),this.updateCustomLinks(oa,z),S)){this.isGridEnabled()&&
+(L=this.snap(L),M=this.snap(M));var Ga=this.getBoundingBoxFromGeometry(z,!0);null!=Ga&&this.moveCells(z,L-Ga.x,M-Ga.y)}}finally{this.model.endUpdate()}}return z};Graph.prototype.encodeCells=function(z){for(var L={},M=this.cloneCells(z,null,L),S=new mxDictionary,ca=0;ca<z.length;ca++)S.put(z[ca],!0);var ia=new mxCodec,oa=new mxGraphModel,ra=oa.getChildAt(oa.getRoot(),0);for(ca=0;ca<M.length;ca++){oa.add(ra,M[ca]);var qa=this.view.getState(z[ca]);if(null!=qa){var xa=this.getCellGeometry(M[ca]);null!=
+xa&&xa.relative&&!this.model.isEdge(z[ca])&&null==S.get(this.model.getParent(z[ca]))&&(xa.offset=null,xa.relative=!1,xa.x=qa.x/qa.view.scale-qa.view.translate.x,xa.y=qa.y/qa.view.scale-qa.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(L,this.createCellLookup(z)),M);return ia.encode(oa)};Graph.prototype.isSwimlane=function(z,L){var M=null;null==z||this.model.isEdge(z)||this.model.getParent(z)==this.model.getRoot()||(M=this.getCurrentCellStyle(z,L)[mxConstants.STYLE_SHAPE]);return M==
+mxConstants.SHAPE_SWIMLANE||"table"==M||"tableRow"==M};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(z){var L=this.model.getParent(z);if(null!=L){var M=this.getCurrentCellStyle(L);if(null!=M.expand)return"0"!=M.expand}return d.apply(this,arguments)&&(null==L||!this.isTable(L))};var f=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(z,L,M,S,ca,ia,oa,ra){null==ra&&(ra=this.model.getParent(z),this.isTable(ra)||this.isTableRow(ra))&&(ra=this.getCellAt(ia,oa,
+null,!0,!1));M=null;this.model.beginUpdate();try{M=f.apply(this,[z,L,M,S,ca,ia,oa,ra]);this.model.setValue(M,"");var qa=this.getChildCells(M,!0);for(L=0;L<qa.length;L++){var xa=this.getCellGeometry(qa[L]);null!=xa&&xa.relative&&0<xa.x&&this.model.remove(qa[L])}var Ga=this.getChildCells(z,!0);for(L=0;L<Ga.length;L++)xa=this.getCellGeometry(Ga[L]),null!=xa&&xa.relative&&0>=xa.x&&this.model.remove(Ga[L]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[M]);this.setCellStyles(mxConstants.STYLE_ENDARROW,
mxConstants.NONE,[M]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,null,[z]);this.setCellStyles(mxConstants.STYLE_STARTARROW,mxConstants.NONE,[z]);var La=this.model.getTerminal(M,!1);if(null!=La){var Pa=this.getCurrentCellStyle(La);null!=Pa&&"1"==Pa.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[z]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[z]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[M]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[M]))}}finally{this.model.endUpdate()}return M};
-var g=Graph.prototype.selectCell;Graph.prototype.selectCell=function(z,L,M){if(L||M)g.apply(this,arguments);else{var S=this.getSelectionCell(),ca=null,ha=[],oa=mxUtils.bind(this,function(ra){if(null!=this.view.getState(ra)&&(this.model.isVertex(ra)||this.model.isEdge(ra)))if(ha.push(ra),ra==S)ca=ha.length-1;else if(z&&null==S&&0<ha.length||null!=ca&&z&&ha.length>ca||!z&&0<ca)return;for(var qa=0;qa<this.model.getChildCount(ra);qa++)oa(this.model.getChildAt(ra,qa))});oa(this.model.root);0<ha.length&&
-(ca=null!=ca?mxUtils.mod(ca+(z?1:-1),ha.length):0,this.setSelectionCell(ha[ca]))}};Graph.prototype.swapShapes=function(z,L,M,S,ca,ha,oa){L=!1;if(!S&&null!=ca&&1==z.length&&(S=this.view.getState(ca),M=this.view.getState(z[0]),null!=S&&null!=M&&(null!=ha&&mxEvent.isShiftDown(ha)||"umlLifeline"==S.style.shape&&"umlLifeline"==M.style.shape)&&(S=this.getCellGeometry(ca),ha=this.getCellGeometry(z[0]),null!=S&&null!=ha))){L=S.clone();S=ha.clone();S.x=L.x;S.y=L.y;L.x=ha.x;L.y=ha.y;this.model.beginUpdate();
-try{this.model.setGeometry(ca,L),this.model.setGeometry(z[0],S)}finally{this.model.endUpdate()}L=!0}return L};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,L,M,S,ca,ha,oa){if(this.swapShapes(z,L,M,S,ca,ha,oa))return z;oa=null!=oa?oa:{};if(this.isTable(ca)){for(var ra=[],qa=0;qa<z.length;qa++)this.isTable(z[qa])?ra=ra.concat(this.model.getChildCells(z[qa],!0).reverse()):ra.push(z[qa]);z=ra}this.model.beginUpdate();try{ra=[];for(qa=0;qa<z.length;qa++)if(null!=ca&&this.isTableRow(z[qa])){var xa=
+var g=Graph.prototype.selectCell;Graph.prototype.selectCell=function(z,L,M){if(L||M)g.apply(this,arguments);else{var S=this.getSelectionCell(),ca=null,ia=[],oa=mxUtils.bind(this,function(ra){if(null!=this.view.getState(ra)&&(this.model.isVertex(ra)||this.model.isEdge(ra)))if(ia.push(ra),ra==S)ca=ia.length-1;else if(z&&null==S&&0<ia.length||null!=ca&&z&&ia.length>ca||!z&&0<ca)return;for(var qa=0;qa<this.model.getChildCount(ra);qa++)oa(this.model.getChildAt(ra,qa))});oa(this.model.root);0<ia.length&&
+(ca=null!=ca?mxUtils.mod(ca+(z?1:-1),ia.length):0,this.setSelectionCell(ia[ca]))}};Graph.prototype.swapShapes=function(z,L,M,S,ca,ia,oa){L=!1;if(!S&&null!=ca&&1==z.length&&(S=this.view.getState(ca),M=this.view.getState(z[0]),null!=S&&null!=M&&(null!=ia&&mxEvent.isShiftDown(ia)||"umlLifeline"==S.style.shape&&"umlLifeline"==M.style.shape)&&(S=this.getCellGeometry(ca),ia=this.getCellGeometry(z[0]),null!=S&&null!=ia))){L=S.clone();S=ia.clone();S.x=L.x;S.y=L.y;L.x=ia.x;L.y=ia.y;this.model.beginUpdate();
+try{this.model.setGeometry(ca,L),this.model.setGeometry(z[0],S)}finally{this.model.endUpdate()}L=!0}return L};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,L,M,S,ca,ia,oa){if(this.swapShapes(z,L,M,S,ca,ia,oa))return z;oa=null!=oa?oa:{};if(this.isTable(ca)){for(var ra=[],qa=0;qa<z.length;qa++)this.isTable(z[qa])?ra=ra.concat(this.model.getChildCells(z[qa],!0).reverse()):ra.push(z[qa]);z=ra}this.model.beginUpdate();try{ra=[];for(qa=0;qa<z.length;qa++)if(null!=ca&&this.isTableRow(z[qa])){var xa=
this.model.getParent(z[qa]),Ga=this.getCellGeometry(z[qa]);this.isTable(xa)&&ra.push(xa);if(null!=xa&&null!=Ga&&this.isTable(xa)&&this.isTable(ca)&&(S||xa!=ca)){if(!S){var La=this.getCellGeometry(xa);null!=La&&(La=La.clone(),La.height-=Ga.height,this.model.setGeometry(xa,La))}La=this.getCellGeometry(ca);null!=La&&(La=La.clone(),La.height+=Ga.height,this.model.setGeometry(ca,La));var Pa=this.model.getChildCells(ca,!0);if(0<Pa.length){z[qa]=S?this.cloneCell(z[qa]):z[qa];var Oa=this.model.getChildCells(z[qa],
!0),Ta=this.model.getChildCells(Pa[0],!0),Ma=Ta.length-Oa.length;if(0<Ma)for(var ua=0;ua<Ma;ua++){var ya=this.cloneCell(Oa[Oa.length-1]);null!=ya&&(ya.value="",this.model.add(z[qa],ya))}else if(0>Ma)for(ua=0;ua>Ma;ua--)this.model.remove(Oa[Oa.length+ua-1]);Oa=this.model.getChildCells(z[qa],!0);for(ua=0;ua<Ta.length;ua++){var Na=this.getCellGeometry(Ta[ua]),Fa=this.getCellGeometry(Oa[ua]);null!=Na&&null!=Fa&&(Fa=Fa.clone(),Fa.width=Na.width,this.model.setGeometry(Oa[ua],Fa))}}}}var Ra=m.apply(this,
-arguments);for(qa=0;qa<ra.length;qa++)!S&&this.model.contains(ra[qa])&&0==this.model.getChildCount(ra[qa])&&this.model.remove(ra[qa]);S&&this.updateCustomLinks(this.createCellMapping(oa,this.createCellLookup(z)),Ra)}finally{this.model.endUpdate()}return Ra};var q=Graph.prototype.removeCells;Graph.prototype.removeCells=function(z,L){var M=[];this.model.beginUpdate();try{for(var S=0;S<z.length;S++)if(this.isTableCell(z[S])){var ca=this.model.getParent(z[S]),ha=this.model.getParent(ca);1==this.model.getChildCount(ca)&&
-1==this.model.getChildCount(ha)?0>mxUtils.indexOf(z,ha)&&0>mxUtils.indexOf(M,ha)&&M.push(ha):this.labelChanged(z[S],"")}else{if(this.isTableRow(z[S])&&(ha=this.model.getParent(z[S]),0>mxUtils.indexOf(z,ha)&&0>mxUtils.indexOf(M,ha))){for(var oa=this.model.getChildCells(ha,!0),ra=0,qa=0;qa<oa.length;qa++)0<=mxUtils.indexOf(z,oa[qa])&&ra++;ra==oa.length&&M.push(ha)}M.push(z[S])}M=q.apply(this,[M,L])}finally{this.model.endUpdate()}return M};Graph.prototype.updateCustomLinks=function(z,L,M){M=null!=M?
+arguments);for(qa=0;qa<ra.length;qa++)!S&&this.model.contains(ra[qa])&&0==this.model.getChildCount(ra[qa])&&this.model.remove(ra[qa]);S&&this.updateCustomLinks(this.createCellMapping(oa,this.createCellLookup(z)),Ra)}finally{this.model.endUpdate()}return Ra};var q=Graph.prototype.removeCells;Graph.prototype.removeCells=function(z,L){var M=[];this.model.beginUpdate();try{for(var S=0;S<z.length;S++)if(this.isTableCell(z[S])){var ca=this.model.getParent(z[S]),ia=this.model.getParent(ca);1==this.model.getChildCount(ca)&&
+1==this.model.getChildCount(ia)?0>mxUtils.indexOf(z,ia)&&0>mxUtils.indexOf(M,ia)&&M.push(ia):this.labelChanged(z[S],"")}else{if(this.isTableRow(z[S])&&(ia=this.model.getParent(z[S]),0>mxUtils.indexOf(z,ia)&&0>mxUtils.indexOf(M,ia))){for(var oa=this.model.getChildCells(ia,!0),ra=0,qa=0;qa<oa.length;qa++)0<=mxUtils.indexOf(z,oa[qa])&&ra++;ra==oa.length&&M.push(ia)}M.push(z[S])}M=q.apply(this,[M,L])}finally{this.model.endUpdate()}return M};Graph.prototype.updateCustomLinks=function(z,L,M){M=null!=M?
M:new Graph;for(var S=0;S<L.length;S++)null!=L[S]&&M.updateCustomLinksForCell(z,L[S],M)};Graph.prototype.updateCustomLinksForCell=function(z,L){this.doUpdateCustomLinksForCell(z,L);for(var M=this.model.getChildCount(L),S=0;S<M;S++)this.updateCustomLinksForCell(z,this.model.getChildAt(L,S))};Graph.prototype.doUpdateCustomLinksForCell=function(z,L){};Graph.prototype.getAllConnectionConstraints=function(z,L){if(null!=z){L=mxUtils.getValue(z.style,"points",null);if(null!=L){z=[];try{var M=JSON.parse(L);
-for(L=0;L<M.length;L++){var S=M[L];z.push(new mxConnectionConstraint(new mxPoint(S[0],S[1]),2<S.length?"0"!=S[2]:!0,null,3<S.length?S[3]:0,4<S.length?S[4]:0))}}catch(ha){}return z}if(null!=z.shape&&null!=z.shape.bounds){S=z.shape.direction;L=z.shape.bounds;var ca=z.shape.scale;M=L.width/ca;L=L.height/ca;if(S==mxConstants.DIRECTION_NORTH||S==mxConstants.DIRECTION_SOUTH)S=M,M=L,L=S;L=z.shape.getConstraints(z.style,M,L);if(null!=L)return L;if(null!=z.shape.stencil&&null!=z.shape.stencil.constraints)return z.shape.stencil.constraints;
+for(L=0;L<M.length;L++){var S=M[L];z.push(new mxConnectionConstraint(new mxPoint(S[0],S[1]),2<S.length?"0"!=S[2]:!0,null,3<S.length?S[3]:0,4<S.length?S[4]:0))}}catch(ia){}return z}if(null!=z.shape&&null!=z.shape.bounds){S=z.shape.direction;L=z.shape.bounds;var ca=z.shape.scale;M=L.width/ca;L=L.height/ca;if(S==mxConstants.DIRECTION_NORTH||S==mxConstants.DIRECTION_SOUTH)S=M,M=L,L=S;L=z.shape.getConstraints(z.style,M,L);if(null!=L)return L;if(null!=z.shape.stencil&&null!=z.shape.stencil.constraints)return z.shape.stencil.constraints;
if(null!=z.shape.constraints)return z.shape.constraints}}return null};Graph.prototype.flipEdge=function(z){if(null!=z){var L=this.getCurrentCellStyle(z);L=mxUtils.getValue(L,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,L,[z])}};Graph.prototype.isValidRoot=function(z){for(var L=this.model.getChildCount(z),M=0,S=0;S<L;S++){var ca=this.model.getChildAt(z,S);this.model.isVertex(ca)&&
-(ca=this.getCellGeometry(ca),null==ca||ca.relative||M++)}return 0<M||this.isContainer(z)};Graph.prototype.isValidDropTarget=function(z,L,M){for(var S=this.getCurrentCellStyle(z),ca=!0,ha=!0,oa=0;oa<L.length&&ha;oa++)ca=ca&&this.isTable(L[oa]),ha=ha&&this.isTableRow(L[oa]);return(1==L.length&&null!=M&&mxEvent.isShiftDown(M)&&!mxEvent.isControlDown(M)&&!mxEvent.isAltDown(M)||("1"!=mxUtils.getValue(S,"part","0")||this.isContainer(z))&&"0"!=mxUtils.getValue(S,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,
-arguments)||this.isContainer(z))&&!this.isTableRow(z)&&(!this.isTable(z)||ha||ca))&&!this.isCellLocked(z)};Graph.prototype.createGroupCell=function(){var z=mxGraph.prototype.createGroupCell.apply(this,arguments);z.setStyle("group");return z};Graph.prototype.isExtendParentsOnAdd=function(z){var L=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(L&&null!=z&&null!=this.layoutManager){var M=this.model.getParent(z);null!=M&&(M=this.layoutManager.getLayout(M),null!=M&&M.constructor==mxStackLayout&&
-(L=!1))}return L};Graph.prototype.getPreferredSizeForCell=function(z){var L=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=L&&(L.width+=10,L.height+=4,this.gridEnabled&&(L.width=this.snap(L.width),L.height=this.snap(L.height)));return L};Graph.prototype.turnShapes=function(z,L){var M=this.getModel(),S=[];M.beginUpdate();try{for(var ca=0;ca<z.length;ca++){var ha=z[ca];if(M.isEdge(ha)){var oa=M.getTerminal(ha,!0),ra=M.getTerminal(ha,!1);M.setTerminal(ha,ra,!0);M.setTerminal(ha,
-oa,!1);var qa=M.getGeometry(ha);if(null!=qa){qa=qa.clone();null!=qa.points&&qa.points.reverse();var xa=qa.getTerminalPoint(!0),Ga=qa.getTerminalPoint(!1);qa.setTerminalPoint(xa,!1);qa.setTerminalPoint(Ga,!0);M.setGeometry(ha,qa);var La=this.view.getState(ha),Pa=this.view.getState(oa),Oa=this.view.getState(ra);if(null!=La){var Ta=null!=Pa?this.getConnectionConstraint(La,Pa,!0):null,Ma=null!=Oa?this.getConnectionConstraint(La,Oa,!1):null;this.setConnectionConstraint(ha,oa,!0,Ma);this.setConnectionConstraint(ha,
-ra,!1,Ta);var ua=mxUtils.getValue(La.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(La.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[ha]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,ua,[ha])}S.push(ha)}}else if(M.isVertex(ha)&&(qa=this.getCellGeometry(ha),null!=qa)){if(!(this.isTable(ha)||this.isTableRow(ha)||this.isTableCell(ha)||this.isSwimlane(ha))){qa=qa.clone();qa.x+=qa.width/2-qa.height/
-2;qa.y+=qa.height/2-qa.width/2;var ya=qa.width;qa.width=qa.height;qa.height=ya;M.setGeometry(ha,qa)}var Na=this.view.getState(ha);if(null!=Na){var Fa=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Ra=mxUtils.getValue(Na.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Fa[mxUtils.mod(mxUtils.indexOf(Fa,Ra)+(L?-1:1),Fa.length)],[ha])}S.push(ha)}}}finally{M.endUpdate()}return S};
+(ca=this.getCellGeometry(ca),null==ca||ca.relative||M++)}return 0<M||this.isContainer(z)};Graph.prototype.isValidDropTarget=function(z,L,M){for(var S=this.getCurrentCellStyle(z),ca=!0,ia=!0,oa=0;oa<L.length&&ia;oa++)ca=ca&&this.isTable(L[oa]),ia=ia&&this.isTableRow(L[oa]);return(1==L.length&&null!=M&&mxEvent.isShiftDown(M)&&!mxEvent.isControlDown(M)&&!mxEvent.isAltDown(M)||("1"!=mxUtils.getValue(S,"part","0")||this.isContainer(z))&&"0"!=mxUtils.getValue(S,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,
+arguments)||this.isContainer(z))&&!this.isTableRow(z)&&(!this.isTable(z)||ia||ca))&&!this.isCellLocked(z)};Graph.prototype.createGroupCell=function(){var z=mxGraph.prototype.createGroupCell.apply(this,arguments);z.setStyle("group");return z};Graph.prototype.isExtendParentsOnAdd=function(z){var L=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(L&&null!=z&&null!=this.layoutManager){var M=this.model.getParent(z);null!=M&&(M=this.layoutManager.getLayout(M),null!=M&&M.constructor==mxStackLayout&&
+(L=!1))}return L};Graph.prototype.getPreferredSizeForCell=function(z){var L=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=L&&(L.width+=10,L.height+=4,this.gridEnabled&&(L.width=this.snap(L.width),L.height=this.snap(L.height)));return L};Graph.prototype.turnShapes=function(z,L){var M=this.getModel(),S=[];M.beginUpdate();try{for(var ca=0;ca<z.length;ca++){var ia=z[ca];if(M.isEdge(ia)){var oa=M.getTerminal(ia,!0),ra=M.getTerminal(ia,!1);M.setTerminal(ia,ra,!0);M.setTerminal(ia,
+oa,!1);var qa=M.getGeometry(ia);if(null!=qa){qa=qa.clone();null!=qa.points&&qa.points.reverse();var xa=qa.getTerminalPoint(!0),Ga=qa.getTerminalPoint(!1);qa.setTerminalPoint(xa,!1);qa.setTerminalPoint(Ga,!0);M.setGeometry(ia,qa);var La=this.view.getState(ia),Pa=this.view.getState(oa),Oa=this.view.getState(ra);if(null!=La){var Ta=null!=Pa?this.getConnectionConstraint(La,Pa,!0):null,Ma=null!=Oa?this.getConnectionConstraint(La,Oa,!1):null;this.setConnectionConstraint(ia,oa,!0,Ma);this.setConnectionConstraint(ia,
+ra,!1,Ta);var ua=mxUtils.getValue(La.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(La.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[ia]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,ua,[ia])}S.push(ia)}}else if(M.isVertex(ia)&&(qa=this.getCellGeometry(ia),null!=qa)){if(!(this.isTable(ia)||this.isTableRow(ia)||this.isTableCell(ia)||this.isSwimlane(ia))){qa=qa.clone();qa.x+=qa.width/2-qa.height/
+2;qa.y+=qa.height/2-qa.width/2;var ya=qa.width;qa.width=qa.height;qa.height=ya;M.setGeometry(ia,qa)}var Na=this.view.getState(ia);if(null!=Na){var Fa=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Ra=mxUtils.getValue(Na.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Fa[mxUtils.mod(mxUtils.indexOf(Fa,Ra)+(L?-1:1),Fa.length)],[ia])}S.push(ia)}}}finally{M.endUpdate()}return S};
Graph.prototype.stencilHasPlaceholders=function(z){if(null!=z&&null!=z.fgNode)for(z=z.fgNode.firstChild;null!=z;){if("text"==z.nodeName&&"1"==z.getAttribute("placeholders"))return!0;z=z.nextSibling}return!1};var y=Graph.prototype.processChange;Graph.prototype.processChange=function(z){if(z instanceof mxGeometryChange&&(this.isTableCell(z.cell)||this.isTableRow(z.cell))&&(null==z.previous&&null!=z.geometry||null!=z.previous&&!z.previous.equals(z.geometry))){var L=z.cell;this.isTableCell(L)&&(L=this.model.getParent(L));
this.isTableRow(L)&&(L=this.model.getParent(L));var M=this.view.getState(L);null!=M&&null!=M.shape&&(this.view.invalidate(L),M.shape.bounds=null)}y.apply(this,arguments);z instanceof mxValueChange&&null!=z.cell&&null!=z.cell.value&&"object"==typeof z.cell.value&&this.invalidateDescendantsWithPlaceholders(z.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(z){z=this.model.getDescendants(z);if(0<z.length)for(var L=0;L<z.length;L++){var M=this.view.getState(z[L]);null!=M&&null!=M.shape&&
null!=M.shape.stencil&&this.stencilHasPlaceholders(M.shape.stencil)?this.removeStateForCell(z[L]):this.isReplacePlaceholders(z[L])&&this.view.invalidate(z[L],!1,!1)}};Graph.prototype.replaceElement=function(z,L){L=z.ownerDocument.createElement(null!=L?L:"span");for(var M=Array.prototype.slice.call(z.attributes);attr=M.pop();)L.setAttribute(attr.nodeName,attr.nodeValue);L.innerHTML=z.innerHTML;z.parentNode.replaceChild(L,z)};Graph.prototype.processElements=function(z,L){if(null!=z){z=z.getElementsByTagName("*");
-for(var M=0;M<z.length;M++)L(z[M])}};Graph.prototype.updateLabelElements=function(z,L,M){z=null!=z?z:this.getSelectionCells();for(var S=document.createElement("div"),ca=0;ca<z.length;ca++)if(this.isHtmlLabel(z[ca])){var ha=this.convertValueToString(z[ca]);if(null!=ha&&0<ha.length){S.innerHTML=ha;for(var oa=S.getElementsByTagName(null!=M?M:"*"),ra=0;ra<oa.length;ra++)L(oa[ra]);S.innerHTML!=ha&&this.cellLabelChanged(z[ca],S.innerHTML)}}};Graph.prototype.cellLabelChanged=function(z,L,M){L=Graph.zapGremlins(L);
-this.model.beginUpdate();try{if(null!=z.value&&"object"==typeof z.value){if(this.isReplacePlaceholders(z)&&null!=z.getAttribute("placeholder"))for(var S=z.getAttribute("placeholder"),ca=z;null!=ca;){if(ca==this.model.getRoot()||null!=ca.value&&"object"==typeof ca.value&&ca.hasAttribute(S)){this.setAttributeForCell(ca,S,L);break}ca=this.model.getParent(ca)}var ha=z.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&ha.hasAttribute("label_"+Graph.diagramLanguage)?ha.setAttribute("label_"+
-Graph.diagramLanguage,L):ha.setAttribute("label",L);L=ha}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(z){if(null!=z){for(var L=new mxDictionary,M=0;M<z.length;M++)L.put(z[M],!0);var S=[];for(M=0;M<z.length;M++){var ca=this.model.getParent(z[M]);null==ca||L.get(ca)||(L.put(ca,!0),S.push(ca))}for(M=0;M<S.length;M++)if(ca=this.view.getState(S[M]),null!=ca&&(this.model.isEdge(ca.cell)||this.model.isVertex(ca.cell))&&this.isCellDeletable(ca.cell)&&
-this.isTransparentState(ca)){for(var ha=!0,oa=0;oa<this.model.getChildCount(ca.cell)&&ha;oa++)L.get(this.model.getChildAt(ca.cell,oa))||(ha=!1);ha&&z.push(ca.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(z){for(var L=[],M=0;M<z.length;M++)this.isCellDeletable(z[M])&&this.isTransparentState(this.view.getState(z[M]))&&L.push(z[M]);z=L;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(z,
+for(var M=0;M<z.length;M++)L(z[M])}};Graph.prototype.updateLabelElements=function(z,L,M){z=null!=z?z:this.getSelectionCells();for(var S=document.createElement("div"),ca=0;ca<z.length;ca++)if(this.isHtmlLabel(z[ca])){var ia=this.convertValueToString(z[ca]);if(null!=ia&&0<ia.length){S.innerHTML=ia;for(var oa=S.getElementsByTagName(null!=M?M:"*"),ra=0;ra<oa.length;ra++)L(oa[ra]);S.innerHTML!=ia&&this.cellLabelChanged(z[ca],S.innerHTML)}}};Graph.prototype.cellLabelChanged=function(z,L,M){L=Graph.zapGremlins(L);
+this.model.beginUpdate();try{if(null!=z.value&&"object"==typeof z.value){if(this.isReplacePlaceholders(z)&&null!=z.getAttribute("placeholder"))for(var S=z.getAttribute("placeholder"),ca=z;null!=ca;){if(ca==this.model.getRoot()||null!=ca.value&&"object"==typeof ca.value&&ca.hasAttribute(S)){this.setAttributeForCell(ca,S,L);break}ca=this.model.getParent(ca)}var ia=z.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&ia.hasAttribute("label_"+Graph.diagramLanguage)?ia.setAttribute("label_"+
+Graph.diagramLanguage,L):ia.setAttribute("label",L);L=ia}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(z){if(null!=z){for(var L=new mxDictionary,M=0;M<z.length;M++)L.put(z[M],!0);var S=[];for(M=0;M<z.length;M++){var ca=this.model.getParent(z[M]);null==ca||L.get(ca)||(L.put(ca,!0),S.push(ca))}for(M=0;M<S.length;M++)if(ca=this.view.getState(S[M]),null!=ca&&(this.model.isEdge(ca.cell)||this.model.isVertex(ca.cell))&&this.isCellDeletable(ca.cell)&&
+this.isTransparentState(ca)){for(var ia=!0,oa=0;oa<this.model.getChildCount(ca.cell)&&ia;oa++)L.get(this.model.getChildAt(ca.cell,oa))||(ia=!1);ia&&z.push(ca.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(z){for(var L=[],M=0;M<z.length;M++)this.isCellDeletable(z[M])&&this.isTransparentState(this.view.getState(z[M]))&&L.push(z[M]);z=L;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(z,
L){this.setAttributeForCell(z,"link",L)};Graph.prototype.setTooltipForCell=function(z,L){var M="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(z.value)&&z.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(M="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(z,M,L)};Graph.prototype.getAttributeForCell=function(z,L,M){z=null!=z.value&&"object"===typeof z.value?z.value.getAttribute(L):null;return null!=z?z:M};Graph.prototype.setAttributeForCell=function(z,L,
-M){if(null!=z.value&&"object"==typeof z.value)var S=z.value.cloneNode(!0);else S=mxUtils.createXmlDocument().createElement("UserObject"),S.setAttribute("label",z.value||"");null!=M?S.setAttribute(L,M):S.removeAttribute(L);this.model.setValue(z,S)};var F=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(z,L,M,S){this.getModel();if(mxEvent.isAltDown(L))return null;for(var ca=0;ca<z.length;ca++){var ha=this.model.getParent(z[ca]);if(this.model.isEdge(ha)&&0>mxUtils.indexOf(z,ha))return null}ha=
-F.apply(this,arguments);var oa=!0;for(ca=0;ca<z.length&&oa;ca++)oa=oa&&this.isTableRow(z[ca]);oa&&(this.isTableCell(ha)&&(ha=this.model.getParent(ha)),this.isTableRow(ha)&&(ha=this.model.getParent(ha)),this.isTable(ha)||(ha=null));return ha};Graph.prototype.click=function(z){mxGraph.prototype.click.call(this,z);this.firstClickState=z.getState();this.firstClickSource=z.getSource()};Graph.prototype.dblClick=function(z,L){this.isEnabled()&&(L=this.insertTextForEvent(z,L),mxGraph.prototype.dblClick.call(this,
+M){if(null!=z.value&&"object"==typeof z.value)var S=z.value.cloneNode(!0);else S=mxUtils.createXmlDocument().createElement("UserObject"),S.setAttribute("label",z.value||"");null!=M?S.setAttribute(L,M):S.removeAttribute(L);this.model.setValue(z,S)};var F=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(z,L,M,S){this.getModel();if(mxEvent.isAltDown(L))return null;for(var ca=0;ca<z.length;ca++){var ia=this.model.getParent(z[ca]);if(this.model.isEdge(ia)&&0>mxUtils.indexOf(z,ia))return null}ia=
+F.apply(this,arguments);var oa=!0;for(ca=0;ca<z.length&&oa;ca++)oa=oa&&this.isTableRow(z[ca]);oa&&(this.isTableCell(ia)&&(ia=this.model.getParent(ia)),this.isTableRow(ia)&&(ia=this.model.getParent(ia)),this.isTable(ia)||(ia=null));return ia};Graph.prototype.click=function(z){mxGraph.prototype.click.call(this,z);this.firstClickState=z.getState();this.firstClickSource=z.getSource()};Graph.prototype.dblClick=function(z,L){this.isEnabled()&&(L=this.insertTextForEvent(z,L),mxGraph.prototype.dblClick.call(this,
z,L))};Graph.prototype.insertTextForEvent=function(z,L){var M=mxUtils.convertPoint(this.container,mxEvent.getClientX(z),mxEvent.getClientY(z));if(null!=z&&!this.model.isVertex(L)){var S=this.model.isEdge(L)?this.view.getState(L):null,ca=mxEvent.getSource(z);this.firstClickState!=S||this.firstClickSource!=ca||null!=S&&null!=S.text&&null!=S.text.node&&null!=S.text.boundingBox&&(mxUtils.contains(S.text.boundingBox,M.x,M.y)||mxUtils.isAncestorNode(S.text.node,mxEvent.getSource(z)))||(null!=S||this.isCellLocked(this.getDefaultParent()))&&
(null==S||this.isCellLocked(S.cell))||!(null!=S||mxClient.IS_SVG&&ca==this.view.getCanvas().ownerSVGElement)||(null==S&&(S=this.view.getState(this.getCellAt(M.x,M.y))),L=this.addText(M.x,M.y,S))}return L};Graph.prototype.getInsertPoint=function(){var z=this.getGridSize(),L=this.container.scrollLeft/this.view.scale-this.view.translate.x,M=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible){var S=this.getPageLayout(),ca=this.getPageSize();L=Math.max(L,S.x*ca.width);M=
Math.max(M,S.y*ca.height)}return new mxPoint(this.snap(L+z),this.snap(M+z))};Graph.prototype.getFreeInsertPoint=function(){var z=this.view,L=this.getGraphBounds(),M=this.getInsertPoint(),S=this.snap(Math.round(Math.max(M.x,L.x/z.scale-z.translate.x+(0==L.width?2*this.gridSize:0))));z=this.snap(Math.round(Math.max(M.y,(L.y+L.height)/z.scale-z.translate.y+2*this.gridSize)));return new mxPoint(S,z)};Graph.prototype.getCenterInsertPoint=function(z){z=null!=z?z:new mxRectangle;return mxUtils.hasScrollbars(this.container)?
new mxPoint(this.snap(Math.round((this.container.scrollLeft+this.container.clientWidth/2)/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/2)/this.view.scale-this.view.translate.y-z.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-z.height/2)))};Graph.prototype.isMouseInsertPoint=
-function(){return!1};Graph.prototype.addText=function(z,L,M){var S=new mxCell;S.value="Text";S.geometry=new mxGeometry(0,0,0,0);S.vertex=!0;if(null!=M&&this.model.isEdge(M.cell)){S.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";S.geometry.relative=!0;S.connectable=!1;var ca=this.view.getRelativePoint(M,z,L);S.geometry.x=Math.round(1E4*ca.x)/1E4;S.geometry.y=Math.round(ca.y);S.geometry.offset=new mxPoint(0,0);ca=this.view.getPoint(M,S.geometry);var ha=this.view.scale;
-S.geometry.offset=new mxPoint(Math.round((z-ca.x)/ha),Math.round((L-ca.y)/ha))}else ca=this.view.translate,S.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",S.geometry.width=40,S.geometry.height=20,S.geometry.x=Math.round(z/this.view.scale)-ca.x-(null!=M?M.origin.x:0),S.geometry.y=Math.round(L/this.view.scale)-ca.y-(null!=M?M.origin.y:0),S.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([S],null!=M?M.cell:null),this.fireEvent(new mxEventObject("textInserted",
+function(){return!1};Graph.prototype.addText=function(z,L,M){var S=new mxCell;S.value="Text";S.geometry=new mxGeometry(0,0,0,0);S.vertex=!0;if(null!=M&&this.model.isEdge(M.cell)){S.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";S.geometry.relative=!0;S.connectable=!1;var ca=this.view.getRelativePoint(M,z,L);S.geometry.x=Math.round(1E4*ca.x)/1E4;S.geometry.y=Math.round(ca.y);S.geometry.offset=new mxPoint(0,0);ca=this.view.getPoint(M,S.geometry);var ia=this.view.scale;
+S.geometry.offset=new mxPoint(Math.round((z-ca.x)/ia),Math.round((L-ca.y)/ia))}else ca=this.view.translate,S.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",S.geometry.width=40,S.geometry.height=20,S.geometry.x=Math.round(z/this.view.scale)-ca.x-(null!=M?M.origin.x:0),S.geometry.y=Math.round(L/this.view.scale)-ca.y-(null!=M?M.origin.y:0),S.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([S],null!=M?M.cell:null),this.fireEvent(new mxEventObject("textInserted",
"cells",[S])),this.autoSizeCell(S)}finally{this.getModel().endUpdate()}return S};Graph.prototype.addClickHandler=function(z,L,M){var S=mxUtils.bind(this,function(){var qa=this.container.getElementsByTagName("a");if(null!=qa)for(var xa=0;xa<qa.length;xa++){var Ga=this.getAbsoluteUrl(qa[xa].getAttribute("href"));null!=Ga&&(qa[xa].setAttribute("rel",this.linkRelation),qa[xa].setAttribute("href",Ga),null!=L&&mxEvent.addGestureListeners(qa[xa],null,null,L))}});this.model.addListener(mxEvent.CHANGE,S);
-S();var ca=this.container.style.cursor,ha=this.getTolerance(),oa=this,ra={currentState:null,currentLink:null,currentTarget:null,highlight:null!=z&&""!=z&&z!=mxConstants.NONE?new mxCellHighlight(oa,z,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(qa){var xa=qa.sourceState;if(null==xa||null==oa.getLinkForCell(xa.cell))qa=oa.getCellAt(qa.getGraphX(),qa.getGraphY(),null,null,null,function(Ga,La,Pa){return null==oa.getLinkForCell(Ga.cell)}),xa=null==xa||oa.model.isAncestor(qa,
+S();var ca=this.container.style.cursor,ia=this.getTolerance(),oa=this,ra={currentState:null,currentLink:null,currentTarget:null,highlight:null!=z&&""!=z&&z!=mxConstants.NONE?new mxCellHighlight(oa,z,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(qa){var xa=qa.sourceState;if(null==xa||null==oa.getLinkForCell(xa.cell))qa=oa.getCellAt(qa.getGraphX(),qa.getGraphY(),null,null,null,function(Ga,La,Pa){return null==oa.getLinkForCell(Ga.cell)}),xa=null==xa||oa.model.isAncestor(qa,
xa.cell)?oa.view.getState(qa):null;xa!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=xa,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(qa,xa){this.startX=xa.getGraphX();this.startY=xa.getGraphY();this.scrollLeft=oa.container.scrollLeft;this.scrollTop=oa.container.scrollTop;null==this.currentLink&&"auto"==oa.container.style.overflow&&(oa.container.style.cursor="move");this.updateCurrentState(xa)},mouseMove:function(qa,xa){if(oa.isMouseDown)null!=
-this.currentLink&&(qa=Math.abs(this.startX-xa.getGraphX()),xa=Math.abs(this.startY-xa.getGraphY()),(qa>ha||xa>ha)&&this.clear());else{for(qa=xa.getSource();null!=qa&&"a"!=qa.nodeName.toLowerCase();)qa=qa.parentNode;null!=qa?this.clear():(null!=oa.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&oa.tooltipHandler.reset(xa,!0,this.currentState),(null==this.currentState||xa.getState()!=this.currentState&&null!=xa.sourceState||!oa.intersects(this.currentState,xa.getGraphX(),xa.getGraphY()))&&
-this.updateCurrentState(xa))}},mouseUp:function(qa,xa){var Ga=xa.getSource();for(qa=xa.getEvent();null!=Ga&&"a"!=Ga.nodeName.toLowerCase();)Ga=Ga.parentNode;null==Ga&&Math.abs(this.scrollLeft-oa.container.scrollLeft)<ha&&Math.abs(this.scrollTop-oa.container.scrollTop)<ha&&(null==xa.sourceState||!xa.isSource(xa.sourceState.control))&&((mxEvent.isLeftMouseButton(qa)||mxEvent.isMiddleMouseButton(qa))&&!mxEvent.isPopupTrigger(qa)||mxEvent.isTouchEvent(qa))&&(null!=this.currentLink?(Ga=oa.isBlankLink(this.currentLink),
-"data:"!==this.currentLink.substring(0,5)&&Ga||null==L||L(qa,this.currentLink),mxEvent.isConsumed(qa)||(qa=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(qa)?"_blank":Ga?oa.linkTarget:"_top",oa.openLink(this.currentLink,qa),xa.consume())):null!=M&&!xa.isConsumed()&&Math.abs(this.scrollLeft-oa.container.scrollLeft)<ha&&Math.abs(this.scrollTop-oa.container.scrollTop)<ha&&Math.abs(this.startX-xa.getGraphX())<ha&&Math.abs(this.startY-xa.getGraphY())<ha&&M(xa.getEvent()));this.clear()},
+this.currentLink&&(qa=Math.abs(this.startX-xa.getGraphX()),xa=Math.abs(this.startY-xa.getGraphY()),(qa>ia||xa>ia)&&this.clear());else{for(qa=xa.getSource();null!=qa&&"a"!=qa.nodeName.toLowerCase();)qa=qa.parentNode;null!=qa?this.clear():(null!=oa.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&oa.tooltipHandler.reset(xa,!0,this.currentState),(null==this.currentState||xa.getState()!=this.currentState&&null!=xa.sourceState||!oa.intersects(this.currentState,xa.getGraphX(),xa.getGraphY()))&&
+this.updateCurrentState(xa))}},mouseUp:function(qa,xa){var Ga=xa.getSource();for(qa=xa.getEvent();null!=Ga&&"a"!=Ga.nodeName.toLowerCase();)Ga=Ga.parentNode;null==Ga&&Math.abs(this.scrollLeft-oa.container.scrollLeft)<ia&&Math.abs(this.scrollTop-oa.container.scrollTop)<ia&&(null==xa.sourceState||!xa.isSource(xa.sourceState.control))&&((mxEvent.isLeftMouseButton(qa)||mxEvent.isMiddleMouseButton(qa))&&!mxEvent.isPopupTrigger(qa)||mxEvent.isTouchEvent(qa))&&(null!=this.currentLink?(Ga=oa.isBlankLink(this.currentLink),
+"data:"!==this.currentLink.substring(0,5)&&Ga||null==L||L(qa,this.currentLink),mxEvent.isConsumed(qa)||(qa=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(qa)?"_blank":Ga?oa.linkTarget:"_top",oa.openLink(this.currentLink,qa),xa.consume())):null!=M&&!xa.isConsumed()&&Math.abs(this.scrollLeft-oa.container.scrollLeft)<ia&&Math.abs(this.scrollTop-oa.container.scrollTop)<ia&&Math.abs(this.startX-xa.getGraphX())<ia&&Math.abs(this.startY-xa.getGraphY())<ia&&M(xa.getEvent()));this.clear()},
activate:function(qa){this.currentLink=oa.getAbsoluteUrl(oa.getLinkForCell(qa.cell));null!=this.currentLink&&(this.currentTarget=oa.getLinkTargetForCell(qa.cell),oa.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(qa))},clear:function(){null!=oa.container&&(oa.container.style.cursor=ca);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=oa.tooltipHandler&&oa.tooltipHandler.hide()}};oa.click=function(qa){};oa.addMouseListener(ra);
-mxEvent.addListener(document,"mouseleave",function(qa){ra.clear()})};Graph.prototype.duplicateCells=function(z,L){z=null!=z?z:this.getSelectionCells();L=null!=L?L:!0;for(var M=0;M<z.length;M++)this.isTableCell(z[M])&&(z[M]=this.model.getParent(z[M]));z=this.model.getTopmostCells(z);var S=this.getModel(),ca=this.gridSize,ha=[];S.beginUpdate();try{var oa={},ra=this.createCellLookup(z),qa=this.cloneCells(z,!1,oa,!0);for(M=0;M<z.length;M++){var xa=S.getParent(z[M]);if(null!=xa){var Ga=this.moveCells([qa[M]],
-ca,ca,!1)[0];ha.push(Ga);if(L)S.add(xa,qa[M]);else{var La=xa.getIndex(z[M]);S.add(xa,qa[M],La+1)}if(this.isTable(xa)){var Pa=this.getCellGeometry(qa[M]),Oa=this.getCellGeometry(xa);null!=Pa&&null!=Oa&&(Oa=Oa.clone(),Oa.height+=Pa.height,S.setGeometry(xa,Oa))}}else ha.push(qa[M])}this.updateCustomLinks(this.createCellMapping(oa,ra),qa,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",qa))}finally{S.endUpdate()}return ha};Graph.prototype.insertImage=function(z,L,M){if(null!=z&&null!=
-this.cellEditor.textarea){for(var S=this.cellEditor.textarea.getElementsByTagName("img"),ca=[],ha=0;ha<S.length;ha++)ca.push(S[ha]);document.execCommand("insertimage",!1,z);z=this.cellEditor.textarea.getElementsByTagName("img");if(z.length==ca.length+1)for(ha=z.length-1;0<=ha;ha--)if(0==ha||z[ha]!=ca[ha-1]){z[ha].setAttribute("width",L);z[ha].setAttribute("height",M);break}}};Graph.prototype.insertLink=function(z){if(null!=this.cellEditor.textarea)if(0==z.length)document.execCommand("unlink",!1);
+mxEvent.addListener(document,"mouseleave",function(qa){ra.clear()})};Graph.prototype.duplicateCells=function(z,L){z=null!=z?z:this.getSelectionCells();L=null!=L?L:!0;for(var M=0;M<z.length;M++)this.isTableCell(z[M])&&(z[M]=this.model.getParent(z[M]));z=this.model.getTopmostCells(z);var S=this.getModel(),ca=this.gridSize,ia=[];S.beginUpdate();try{var oa={},ra=this.createCellLookup(z),qa=this.cloneCells(z,!1,oa,!0);for(M=0;M<z.length;M++){var xa=S.getParent(z[M]);if(null!=xa){var Ga=this.moveCells([qa[M]],
+ca,ca,!1)[0];ia.push(Ga);if(L)S.add(xa,qa[M]);else{var La=xa.getIndex(z[M]);S.add(xa,qa[M],La+1)}if(this.isTable(xa)){var Pa=this.getCellGeometry(qa[M]),Oa=this.getCellGeometry(xa);null!=Pa&&null!=Oa&&(Oa=Oa.clone(),Oa.height+=Pa.height,S.setGeometry(xa,Oa))}}else ia.push(qa[M])}this.updateCustomLinks(this.createCellMapping(oa,ra),qa,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",qa))}finally{S.endUpdate()}return ia};Graph.prototype.insertImage=function(z,L,M){if(null!=z&&null!=
+this.cellEditor.textarea){for(var S=this.cellEditor.textarea.getElementsByTagName("img"),ca=[],ia=0;ia<S.length;ia++)ca.push(S[ia]);document.execCommand("insertimage",!1,z);z=this.cellEditor.textarea.getElementsByTagName("img");if(z.length==ca.length+1)for(ia=z.length-1;0<=ia;ia--)if(0==ia||z[ia]!=ca[ia-1]){z[ia].setAttribute("width",L);z[ia].setAttribute("height",M);break}}};Graph.prototype.insertLink=function(z){if(null!=this.cellEditor.textarea)if(0==z.length)document.execCommand("unlink",!1);
else if(mxClient.IS_FF){for(var L=this.cellEditor.textarea.getElementsByTagName("a"),M=[],S=0;S<L.length;S++)M.push(L[S]);document.execCommand("createlink",!1,mxUtils.trim(z));L=this.cellEditor.textarea.getElementsByTagName("a");if(L.length==M.length+1)for(S=L.length-1;0<=S;S--)if(L[S]!=M[S-1]){for(L=L[S].getElementsByTagName("a");0<L.length;){for(M=L[0].parentNode;null!=L[0].firstChild;)M.insertBefore(L[0].firstChild,L[0]);M.removeChild(L[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(z))};
-Graph.prototype.isCellResizable=function(z){var L=mxGraph.prototype.isCellResizable.apply(this,arguments),M=this.getCurrentCellStyle(z);return!this.isTableCell(z)&&!this.isTableRow(z)&&(L||"0"!=mxUtils.getValue(M,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==M[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(z,L){null==L&&(L=this.getSelectionCells());if(null!=L&&1<L.length){for(var M=[],S=null,ca=null,ha=0;ha<L.length;ha++)if(this.getModel().isVertex(L[ha])){var oa=this.view.getState(L[ha]);
-if(null!=oa){var ra=z?oa.getCenterX():oa.getCenterY();S=null!=S?Math.max(S,ra):ra;ca=null!=ca?Math.min(ca,ra):ra;M.push(oa)}}if(2<M.length){M.sort(function(La,Pa){return z?La.x-Pa.x:La.y-Pa.y});oa=this.view.translate;ra=this.view.scale;ca=ca/ra-(z?oa.x:oa.y);S=S/ra-(z?oa.x:oa.y);this.getModel().beginUpdate();try{var qa=(S-ca)/(M.length-1);S=ca;for(ha=1;ha<M.length-1;ha++){var xa=this.view.getState(this.model.getParent(M[ha].cell)),Ga=this.getCellGeometry(M[ha].cell);S+=qa;null!=Ga&&null!=xa&&(Ga=
-Ga.clone(),z?Ga.x=Math.round(S-Ga.width/2)-xa.origin.x:Ga.y=Math.round(S-Ga.height/2)-xa.origin.y,this.getModel().setGeometry(M[ha].cell,Ga))}}finally{this.getModel().endUpdate()}}}return L};Graph.prototype.isCloneEvent=function(z){return mxClient.IS_MAC&&mxEvent.isMetaDown(z)||mxEvent.isControlDown(z)};Graph.prototype.createSvgImageExport=function(){var z=new mxImageExport;z.getLinkForCellState=mxUtils.bind(this,function(L,M){return this.getLinkForCell(L.cell)});return z};Graph.prototype.parseBackgroundImage=
-function(z){var L=null;null!=z&&0<z.length&&(z=JSON.parse(z),L=new mxImage(z.src,z.width,z.height));return L};Graph.prototype.getBackgroundImageObject=function(z){return z};Graph.prototype.getSvg=function(z,L,M,S,ca,ha,oa,ra,qa,xa,Ga,La,Pa,Oa){var Ta=null;if(null!=Oa)for(Ta=new mxDictionary,Ga=0;Ga<Oa.length;Ga++)Ta.put(Oa[Ga],!0);if(Oa=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{L=null!=L?L:1;M=null!=M?M:0;ca=null!=ca?ca:!0;ha=null!=ha?ha:!0;oa=
-null!=oa?oa:!0;xa=null!=xa?xa:!1;var Ma="page"==Pa?this.view.getBackgroundPageBounds():ha&&null==Ta||S||"diagram"==Pa?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),ua=this.view.scale;"diagram"==Pa&&null!=this.backgroundImage&&(Ma=mxRectangle.fromRectangle(Ma),Ma.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*ua,(this.view.translate.y+this.backgroundImage.y)*ua,this.backgroundImage.width*ua,this.backgroundImage.height*ua)));if(null==Ma)throw Error(mxResources.get("drawingEmpty"));
+Graph.prototype.isCellResizable=function(z){var L=mxGraph.prototype.isCellResizable.apply(this,arguments),M=this.getCurrentCellStyle(z);return!this.isTableCell(z)&&!this.isTableRow(z)&&(L||"0"!=mxUtils.getValue(M,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==M[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(z,L){null==L&&(L=this.getSelectionCells());if(null!=L&&1<L.length){for(var M=[],S=null,ca=null,ia=0;ia<L.length;ia++)if(this.getModel().isVertex(L[ia])){var oa=this.view.getState(L[ia]);
+if(null!=oa){var ra=z?oa.getCenterX():oa.getCenterY();S=null!=S?Math.max(S,ra):ra;ca=null!=ca?Math.min(ca,ra):ra;M.push(oa)}}if(2<M.length){M.sort(function(La,Pa){return z?La.x-Pa.x:La.y-Pa.y});oa=this.view.translate;ra=this.view.scale;ca=ca/ra-(z?oa.x:oa.y);S=S/ra-(z?oa.x:oa.y);this.getModel().beginUpdate();try{var qa=(S-ca)/(M.length-1);S=ca;for(ia=1;ia<M.length-1;ia++){var xa=this.view.getState(this.model.getParent(M[ia].cell)),Ga=this.getCellGeometry(M[ia].cell);S+=qa;null!=Ga&&null!=xa&&(Ga=
+Ga.clone(),z?Ga.x=Math.round(S-Ga.width/2)-xa.origin.x:Ga.y=Math.round(S-Ga.height/2)-xa.origin.y,this.getModel().setGeometry(M[ia].cell,Ga))}}finally{this.getModel().endUpdate()}}}return L};Graph.prototype.isCloneEvent=function(z){return mxClient.IS_MAC&&mxEvent.isMetaDown(z)||mxEvent.isControlDown(z)};Graph.prototype.createSvgImageExport=function(){var z=new mxImageExport;z.getLinkForCellState=mxUtils.bind(this,function(L,M){return this.getLinkForCell(L.cell)});return z};Graph.prototype.parseBackgroundImage=
+function(z){var L=null;null!=z&&0<z.length&&(z=JSON.parse(z),L=new mxImage(z.src,z.width,z.height));return L};Graph.prototype.getBackgroundImageObject=function(z){return z};Graph.prototype.getSvg=function(z,L,M,S,ca,ia,oa,ra,qa,xa,Ga,La,Pa,Oa){var Ta=null;if(null!=Oa)for(Ta=new mxDictionary,Ga=0;Ga<Oa.length;Ga++)Ta.put(Oa[Ga],!0);if(Oa=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{L=null!=L?L:1;M=null!=M?M:0;ca=null!=ca?ca:!0;ia=null!=ia?ia:!0;oa=
+null!=oa?oa:!0;xa=null!=xa?xa:!1;var Ma="page"==Pa?this.view.getBackgroundPageBounds():ia&&null==Ta||S||"diagram"==Pa?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),ua=this.view.scale;"diagram"==Pa&&null!=this.backgroundImage&&(Ma=mxRectangle.fromRectangle(Ma),Ma.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*ua,(this.view.translate.y+this.backgroundImage.y)*ua,this.backgroundImage.width*ua,this.backgroundImage.height*ua)));if(null==Ma)throw Error(mxResources.get("drawingEmpty"));
S=L/ua;Pa=ca?-.5:0;var ya=Graph.createSvgNode(Pa,Pa,Math.max(1,Math.ceil(Ma.width*S)+2*M)+(xa&&0==M?5:0),Math.max(1,Math.ceil(Ma.height*S)+2*M)+(xa&&0==M?5:0),z),Na=ya.ownerDocument,Fa=null!=Na.createElementNS?Na.createElementNS(mxConstants.NS_SVG,"g"):Na.createElement("g");ya.appendChild(Fa);var Ra=this.createSvgCanvas(Fa);Ra.foOffset=ca?-.5:0;Ra.textOffset=ca?-.5:0;Ra.imageOffset=ca?-.5:0;Ra.translate(Math.floor(M/L-Ma.x/ua),Math.floor(M/L-Ma.y/ua));var db=document.createElement("div"),Va=Ra.getAlternateText;
Ra.getAlternateText=function(Ya,gb,hb,ob,vb,qb,Ab,Bb,tb,lb,ib,mb,wb){if(null!=qb&&0<this.state.fontSize)try{mxUtils.isNode(qb)?qb=qb.innerText:(db.innerHTML=qb,qb=mxUtils.extractTextWithWhitespace(db.childNodes));for(var rb=Math.ceil(2*ob/this.state.fontSize),xb=[],zb=0,yb=0;(0==rb||zb<rb)&&yb<qb.length;){var pb=qb.charCodeAt(yb);if(10==pb||13==pb){if(0<zb)break}else xb.push(qb.charAt(yb)),255>pb&&zb++;yb++}xb.length<qb.length&&1<qb.length-xb.length&&(qb=mxUtils.trim(xb.join(""))+"...");return qb}catch(c){return Va.apply(this,
arguments)}else return Va.apply(this,arguments)};var fb=this.backgroundImage;if(null!=fb){z=ua/L;var kb=this.view.translate;Pa=new mxRectangle((fb.x+kb.x)*z,(fb.y+kb.y)*z,fb.width*z,fb.height*z);mxUtils.intersects(Ma,Pa)&&Ra.image(fb.x+kb.x,fb.y+kb.y,fb.width,fb.height,fb.src,!0)}Ra.scale(S);Ra.textEnabled=oa;ra=null!=ra?ra:this.createSvgImageExport();var ub=ra.drawCellState,nb=ra.getLinkForCellState;ra.getLinkForCellState=function(Ya,gb){var hb=nb.apply(this,arguments);return null==hb||Ya.view.graph.isCustomLink(hb)?
-null:hb};ra.getLinkTargetForCellState=function(Ya,gb){return Ya.view.graph.getLinkTargetForCell(Ya.cell)};ra.drawCellState=function(Ya,gb){for(var hb=Ya.view.graph,ob=null!=Ta?Ta.get(Ya.cell):hb.isCellSelected(Ya.cell),vb=hb.model.getParent(Ya.cell);!(ha&&null==Ta||ob)&&null!=vb;)ob=null!=Ta?Ta.get(vb):hb.isCellSelected(vb),vb=hb.model.getParent(vb);(ha&&null==Ta||ob)&&ub.apply(this,arguments)};ra.drawState(this.getView().getState(this.model.root),Ra);this.updateSvgLinks(ya,qa,!0);this.addForeignObjectWarning(Ra,
+null:hb};ra.getLinkTargetForCellState=function(Ya,gb){return Ya.view.graph.getLinkTargetForCell(Ya.cell)};ra.drawCellState=function(Ya,gb){for(var hb=Ya.view.graph,ob=null!=Ta?Ta.get(Ya.cell):hb.isCellSelected(Ya.cell),vb=hb.model.getParent(Ya.cell);!(ia&&null==Ta||ob)&&null!=vb;)ob=null!=Ta?Ta.get(vb):hb.isCellSelected(vb),vb=hb.model.getParent(vb);(ia&&null==Ta||ob)&&ub.apply(this,arguments)};ra.drawState(this.getView().getState(this.model.root),Ra);this.updateSvgLinks(ya,qa,!0);this.addForeignObjectWarning(Ra,
ya);return ya}finally{Oa&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(z,L){if("0"!=urlParams["svg-warning"]&&0<L.getElementsByTagName("foreignObject").length){var M=z.createElement("switch"),S=z.createElement("g");S.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var ca=z.createElement("a");ca.setAttribute("transform","translate(0,-5)");null==ca.setAttributeNS||L.ownerDocument!=document&&
null==document.documentMode?(ca.setAttribute("xlink:href",Graph.foreignObjectWarningLink),ca.setAttribute("target","_blank")):(ca.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),ca.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));z=z.createElement("text");z.setAttribute("text-anchor","middle");z.setAttribute("font-size","10px");z.setAttribute("x","50%");z.setAttribute("y","100%");mxUtils.write(z,Graph.foreignObjectWarningText);M.appendChild(S);ca.appendChild(z);
M.appendChild(ca);L.appendChild(M)}};Graph.prototype.updateSvgLinks=function(z,L,M){z=z.getElementsByTagName("a");for(var S=0;S<z.length;S++)if(null==z[S].getAttribute("target")){var ca=z[S].getAttribute("href");null==ca&&(ca=z[S].getAttribute("xlink:href"));null!=ca&&(null!=L&&/^https?:\/\//.test(ca)?z[S].setAttribute("target",L):M&&this.isCustomLink(ca)&&z[S].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(z){z=new mxSvgCanvas2D(z);z.minStrokeWidth=this.cellRenderer.minSvgStrokeWidth;
z.pointerEvents=!0;return z};Graph.prototype.getSelectedElement=function(){var z=null;if(window.getSelection){var L=window.getSelection();L.getRangeAt&&L.rangeCount&&(z=L.getRangeAt(0).commonAncestorContainer)}else document.selection&&(z=document.selection.createRange().parentElement());return z};Graph.prototype.getSelectedEditingElement=function(){for(var z=this.getSelectedElement();null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z=z.parentNode;null!=z&&z==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&
this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(z=this.cellEditor.textarea.firstChild);return z};Graph.prototype.getParentByName=function(z,L,M){for(;null!=z&&z.nodeName!=L;){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.getParentByNames=function(z,L,M){for(;null!=z&&!(0<=mxUtils.indexOf(L,z.nodeName));){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.selectNode=function(z){var L=null;if(window.getSelection){if(L=window.getSelection(),L.getRangeAt&&
-L.rangeCount){var M=document.createRange();M.selectNode(z);L.removeAllRanges();L.addRange(M)}}else(L=document.selection)&&"Control"!=L.type&&(z=L.createRange(),z.collapse(!0),M=L.createRange(),M.setEndPoint("StartToStart",z),M.select())};Graph.prototype.flipEdgePoints=function(z,L,M){var S=this.getCellGeometry(z);if(null!=S){S=S.clone();if(null!=S.points)for(var ca=0;ca<S.points.length;ca++)L?S.points[ca].x=M+(M-S.points[ca].x):S.points[ca].y=M+(M-S.points[ca].y);ca=function(ha){null!=ha&&(L?ha.x=
-M+(M-ha.x):ha.y=M+(M-ha.y))};ca(S.getTerminalPoint(!0));ca(S.getTerminalPoint(!1));this.model.setGeometry(z,S)}};Graph.prototype.flipChildren=function(z,L,M){this.model.beginUpdate();try{for(var S=this.model.getChildCount(z),ca=0;ca<S;ca++){var ha=this.model.getChildAt(z,ca);if(this.model.isEdge(ha))this.flipEdgePoints(ha,L,M);else{var oa=this.getCellGeometry(ha);null!=oa&&(oa=oa.clone(),L?oa.x=M+(M-oa.x-oa.width):oa.y=M+(M-oa.y-oa.height),this.model.setGeometry(ha,oa))}}}finally{this.model.endUpdate()}};
-Graph.prototype.flipCells=function(z,L){this.model.beginUpdate();try{z=this.model.getTopmostCells(z);for(var M=[],S=0;S<z.length;S++)if(this.model.isEdge(z[S])){var ca=this.view.getState(z[S]);null!=ca&&this.flipEdgePoints(z[S],L,(L?ca.getCenterX():ca.getCenterY())/this.view.scale-(L?ca.origin.x:ca.origin.y)-(L?this.view.translate.x:this.view.translate.y))}else{var ha=this.getCellGeometry(z[S]);null!=ha&&this.flipChildren(z[S],L,L?ha.getCenterX()-ha.x:ha.getCenterY()-ha.y);M.push(z[S])}this.toggleCellStyles(L?
-mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,M)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(z,L){var M=null;if(null!=z&&0<z.length){this.model.beginUpdate();try{for(var S=0;S<z.length;S++){var ca=this.model.getParent(z[S]);if(this.isTable(ca)){var ha=this.getCellGeometry(z[S]),oa=this.getCellGeometry(ca);null!=ha&&null!=oa&&(oa=oa.clone(),oa.height-=ha.height,this.model.setGeometry(ca,oa))}}var ra=this.selectParentAfterDelete?this.model.getParents(z):null;this.removeCells(z,
-L)}finally{this.model.endUpdate()}if(null!=ra)for(M=[],S=0;S<ra.length;S++)this.model.contains(ra[S])&&(this.model.isVertex(ra[S])||this.model.isEdge(ra[S]))&&M.push(ra[S])}return M};Graph.prototype.insertTableColumn=function(z,L){var M=this.getModel();M.beginUpdate();try{var S=z,ca=0;if(this.isTableCell(z)){var ha=M.getParent(z);S=M.getParent(ha);ca=mxUtils.indexOf(M.getChildCells(ha,!0),z)}else this.isTableRow(z)?S=M.getParent(z):z=M.getChildCells(S,!0)[0],L||(ca=M.getChildCells(z,!0).length-1);
+L.rangeCount){var M=document.createRange();M.selectNode(z);L.removeAllRanges();L.addRange(M)}}else(L=document.selection)&&"Control"!=L.type&&(z=L.createRange(),z.collapse(!0),M=L.createRange(),M.setEndPoint("StartToStart",z),M.select())};Graph.prototype.flipEdgePoints=function(z,L,M){var S=this.getCellGeometry(z);if(null!=S){S=S.clone();if(null!=S.points)for(var ca=0;ca<S.points.length;ca++)L?S.points[ca].x=M+(M-S.points[ca].x):S.points[ca].y=M+(M-S.points[ca].y);ca=function(ia){null!=ia&&(L?ia.x=
+M+(M-ia.x):ia.y=M+(M-ia.y))};ca(S.getTerminalPoint(!0));ca(S.getTerminalPoint(!1));this.model.setGeometry(z,S)}};Graph.prototype.flipChildren=function(z,L,M){this.model.beginUpdate();try{for(var S=this.model.getChildCount(z),ca=0;ca<S;ca++){var ia=this.model.getChildAt(z,ca);if(this.model.isEdge(ia))this.flipEdgePoints(ia,L,M);else{var oa=this.getCellGeometry(ia);null!=oa&&(oa=oa.clone(),L?oa.x=M+(M-oa.x-oa.width):oa.y=M+(M-oa.y-oa.height),this.model.setGeometry(ia,oa))}}}finally{this.model.endUpdate()}};
+Graph.prototype.flipCells=function(z,L){this.model.beginUpdate();try{z=this.model.getTopmostCells(z);for(var M=[],S=0;S<z.length;S++)if(this.model.isEdge(z[S])){var ca=this.view.getState(z[S]);null!=ca&&this.flipEdgePoints(z[S],L,(L?ca.getCenterX():ca.getCenterY())/this.view.scale-(L?ca.origin.x:ca.origin.y)-(L?this.view.translate.x:this.view.translate.y))}else{var ia=this.getCellGeometry(z[S]);null!=ia&&this.flipChildren(z[S],L,L?ia.getCenterX()-ia.x:ia.getCenterY()-ia.y);M.push(z[S])}this.toggleCellStyles(L?
+mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,M)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(z,L){var M=null;if(null!=z&&0<z.length){this.model.beginUpdate();try{for(var S=0;S<z.length;S++){var ca=this.model.getParent(z[S]);if(this.isTable(ca)){var ia=this.getCellGeometry(z[S]),oa=this.getCellGeometry(ca);null!=ia&&null!=oa&&(oa=oa.clone(),oa.height-=ia.height,this.model.setGeometry(ca,oa))}}var ra=this.selectParentAfterDelete?this.model.getParents(z):null;this.removeCells(z,
+L)}finally{this.model.endUpdate()}if(null!=ra)for(M=[],S=0;S<ra.length;S++)this.model.contains(ra[S])&&(this.model.isVertex(ra[S])||this.model.isEdge(ra[S]))&&M.push(ra[S])}return M};Graph.prototype.insertTableColumn=function(z,L){var M=this.getModel();M.beginUpdate();try{var S=z,ca=0;if(this.isTableCell(z)){var ia=M.getParent(z);S=M.getParent(ia);ca=mxUtils.indexOf(M.getChildCells(ia,!0),z)}else this.isTableRow(z)?S=M.getParent(z):z=M.getChildCells(S,!0)[0],L||(ca=M.getChildCells(z,!0).length-1);
var oa=M.getChildCells(S,!0),ra=Graph.minTableColumnWidth;for(z=0;z<oa.length;z++){var qa=M.getChildCells(oa[z],!0)[ca],xa=M.cloneCell(qa,!1),Ga=this.getCellGeometry(xa);xa.value=null;xa.style=mxUtils.setStyle(mxUtils.setStyle(xa.style,"rowspan",null),"colspan",null);if(null!=Ga){null!=Ga.alternateBounds&&(Ga.width=Ga.alternateBounds.width,Ga.height=Ga.alternateBounds.height,Ga.alternateBounds=null);ra=Ga.width;var La=this.getCellGeometry(oa[z]);null!=La&&(Ga.height=La.height)}M.add(oa[z],xa,ca+(L?
0:1))}var Pa=this.getCellGeometry(S);null!=Pa&&(Pa=Pa.clone(),Pa.width+=ra,M.setGeometry(S,Pa))}finally{M.endUpdate()}};Graph.prototype.deleteLane=function(z){var L=this.getModel();L.beginUpdate();try{var M=null;M="stackLayout"==this.getCurrentCellStyle(z).childLayout?z:L.getParent(z);var S=L.getChildCells(M,!0);0==S.length?L.remove(M):(M==z&&(z=S[S.length-1]),L.remove(z))}finally{L.endUpdate()}};Graph.prototype.insertLane=function(z,L){var M=this.getModel();M.beginUpdate();try{var S=null;if("stackLayout"==
-this.getCurrentCellStyle(z).childLayout){S=z;var ca=M.getChildCells(S,!0);z=ca[L?0:ca.length-1]}else S=M.getParent(z);var ha=S.getIndex(z);z=M.cloneCell(z,!1);z.value=null;M.add(S,z,ha+(L?0:1))}finally{M.endUpdate()}};Graph.prototype.insertTableRow=function(z,L){var M=this.getModel();M.beginUpdate();try{var S=z,ca=z;if(this.isTableCell(z))ca=M.getParent(z),S=M.getParent(ca);else if(this.isTableRow(z))S=M.getParent(z);else{var ha=M.getChildCells(S,!0);ca=ha[L?0:ha.length-1]}var oa=M.getChildCells(ca,
-!0),ra=S.getIndex(ca);ca=M.cloneCell(ca,!1);ca.value=null;var qa=this.getCellGeometry(ca);if(null!=qa){for(ha=0;ha<oa.length;ha++){z=M.cloneCell(oa[ha],!1);z.value=null;z.style=mxUtils.setStyle(mxUtils.setStyle(z.style,"rowspan",null),"colspan",null);var xa=this.getCellGeometry(z);null!=xa&&(null!=xa.alternateBounds&&(xa.width=xa.alternateBounds.width,xa.height=xa.alternateBounds.height,xa.alternateBounds=null),xa.height=qa.height);ca.insert(z)}M.add(S,ca,ra+(L?0:1));var Ga=this.getCellGeometry(S);
-null!=Ga&&(Ga=Ga.clone(),Ga.height+=qa.height,M.setGeometry(S,Ga))}}finally{M.endUpdate()}};Graph.prototype.deleteTableColumn=function(z){var L=this.getModel();L.beginUpdate();try{var M=z,S=z;this.isTableCell(z)&&(S=L.getParent(z));this.isTableRow(S)&&(M=L.getParent(S));var ca=L.getChildCells(M,!0);if(0==ca.length)L.remove(M);else{this.isTableRow(S)||(S=ca[0]);var ha=L.getChildCells(S,!0);if(1>=ha.length)L.remove(M);else{var oa=ha.length-1;this.isTableCell(z)&&(oa=mxUtils.indexOf(ha,z));for(S=z=0;S<
+this.getCurrentCellStyle(z).childLayout){S=z;var ca=M.getChildCells(S,!0);z=ca[L?0:ca.length-1]}else S=M.getParent(z);var ia=S.getIndex(z);z=M.cloneCell(z,!1);z.value=null;M.add(S,z,ia+(L?0:1))}finally{M.endUpdate()}};Graph.prototype.insertTableRow=function(z,L){var M=this.getModel();M.beginUpdate();try{var S=z,ca=z;if(this.isTableCell(z))ca=M.getParent(z),S=M.getParent(ca);else if(this.isTableRow(z))S=M.getParent(z);else{var ia=M.getChildCells(S,!0);ca=ia[L?0:ia.length-1]}var oa=M.getChildCells(ca,
+!0),ra=S.getIndex(ca);ca=M.cloneCell(ca,!1);ca.value=null;var qa=this.getCellGeometry(ca);if(null!=qa){for(ia=0;ia<oa.length;ia++){z=M.cloneCell(oa[ia],!1);z.value=null;z.style=mxUtils.setStyle(mxUtils.setStyle(z.style,"rowspan",null),"colspan",null);var xa=this.getCellGeometry(z);null!=xa&&(null!=xa.alternateBounds&&(xa.width=xa.alternateBounds.width,xa.height=xa.alternateBounds.height,xa.alternateBounds=null),xa.height=qa.height);ca.insert(z)}M.add(S,ca,ra+(L?0:1));var Ga=this.getCellGeometry(S);
+null!=Ga&&(Ga=Ga.clone(),Ga.height+=qa.height,M.setGeometry(S,Ga))}}finally{M.endUpdate()}};Graph.prototype.deleteTableColumn=function(z){var L=this.getModel();L.beginUpdate();try{var M=z,S=z;this.isTableCell(z)&&(S=L.getParent(z));this.isTableRow(S)&&(M=L.getParent(S));var ca=L.getChildCells(M,!0);if(0==ca.length)L.remove(M);else{this.isTableRow(S)||(S=ca[0]);var ia=L.getChildCells(S,!0);if(1>=ia.length)L.remove(M);else{var oa=ia.length-1;this.isTableCell(z)&&(oa=mxUtils.indexOf(ia,z));for(S=z=0;S<
ca.length;S++){var ra=L.getChildCells(ca[S],!0)[oa];L.remove(ra);var qa=this.getCellGeometry(ra);null!=qa&&(z=Math.max(z,qa.width))}var xa=this.getCellGeometry(M);null!=xa&&(xa=xa.clone(),xa.width-=z,L.setGeometry(M,xa))}}}finally{L.endUpdate()}};Graph.prototype.deleteTableRow=function(z){var L=this.getModel();L.beginUpdate();try{var M=z,S=z;this.isTableCell(z)&&(z=S=L.getParent(z));this.isTableRow(z)&&(M=L.getParent(S));var ca=L.getChildCells(M,!0);if(1>=ca.length)L.remove(M);else{this.isTableRow(S)||
-(S=ca[ca.length-1]);L.remove(S);z=0;var ha=this.getCellGeometry(S);null!=ha&&(z=ha.height);var oa=this.getCellGeometry(M);null!=oa&&(oa=oa.clone(),oa.height-=z,L.setGeometry(M,oa))}}finally{L.endUpdate()}};Graph.prototype.insertRow=function(z,L){for(var M=z.tBodies[0],S=M.rows[0].cells,ca=z=0;ca<S.length;ca++){var ha=S[ca].getAttribute("colspan");z+=null!=ha?parseInt(ha):1}L=M.insertRow(L);for(ca=0;ca<z;ca++)mxUtils.br(L.insertCell(-1));return L.cells[0]};Graph.prototype.deleteRow=function(z,L){z.tBodies[0].deleteRow(L)};
+(S=ca[ca.length-1]);L.remove(S);z=0;var ia=this.getCellGeometry(S);null!=ia&&(z=ia.height);var oa=this.getCellGeometry(M);null!=oa&&(oa=oa.clone(),oa.height-=z,L.setGeometry(M,oa))}}finally{L.endUpdate()}};Graph.prototype.insertRow=function(z,L){for(var M=z.tBodies[0],S=M.rows[0].cells,ca=z=0;ca<S.length;ca++){var ia=S[ca].getAttribute("colspan");z+=null!=ia?parseInt(ia):1}L=M.insertRow(L);for(ca=0;ca<z;ca++)mxUtils.br(L.insertCell(-1));return L.cells[0]};Graph.prototype.deleteRow=function(z,L){z.tBodies[0].deleteRow(L)};
Graph.prototype.insertColumn=function(z,L){var M=z.tHead;if(null!=M)for(var S=0;S<M.rows.length;S++){var ca=document.createElement("th");M.rows[S].appendChild(ca);mxUtils.br(ca)}z=z.tBodies[0];for(M=0;M<z.rows.length;M++)S=z.rows[M].insertCell(L),mxUtils.br(S);return z.rows[0].cells[0<=L?L:z.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(z,L){if(0<=L){z=z.tBodies[0].rows;for(var M=0;M<z.length;M++)z[M].cells.length>L&&z[M].deleteCell(L)}};Graph.prototype.pasteHtmlAtCaret=function(z){if(window.getSelection){var L=
-window.getSelection();if(L.getRangeAt&&L.rangeCount){L=L.getRangeAt(0);L.deleteContents();var M=document.createElement("div");M.innerHTML=z;z=document.createDocumentFragment();for(var S;S=M.firstChild;)lastNode=z.appendChild(S);L.insertNode(z)}}else(L=document.selection)&&"Control"!=L.type&&L.createRange().pasteHTML(z)};Graph.prototype.createLinkForHint=function(z,L){function M(ca,ha){ca.length>ha&&(ca=ca.substring(0,Math.round(ha/2))+"..."+ca.substring(ca.length-Math.round(ha/4)));return ca}z=null!=
+window.getSelection();if(L.getRangeAt&&L.rangeCount){L=L.getRangeAt(0);L.deleteContents();var M=document.createElement("div");M.innerHTML=z;z=document.createDocumentFragment();for(var S;S=M.firstChild;)lastNode=z.appendChild(S);L.insertNode(z)}}else(L=document.selection)&&"Control"!=L.type&&L.createRange().pasteHTML(z)};Graph.prototype.createLinkForHint=function(z,L){function M(ca,ia){ca.length>ia&&(ca=ca.substring(0,Math.round(ia/2))+"..."+ca.substring(ca.length-Math.round(ia/4)));return ca}z=null!=
z?z:"javascript:void(0);";if(null==L||0==L.length)L=this.isCustomLink(z)?this.getLinkTitle(z):z;var S=document.createElement("a");S.setAttribute("rel",this.linkRelation);S.setAttribute("href",this.getAbsoluteUrl(z));S.setAttribute("title",M(this.isCustomLink(z)?this.getLinkTitle(z):z,80));null!=this.linkTarget&&S.setAttribute("target",this.linkTarget);mxUtils.write(S,M(L,40));this.isCustomLink(z)&&mxEvent.addListener(S,"click",mxUtils.bind(this,function(ca){this.customLinkClicked(z);mxEvent.consume(ca)}));
-return S};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(ha,oa){this.popupMenuHandler.hideMenu()});var z=this.updateMouseEvent;this.updateMouseEvent=function(ha){ha=z.apply(this,arguments);if(mxEvent.isTouchEvent(ha.getEvent())&&null==ha.getState()){var oa=this.getCellAt(ha.graphX,ha.graphY);null!=oa&&this.isSwimlane(oa)&&this.hitsSwimlaneContent(oa,ha.graphX,ha.graphY)||
-(ha.state=this.view.getState(oa),null!=ha.state&&null!=ha.state.shape&&(this.container.style.cursor=ha.state.shape.node.style.cursor))}null==ha.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return ha};var L=!1,M=!1,S=!1,ca=this.fireMouseEvent;this.fireMouseEvent=function(ha,oa,ra){ha==mxEvent.MOUSE_DOWN&&(oa=this.updateMouseEvent(oa),L=this.isCellSelected(oa.getCell()),M=this.isSelectionEmpty(),S=this.popupMenuHandler.isMenuShowing());ca.apply(this,arguments)};this.popupMenuHandler.mouseUp=
-mxUtils.bind(this,function(ha,oa){var ra=mxEvent.isMouseEvent(oa.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==oa.getState()||!oa.isSource(oa.getState().control))&&(this.popupMenuHandler.popupTrigger||!S&&!ra&&(M&&null==oa.getCell()&&this.isSelectionEmpty()||L&&this.isCellSelected(oa.getCell())));ra=!L||ra?null:mxUtils.bind(this,function(qa){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var xa=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(oa.getX()+
-xa.x+1,oa.getY()+xa.y+1,qa,oa.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[ha,oa,ra])})};mxCellEditor.prototype.isContentEditing=function(){var z=this.graph.view.getState(this.editingCell);return null!=z&&1==z.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var z="";window.getSelection?z=window.getSelection():
+return S};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(ia,oa){this.popupMenuHandler.hideMenu()});var z=this.updateMouseEvent;this.updateMouseEvent=function(ia){ia=z.apply(this,arguments);if(mxEvent.isTouchEvent(ia.getEvent())&&null==ia.getState()){var oa=this.getCellAt(ia.graphX,ia.graphY);null!=oa&&this.isSwimlane(oa)&&this.hitsSwimlaneContent(oa,ia.graphX,ia.graphY)||
+(ia.state=this.view.getState(oa),null!=ia.state&&null!=ia.state.shape&&(this.container.style.cursor=ia.state.shape.node.style.cursor))}null==ia.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return ia};var L=!1,M=!1,S=!1,ca=this.fireMouseEvent;this.fireMouseEvent=function(ia,oa,ra){ia==mxEvent.MOUSE_DOWN&&(oa=this.updateMouseEvent(oa),L=this.isCellSelected(oa.getCell()),M=this.isSelectionEmpty(),S=this.popupMenuHandler.isMenuShowing());ca.apply(this,arguments)};this.popupMenuHandler.mouseUp=
+mxUtils.bind(this,function(ia,oa){var ra=mxEvent.isMouseEvent(oa.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==oa.getState()||!oa.isSource(oa.getState().control))&&(this.popupMenuHandler.popupTrigger||!S&&!ra&&(M&&null==oa.getCell()&&this.isSelectionEmpty()||L&&this.isCellSelected(oa.getCell())));ra=!L||ra?null:mxUtils.bind(this,function(qa){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var xa=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(oa.getX()+
+xa.x+1,oa.getY()+xa.y+1,qa,oa.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[ia,oa,ra])})};mxCellEditor.prototype.isContentEditing=function(){var z=this.graph.view.getState(this.editingCell);return null!=z&&1==z.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var z="";window.getSelection?z=window.getSelection():
document.getSelection?z=document.getSelection():document.selection&&(z=document.selection.createRange().text);return""!=z};mxCellEditor.prototype.insertTab=function(z){var L=this.textarea.ownerDocument.defaultView.getSelection(),M=L.getRangeAt(0),S="\t";if(null!=z)for(S="";0<z;)S+=" ",z--;z=document.createElement("span");z.style.whiteSpace="pre";z.appendChild(document.createTextNode(S));M.insertNode(z);M.setStartAfter(z);M.setEndAfter(z);L.removeAllRanges();L.addRange(M)};mxCellEditor.prototype.alignText=
function(z,L){var M=null!=L&&mxEvent.isShiftDown(L);if(M||null!=window.getSelection&&null!=window.getSelection().containsNode){var S=!0;this.graph.processElements(this.textarea,function(ca){M||window.getSelection().containsNode(ca,!0)?(ca.removeAttribute("align"),ca.style.textAlign=null):S=!1});S&&this.graph.cellEditor.setAlign(z)}document.execCommand("justify"+z.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var z=window.getSelection();if(z.getRangeAt&&
z.rangeCount){for(var L=[],M=0,S=z.rangeCount;M<S;++M)L.push(z.getRangeAt(M));return L}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(z){try{if(z)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var L=0,M=z.length;L<M;++L)sel.addRange(z[L])}else document.selection&&z.select&&z.select()}catch(S){}};var C=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
function(z){null!=z.text&&(z.text.replaceLinefeeds="0"!=mxUtils.getValue(z.style,"nl2Br","1"));C.apply(this,arguments)};var H=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(z,L){this.isKeepFocusEvent(z)||!mxEvent.isAltDown(z.getEvent())?H.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(z){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var G=mxCellEditor.prototype.startEditing;
mxCellEditor.prototype.startEditing=function(z,L){z=this.graph.getStartEditingCell(z,L);G.apply(this,arguments);var M=this.graph.view.getState(z);this.textarea.className=null!=M&&1==M.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(z);M=this.graph.getModel().getParent(z);var S=this.graph.getCellGeometry(z);if(this.graph.getModel().isEdge(M)&&null!=S&&S.relative||this.graph.getModel().isEdge(z))this.textarea.style.outline=
-mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var aa=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(z){function L(ca,ha){ha.originalNode=ca;ca=ca.firstChild;for(var oa=ha.firstChild;null!=ca&&null!=oa;)L(ca,oa),ca=ca.nextSibling,oa=oa.nextSibling;return ha}function M(ca,ha){if(null!=ca)if(ha.originalNode!=ca)S(ca);else for(ca=ca.firstChild,ha=ha.firstChild;null!=ca;){var oa=ca.nextSibling;null==ha?S(ca):(M(ca,ha),
-ha=ha.nextSibling);ca=oa}}function S(ca){for(var ha=ca.firstChild;null!=ha;){var oa=ha.nextSibling;S(ha);ha=oa}1==ca.nodeType&&("BR"===ca.nodeName||null!=ca.firstChild)||3==ca.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(ca)).length?(3==ca.nodeType&&mxUtils.setTextContent(ca,mxUtils.getTextContent(ca).replace(/\n|\r/g,"")),1==ca.nodeType&&(ca.removeAttribute("style"),ca.removeAttribute("class"),ca.removeAttribute("width"),ca.removeAttribute("cellpadding"),ca.removeAttribute("cellspacing"),ca.removeAttribute("border"))):
-ca.parentNode.removeChild(ca)}aa.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(ca){var ha=L(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?M(this.textarea,ha):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=
+mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var aa=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(z){function L(ca,ia){ia.originalNode=ca;ca=ca.firstChild;for(var oa=ia.firstChild;null!=ca&&null!=oa;)L(ca,oa),ca=ca.nextSibling,oa=oa.nextSibling;return ia}function M(ca,ia){if(null!=ca)if(ia.originalNode!=ca)S(ca);else for(ca=ca.firstChild,ia=ia.firstChild;null!=ca;){var oa=ca.nextSibling;null==ia?S(ca):(M(ca,ia),
+ia=ia.nextSibling);ca=oa}}function S(ca){for(var ia=ca.firstChild;null!=ia;){var oa=ia.nextSibling;S(ia);ia=oa}1==ca.nodeType&&("BR"===ca.nodeName||null!=ca.firstChild)||3==ca.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(ca)).length?(3==ca.nodeType&&mxUtils.setTextContent(ca,mxUtils.getTextContent(ca).replace(/\n|\r/g,"")),1==ca.nodeType&&(ca.removeAttribute("style"),ca.removeAttribute("class"),ca.removeAttribute("width"),ca.removeAttribute("cellpadding"),ca.removeAttribute("cellspacing"),ca.removeAttribute("border"))):
+ca.parentNode.removeChild(ca)}aa.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(ca){var ia=L(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?M(this.textarea,ia):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=
function(){var z=this.graph.view.getState(this.editingCell);if(null!=z){var L=null!=z&&"0"!=mxUtils.getValue(z.style,"nl2Br","1"),M=this.saveSelection();if(this.codeViewMode){ra=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<ra.length&&"\n"==ra.charAt(ra.length-1)&&(ra=ra.substring(0,ra.length-1));ra=this.graph.sanitizeHtml(L?ra.replace(/\n/g,"<br/>"):ra,!0);this.textarea.className="mxCellEditor geContentEditable";qa=mxUtils.getValue(z.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE);
-L=mxUtils.getValue(z.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var S=mxUtils.getValue(z.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),ca=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,ha=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,oa=[];(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&
-oa.push("underline");(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&oa.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(qa*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(qa)+"px";this.textarea.style.textDecoration=oa.join(" ");this.textarea.style.fontWeight=ca?"bold":"normal";this.textarea.style.fontStyle=ha?"italic":"";this.textarea.style.fontFamily=
+L=mxUtils.getValue(z.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var S=mxUtils.getValue(z.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),ca=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,ia=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,oa=[];(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&
+oa.push("underline");(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&oa.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(qa*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(qa)+"px";this.textarea.style.textDecoration=oa.join(" ");this.textarea.style.fontWeight=ca?"bold":"normal";this.textarea.style.fontStyle=ia?"italic":"";this.textarea.style.fontFamily=
L;this.textarea.style.textAlign=S;this.textarea.style.padding="0px";this.textarea.innerHTML!=ra&&(this.textarea.innerHTML=ra,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerText="");var ra=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(ra=mxUtils.replaceTrailingNewlines(ra,
"<div><br></div>"));ra=this.graph.sanitizeHtml(L?ra.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):ra,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var qa=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(qa*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(qa)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=
mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.width="";this.textarea.style.padding="2px";this.textarea.innerHTML!=ra&&(this.textarea.innerHTML=ra);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=M;this.resize()}};var da=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(z,L){if(null!=this.textarea)if(z=this.graph.getView().getState(this.editingCell),
@@ -2595,26 +2596,26 @@ mxUtils.getValue(z.style,mxConstants.STYLE_HORIZONTAL,1)||(L=mxUtils.getValue(z.
mxConstants.STYLE_STROKECOLOR,null));L==mxConstants.NONE&&(L=null);return L};mxCellEditor.prototype.getMinimumSize=function(z){var L=this.graph.getView().scale;return new mxRectangle(0,0,null==z.text?30:z.text.size*L+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(z,L){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(L.getEvent)};mxGraphView.prototype.formatUnitText=function(z){return z?
e(z,this.unit):z};mxGraphHandler.prototype.updateHint=function(z){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var L=this.graph.view.translate,M=this.graph.view.scale;z=this.roundLength((this.bounds.x+this.currentDx)/M-L.x);L=this.roundLength((this.bounds.y+this.currentDy)/M-L.y);M=this.graph.view.unit;this.hint.innerHTML=e(z,M)+", "+e(L,M);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-
this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var pa=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(z,L){pa.apply(this,arguments);var M=this.graph.getCellStyle(z);if(null==M.childLayout){var S=this.graph.model.getParent(z),ca=null!=S?this.graph.getCellGeometry(S):
-null;if(null!=ca&&(M=this.graph.getCellStyle(S),"stackLayout"==M.childLayout)){var ha=parseFloat(mxUtils.getValue(M,"stackBorder",mxStackLayout.prototype.border));M="1"==mxUtils.getValue(M,"horizontalStack","1");var oa=this.graph.getActualStartSize(S);ca=ca.clone();M?ca.height=L.height+oa.y+oa.height+2*ha:ca.width=L.width+oa.x+oa.width+2*ha;this.graph.model.setGeometry(S,ca)}}};var O=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=
-function(){function z(ra){M.get(ra)||(M.put(ra,!0),ca.push(ra))}for(var L=O.apply(this,arguments),M=new mxDictionary,S=this.graph.model,ca=[],ha=0;ha<L.length;ha++){var oa=L[ha];this.graph.isTableCell(oa)?z(S.getParent(S.getParent(oa))):this.graph.isTableRow(oa)&&z(S.getParent(oa));z(oa)}return ca};var X=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(z){var L=X.apply(this,arguments);L.stroke="#C0C0C0";L.strokewidth=1;return L};var ea=
+null;if(null!=ca&&(M=this.graph.getCellStyle(S),"stackLayout"==M.childLayout)){var ia=parseFloat(mxUtils.getValue(M,"stackBorder",mxStackLayout.prototype.border));M="1"==mxUtils.getValue(M,"horizontalStack","1");var oa=this.graph.getActualStartSize(S);ca=ca.clone();M?ca.height=L.height+oa.y+oa.height+2*ia:ca.width=L.width+oa.x+oa.width+2*ia;this.graph.model.setGeometry(S,ca)}}};var O=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=
+function(){function z(ra){M.get(ra)||(M.put(ra,!0),ca.push(ra))}for(var L=O.apply(this,arguments),M=new mxDictionary,S=this.graph.model,ca=[],ia=0;ia<L.length;ia++){var oa=L[ia];this.graph.isTableCell(oa)?z(S.getParent(S.getParent(oa))):this.graph.isTableRow(oa)&&z(S.getParent(oa));z(oa)}return ca};var X=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(z){var L=X.apply(this,arguments);L.stroke="#C0C0C0";L.strokewidth=1;return L};var ea=
mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(z){var L=ea.apply(this,arguments);L.stroke="#C0C0C0";L.strokewidth=1;return L};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var z=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+z.x/2,this.bounds.y+this.rotationHandleVSpacing-z.y/2)};mxVertexHandler.prototype.isRecursiveResize=
function(z,L){return this.graph.isRecursiveVertexResize(z)&&!mxEvent.isAltDown(L.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(z,L){return mxEvent.isControlDown(L.getEvent())||mxEvent.isMetaDown(L.getEvent())};var ka=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return ka.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=
function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):this.bounds};var ja=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return ja.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var U=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=
function(z){return z.tableHandle||U.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var z=0;this.graph.isTableRow(this.state.cell)?z=1:this.graph.isTableCell(this.state.cell)&&(z=2);return z};var J=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return J.apply(this,arguments).grow(-this.getSelectionBorderInset())};
-var V=null,P=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==V&&(V=mxCellRenderer.defaultShapes.tableLine);var z=P.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var L=function(Ta,Ma,ua){for(var ya=[],Na=0;Na<Ta.length;Na++){var Fa=Ta[Na];ya.push(null==Fa?null:new mxPoint((qa+Fa.x+Ma)*ha,(xa+Fa.y+ua)*ha))}return ya},M=this,S=this.graph,ca=S.model,ha=S.view.scale,oa=this.state,ra=this.selectionBorder,qa=this.state.origin.x+
+var V=null,P=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==V&&(V=mxCellRenderer.defaultShapes.tableLine);var z=P.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var L=function(Ta,Ma,ua){for(var ya=[],Na=0;Na<Ta.length;Na++){var Fa=Ta[Na];ya.push(null==Fa?null:new mxPoint((qa+Fa.x+Ma)*ia,(xa+Fa.y+ua)*ia))}return ya},M=this,S=this.graph,ca=S.model,ia=S.view.scale,oa=this.state,ra=this.selectionBorder,qa=this.state.origin.x+
S.view.translate.x,xa=this.state.origin.y+S.view.translate.y;null==z&&(z=[]);var Ga=S.view.getCellStates(ca.getChildCells(this.state.cell,!0));if(0<Ga.length){var La=ca.getChildCells(Ga[0].cell,!0),Pa=S.getTableLines(this.state.cell,!1,!0),Oa=S.getTableLines(this.state.cell,!0,!1);for(ca=0;ca<Ga.length;ca++)mxUtils.bind(this,function(Ta){var Ma=Ga[Ta],ua=Ta<Ga.length-1?Ga[Ta+1]:null;ua=null!=ua?S.getCellGeometry(ua.cell):null;var ya=null!=ua&&null!=ua.alternateBounds?ua.alternateBounds:ua;ua=null!=
Oa[Ta]?new V(Oa[Ta],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);ua.isDashed=ra.isDashed;ua.svgStrokeTolerance++;Ma=new mxHandle(Ma,"row-resize",null,ua);Ma.tableHandle=!0;var Na=0;Ma.shape.node.parentNode.insertBefore(Ma.shape.node,Ma.shape.node.parentNode.firstChild);Ma.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Na?mxConstants.NONE:ra.stroke;if(this.shape.constructor==V)this.shape.line=L(Oa[Ta],0,Na),this.shape.updateBoundsFromLine();else{var Ra=S.getActualStartSize(oa.cell,
-!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Na*ha;this.shape.bounds.x=oa.x+(Ta==Ga.length-1?0:Ra.x*ha);this.shape.bounds.width=oa.width-(Ta==Ga.length-1?0:Ra.width+Ra.x+ha)}this.shape.redraw()}};var Fa=!1;Ma.setPosition=function(Ra,db,Va){Na=Math.max(Graph.minTableRowHeight-Ra.height,db.y-Ra.y-Ra.height);Fa=mxEvent.isShiftDown(Va.getEvent());null!=ya&&Fa&&(Na=Math.min(Na,ya.height-Graph.minTableRowHeight))};Ma.execute=function(Ra){if(0!=Na)S.setTableRowHeight(this.state.cell,
-Na,!Fa);else if(!M.blockDelayedSelection){var db=S.getCellAt(Ra.getGraphX(),Ra.getGraphY())||oa.cell;S.graphHandler.selectCellForEvent(db,Ra)}Na=0};Ma.reset=function(){Na=0};z.push(Ma)})(ca);for(ca=0;ca<La.length;ca++)mxUtils.bind(this,function(Ta){var Ma=S.view.getState(La[Ta]),ua=S.getCellGeometry(La[Ta]),ya=null!=ua.alternateBounds?ua.alternateBounds:ua;null==Ma&&(Ma=new mxCellState(S.view,La[Ta],S.getCellStyle(La[Ta])),Ma.x=oa.x+ua.x*ha,Ma.y=oa.y+ua.y*ha,Ma.width=ya.width*ha,Ma.height=ya.height*
-ha,Ma.updateCachedBounds());ua=Ta<La.length-1?La[Ta+1]:null;ua=null!=ua?S.getCellGeometry(ua):null;var Na=null!=ua&&null!=ua.alternateBounds?ua.alternateBounds:ua;ua=null!=Pa[Ta]?new V(Pa[Ta],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);ua.isDashed=ra.isDashed;ua.svgStrokeTolerance++;Ma=new mxHandle(Ma,"col-resize",null,ua);Ma.tableHandle=!0;var Fa=0;Ma.shape.node.parentNode.insertBefore(Ma.shape.node,Ma.shape.node.parentNode.firstChild);Ma.redraw=function(){if(null!=this.shape){this.shape.stroke=
-0==Fa?mxConstants.NONE:ra.stroke;if(this.shape.constructor==V)this.shape.line=L(Pa[Ta],Fa,0),this.shape.updateBoundsFromLine();else{var db=S.getActualStartSize(oa.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(ya.width+Fa)*ha;this.shape.bounds.y=oa.y+(Ta==La.length-1?0:db.y*ha);this.shape.bounds.height=oa.height-(Ta==La.length-1?0:(db.height+db.y)*ha)}this.shape.redraw()}};var Ra=!1;Ma.setPosition=function(db,Va,fb){Fa=Math.max(Graph.minTableColumnWidth-ya.width,Va.x-db.x-ya.width);
+!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Na*ia;this.shape.bounds.x=oa.x+(Ta==Ga.length-1?0:Ra.x*ia);this.shape.bounds.width=oa.width-(Ta==Ga.length-1?0:Ra.width+Ra.x+ia)}this.shape.redraw()}};var Fa=!1;Ma.setPosition=function(Ra,db,Va){Na=Math.max(Graph.minTableRowHeight-Ra.height,db.y-Ra.y-Ra.height);Fa=mxEvent.isShiftDown(Va.getEvent());null!=ya&&Fa&&(Na=Math.min(Na,ya.height-Graph.minTableRowHeight))};Ma.execute=function(Ra){if(0!=Na)S.setTableRowHeight(this.state.cell,
+Na,!Fa);else if(!M.blockDelayedSelection){var db=S.getCellAt(Ra.getGraphX(),Ra.getGraphY())||oa.cell;S.graphHandler.selectCellForEvent(db,Ra)}Na=0};Ma.reset=function(){Na=0};z.push(Ma)})(ca);for(ca=0;ca<La.length;ca++)mxUtils.bind(this,function(Ta){var Ma=S.view.getState(La[Ta]),ua=S.getCellGeometry(La[Ta]),ya=null!=ua.alternateBounds?ua.alternateBounds:ua;null==Ma&&(Ma=new mxCellState(S.view,La[Ta],S.getCellStyle(La[Ta])),Ma.x=oa.x+ua.x*ia,Ma.y=oa.y+ua.y*ia,Ma.width=ya.width*ia,Ma.height=ya.height*
+ia,Ma.updateCachedBounds());ua=Ta<La.length-1?La[Ta+1]:null;ua=null!=ua?S.getCellGeometry(ua):null;var Na=null!=ua&&null!=ua.alternateBounds?ua.alternateBounds:ua;ua=null!=Pa[Ta]?new V(Pa[Ta],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);ua.isDashed=ra.isDashed;ua.svgStrokeTolerance++;Ma=new mxHandle(Ma,"col-resize",null,ua);Ma.tableHandle=!0;var Fa=0;Ma.shape.node.parentNode.insertBefore(Ma.shape.node,Ma.shape.node.parentNode.firstChild);Ma.redraw=function(){if(null!=this.shape){this.shape.stroke=
+0==Fa?mxConstants.NONE:ra.stroke;if(this.shape.constructor==V)this.shape.line=L(Pa[Ta],Fa,0),this.shape.updateBoundsFromLine();else{var db=S.getActualStartSize(oa.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(ya.width+Fa)*ia;this.shape.bounds.y=oa.y+(Ta==La.length-1?0:db.y*ia);this.shape.bounds.height=oa.height-(Ta==La.length-1?0:(db.height+db.y)*ia)}this.shape.redraw()}};var Ra=!1;Ma.setPosition=function(db,Va,fb){Fa=Math.max(Graph.minTableColumnWidth-ya.width,Va.x-db.x-ya.width);
Ra=mxEvent.isShiftDown(fb.getEvent());null==Na||Ra||(Fa=Math.min(Fa,Na.width-Graph.minTableColumnWidth))};Ma.execute=function(db){if(0!=Fa)S.setTableColumnWidth(this.state.cell,Fa,Ra);else if(!M.blockDelayedSelection){var Va=S.getCellAt(db.getGraphX(),db.getGraphY())||oa.cell;S.graphHandler.selectCellForEvent(Va,db)}Fa=0};Ma.positionChanged=function(){};Ma.reset=function(){Fa=0};z.push(Ma)})(ca)}}return null!=z?z.reverse():null};var R=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=
function(z){R.apply(this,arguments);if(null!=this.moveHandles)for(var L=0;L<this.moveHandles.length;L++)this.moveHandles[L].style.visibility=z?"":"hidden";if(null!=this.cornerHandles)for(L=0;L<this.cornerHandles.length;L++)this.cornerHandles[L].node.style.visibility=z?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var z=this.graph.model;if(null!=this.moveHandles){for(var L=0;L<this.moveHandles.length;L++)this.moveHandles[L].parentNode.removeChild(this.moveHandles[L]);this.moveHandles=
null}this.moveHandles=[];for(L=0;L<z.getChildCount(this.state.cell);L++)mxUtils.bind(this,function(M){if(null!=M&&z.isVertex(M.cell)){var S=mxUtils.createImage(Editor.rowMoveImage);S.style.position="absolute";S.style.cursor="pointer";S.style.width="7px";S.style.height="4px";S.style.padding="4px 2px 4px 2px";S.rowState=M;mxEvent.addGestureListeners(S,mxUtils.bind(this,function(ca){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(ca)&&this.graph.isCellSelected(M.cell)||
this.graph.selectCellForEvent(M.cell,ca);mxEvent.isPopupTrigger(ca)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(ca),mxEvent.getClientY(ca),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(ca),this.graph.isMouseDown=!0);mxEvent.consume(ca)}),null,mxUtils.bind(this,function(ca){mxEvent.isPopupTrigger(ca)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(ca),mxEvent.getClientY(ca),M.cell,ca),mxEvent.consume(ca))}));
-this.moveHandles.push(S);this.graph.container.appendChild(S)}})(this.graph.view.getState(z.getChildAt(this.state.cell,L)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var z=0;z<this.customHandles.length;z++)this.customHandles[z].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ia=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var z=new mxPoint(0,
-0),L=this.tolerance,M=this.state.style.shape;null==mxCellRenderer.defaultShapes[M]&&mxStencilRegistry.getStencil(M);M=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!M&&null!=this.customHandles)for(var S=0;S<this.customHandles.length;S++)if(null!=this.customHandles[S].shape&&null!=this.customHandles[S].shape.bounds){var ca=this.customHandles[S].shape.bounds,ha=ca.getCenterX(),oa=ca.getCenterY();if(Math.abs(this.state.x-ha)<ca.width/2||Math.abs(this.state.y-
-oa)<ca.height/2||Math.abs(this.state.x+this.state.width-ha)<ca.width/2||Math.abs(this.state.y+this.state.height-oa)<ca.height/2){M=!0;break}}M&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(L/=2,this.graph.isTable(this.state.cell)&&(L+=7),z.x=this.sizers[0].bounds.width+L,z.y=this.sizers[0].bounds.height+L):z=ia.apply(this,arguments);return z};mxVertexHandler.prototype.updateHint=function(z){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));
+this.moveHandles.push(S);this.graph.container.appendChild(S)}})(this.graph.view.getState(z.getChildAt(this.state.cell,L)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var z=0;z<this.customHandles.length;z++)this.customHandles[z].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ha=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var z=new mxPoint(0,
+0),L=this.tolerance,M=this.state.style.shape;null==mxCellRenderer.defaultShapes[M]&&mxStencilRegistry.getStencil(M);M=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!M&&null!=this.customHandles)for(var S=0;S<this.customHandles.length;S++)if(null!=this.customHandles[S].shape&&null!=this.customHandles[S].shape.bounds){var ca=this.customHandles[S].shape.bounds,ia=ca.getCenterX(),oa=ca.getCenterY();if(Math.abs(this.state.x-ia)<ca.width/2||Math.abs(this.state.y-
+oa)<ca.height/2||Math.abs(this.state.x+this.state.width-ia)<ca.width/2||Math.abs(this.state.y+this.state.height-oa)<ca.height/2){M=!0;break}}M&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(L/=2,this.graph.isTable(this.state.cell)&&(L+=7),z.x=this.sizers[0].bounds.width+L,z.y=this.sizers[0].bounds.height+L):z=ha.apply(this,arguments);return z};mxVertexHandler.prototype.updateHint=function(z){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));
if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{z=this.state.view.scale;var L=this.state.view.unit;this.hint.innerHTML=e(this.roundLength(this.bounds.width/z),L)+" x "+e(this.roundLength(this.bounds.height/z),L)}z=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==z&&(z=this.bounds);this.hint.style.left=z.x+Math.round((z.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=
z.y+z.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var la=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(z,L){la.apply(this,arguments);null!=this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display=
"none")};var ta=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(z,L){ta.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(z,L){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var M=this.graph.view.translate,S=this.graph.view.scale,ca=this.roundLength(L.x/S-M.x);M=this.roundLength(L.y/S-M.y);S=this.graph.view.unit;this.hint.innerHTML=
@@ -2631,10 +2632,10 @@ HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangl
!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(z){return!mxEvent.isShiftDown(z.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=function(z){return!mxEvent.isShiftDown(z.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=
12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(z){return mxEvent.isMouseEvent(z.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(z){var L=z.getEvent();return null==z.getState()&&!mxEvent.isMouseEvent(L)||mxEvent.isPopupTrigger(L)&&(null==z.getState()||mxEvent.isControlDown(L)||mxEvent.isShiftDown(L))};var u=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
function(z,L){u.apply(this,arguments);mxEvent.isTouchEvent(L.getEvent())&&this.graph.isCellSelected(L.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(z){var L=z.getEvent();return mxEvent.isLeftMouseButton(L)&&(this.useLeftButtonForPanning&&null==z.getState()||mxEvent.isControlDown(L)&&!mxEvent.isShiftDown(L))||this.usePopupTrigger&&mxEvent.isPopupTrigger(L)};mxRubberband.prototype.isSpaceEvent=function(z){return this.graph.isEnabled()&&
-!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(z.getEvent())||mxEvent.isMetaDown(z.getEvent()))&&mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(z,L){if(this.cancelled)this.cancelled=!1,L.consume();else{var M=null!=this.div&&"none"!=this.div.style.display,S=null,ca=null,ha=z=null;
-null!=this.first&&null!=this.currentX&&null!=this.currentY&&(S=this.first.x,ca=this.first.y,z=(this.currentX-S)/this.graph.view.scale,ha=(this.currentY-ca)/this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(z=this.graph.snap(z),ha=this.graph.snap(ha),this.graph.isGridEnabled()||(Math.abs(z)<this.graph.tolerance&&(z=0),Math.abs(ha)<this.graph.tolerance&&(ha=0))));this.reset();if(M){if(this.isSpaceEvent(L)){this.graph.model.beginUpdate();try{var oa=this.graph.getCellsBeyond(S,ca,this.graph.getDefaultParent(),
-!0,!0);for(M=0;M<oa.length;M++)if(this.graph.isCellMovable(oa[M])){var ra=this.graph.view.getState(oa[M]),qa=this.graph.getCellGeometry(oa[M]);null!=ra&&null!=qa&&(qa=qa.clone(),qa.translate(z,ha),this.graph.model.setGeometry(oa[M],qa))}}finally{this.graph.model.endUpdate()}}else oa=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(oa,L.getEvent());L.consume()}}};mxRubberband.prototype.mouseMove=function(z,L){if(!L.isConsumed()&&null!=this.first){var M=mxUtils.getScrollOrigin(this.graph.container);
-z=mxUtils.getOffset(this.graph.container);M.x-=z.x;M.y-=z.y;z=L.getX()+M.x;M=L.getY()+M.y;var S=this.first.x-z,ca=this.first.y-M,ha=this.graph.tolerance;if(null!=this.div||Math.abs(S)>ha||Math.abs(ca)>ha)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(z,M),this.isSpaceEvent(L)?(z=this.x+this.width,M=this.y+this.height,S=this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(this.width=this.graph.snap(this.width/S)*S,this.height=this.graph.snap(this.height/S)*S,
+!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(z.getEvent())||mxEvent.isMetaDown(z.getEvent()))&&mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(z,L){if(this.cancelled)this.cancelled=!1,L.consume();else{var M=null!=this.div&&"none"!=this.div.style.display,S=null,ca=null,ia=z=null;
+null!=this.first&&null!=this.currentX&&null!=this.currentY&&(S=this.first.x,ca=this.first.y,z=(this.currentX-S)/this.graph.view.scale,ia=(this.currentY-ca)/this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(z=this.graph.snap(z),ia=this.graph.snap(ia),this.graph.isGridEnabled()||(Math.abs(z)<this.graph.tolerance&&(z=0),Math.abs(ia)<this.graph.tolerance&&(ia=0))));this.reset();if(M){if(this.isSpaceEvent(L)){this.graph.model.beginUpdate();try{var oa=this.graph.getCellsBeyond(S,ca,this.graph.getDefaultParent(),
+!0,!0);for(M=0;M<oa.length;M++)if(this.graph.isCellMovable(oa[M])){var ra=this.graph.view.getState(oa[M]),qa=this.graph.getCellGeometry(oa[M]);null!=ra&&null!=qa&&(qa=qa.clone(),qa.translate(z,ia),this.graph.model.setGeometry(oa[M],qa))}}finally{this.graph.model.endUpdate()}}else oa=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(oa,L.getEvent());L.consume()}}};mxRubberband.prototype.mouseMove=function(z,L){if(!L.isConsumed()&&null!=this.first){var M=mxUtils.getScrollOrigin(this.graph.container);
+z=mxUtils.getOffset(this.graph.container);M.x-=z.x;M.y-=z.y;z=L.getX()+M.x;M=L.getY()+M.y;var S=this.first.x-z,ca=this.first.y-M,ia=this.graph.tolerance;if(null!=this.div||Math.abs(S)>ia||Math.abs(ca)>ia)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(z,M),this.isSpaceEvent(L)?(z=this.x+this.width,M=this.y+this.height,S=this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(this.width=this.graph.snap(this.width/S)*S,this.height=this.graph.snap(this.height/S)*S,
this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=z-this.width),this.y<this.first.y&&(this.y=M-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?
"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle=
"",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),L.consume()}};var I=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);I.apply(this,arguments)};var N=(new Date).getTime(),W=0,T=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(z,L,M,S){T.apply(this,arguments);M!=this.currentTerminalState?
@@ -2648,11 +2649,11 @@ arguments)};mxVertexHandler.prototype.rotateClick=function(){var z=mxUtils.getVa
var Da=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(z,L){Da.apply(this,arguments);null!=this.graph.graphHandler.first&&(null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display="none"),null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none"))};var Aa=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(z,L){Aa.apply(this,arguments);null!=this.rotationShape&&null!=
this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="");this.blockDelayedSelection=null};var za=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){za.apply(this,arguments);var z=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));if(this.graph.isTable(this.state.cell))this.refreshMoveHandles();
else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=[];for(var L=0;4>L;L++){var M=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);M.dialect=mxConstants.DIALECT_SVG;M.init(this.graph.view.getOverlayPane());this.cornerHandles.push(M)}}var S=mxUtils.bind(this,function(){null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<
-this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this,function(ca,ha){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));S()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(ca,ha){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,
+this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this,function(ca,ia){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));S()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(ca,ia){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,
this.editingHandler);L=this.graph.getLinkForCell(this.state.cell);M=this.graph.getLinksForState(this.state);this.updateLinkHint(L,M);if(null!=L||null!=M&&0<M.length)z=!0;z&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(z,L){try{if(null==z&&(null==L||0==L.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=z||null!=L&&0<L.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding=
"6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerText="";if(null!=z&&(this.linkHint.appendChild(this.graph.createLinkForHint(z)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var M=document.createElement("img");M.setAttribute("src",Editor.editImage);M.setAttribute("title",
-mxResources.get("editLink"));M.setAttribute("width","11");M.setAttribute("height","11");M.style.marginLeft="10px";M.style.marginBottom="-1px";M.style.cursor="pointer";Editor.isDarkMode()&&(M.style.filter="invert(100%)");this.linkHint.appendChild(M);mxEvent.addListener(M,"click",mxUtils.bind(this,function(ha){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(ha)}));var S=M.cloneNode(!0);S.setAttribute("src",Editor.trashImage);S.setAttribute("title",mxResources.get("removeIt",
-[mxResources.get("link")]));S.style.marginLeft="4px";this.linkHint.appendChild(S);mxEvent.addListener(S,"click",mxUtils.bind(this,function(ha){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(ha)}))}if(null!=L)for(M=0;M<L.length;M++){var ca=document.createElement("div");ca.style.marginTop=null!=z||0<M?"6px":"0px";ca.appendChild(this.graph.createLinkForHint(L[M].getAttribute("href"),mxUtils.getTextContent(L[M])));this.linkHint.appendChild(ca)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(ha){}};
+mxResources.get("editLink"));M.setAttribute("width","11");M.setAttribute("height","11");M.style.marginLeft="10px";M.style.marginBottom="-1px";M.style.cursor="pointer";Editor.isDarkMode()&&(M.style.filter="invert(100%)");this.linkHint.appendChild(M);mxEvent.addListener(M,"click",mxUtils.bind(this,function(ia){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(ia)}));var S=M.cloneNode(!0);S.setAttribute("src",Editor.trashImage);S.setAttribute("title",mxResources.get("removeIt",
+[mxResources.get("link")]));S.style.marginLeft="4px";this.linkHint.appendChild(S);mxEvent.addListener(S,"click",mxUtils.bind(this,function(ia){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(ia)}))}if(null!=L)for(M=0;M<L.length;M++){var ca=document.createElement("div");ca.style.marginTop=null!=z||0<M?"6px":"0px";ca.appendChild(this.graph.createLinkForHint(L[M].getAttribute("href"),mxUtils.getTextContent(L[M])));this.linkHint.appendChild(ca)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(ia){}};
mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var Ca=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){Ca.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var z=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&
this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(S,ca){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));z();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var L=this.graph.getLinkForCell(this.state.cell),M=this.graph.getLinksForState(this.state);if(null!=
L||null!=M&&0<M.length)this.updateLinkHint(L,M),this.redrawHandles()};var Qa=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){Qa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var Za=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].style.left=this.moveHandles[z].rowState.x+
@@ -2666,9 +2667,9 @@ Math.round(z.y+z.height+Editor.hintOffset)+"px"}};var Ua=mxEdgeHandler.prototype
this.changeHandler=null)}}();(function(){function b(c,l,x){mxShape.call(this);this.line=c;this.stroke=l;this.strokewidth=null!=x?x:1;this.updateBoundsFromLine()}function e(){mxSwimlane.call(this)}function k(){mxSwimlane.call(this)}function n(){mxCylinder.call(this)}function D(){mxCylinder.call(this)}function t(){mxActor.call(this)}function E(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function m(){mxShape.call(this)}function q(){mxShape.call(this)}
function y(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1}function F(){mxActor.call(this)}function C(){mxCylinder.call(this)}function H(){mxCylinder.call(this)}function G(){mxActor.call(this)}function aa(){mxActor.call(this)}function da(){mxActor.call(this)}function ba(){mxActor.call(this)}function Y(){mxActor.call(this)}function pa(){mxActor.call(this)}function O(){mxActor.call(this)}function X(c,l){this.canvas=c;this.canvas.setLineJoin("round");
this.canvas.setLineCap("round");this.defaultVariation=l;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,X.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,X.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,X.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,X.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
-X.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,X.prototype.arcTo)}function ea(){mxRectangleShape.call(this)}function ka(){mxRectangleShape.call(this)}function ja(){mxActor.call(this)}function U(){mxActor.call(this)}function J(){mxActor.call(this)}function V(){mxRectangleShape.call(this)}function P(){mxRectangleShape.call(this)}function R(){mxCylinder.call(this)}function ia(){mxShape.call(this)}function la(){mxShape.call(this)}function ta(){mxEllipse.call(this)}
+X.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,X.prototype.arcTo)}function ea(){mxRectangleShape.call(this)}function ka(){mxRectangleShape.call(this)}function ja(){mxActor.call(this)}function U(){mxActor.call(this)}function J(){mxActor.call(this)}function V(){mxRectangleShape.call(this)}function P(){mxRectangleShape.call(this)}function R(){mxCylinder.call(this)}function ha(){mxShape.call(this)}function la(){mxShape.call(this)}function ta(){mxEllipse.call(this)}
function u(){mxShape.call(this)}function I(){mxShape.call(this)}function N(){mxRectangleShape.call(this)}function W(){mxShape.call(this)}function T(){mxShape.call(this)}function Q(){mxShape.call(this)}function Z(){mxShape.call(this)}function na(){mxShape.call(this)}function va(){mxCylinder.call(this)}function Ba(){mxCylinder.call(this)}function sa(){mxRectangleShape.call(this)}function Da(){mxDoubleEllipse.call(this)}function Aa(){mxDoubleEllipse.call(this)}function za(){mxArrowConnector.call(this);
-this.spacing=0}function Ca(){mxArrowConnector.call(this);this.spacing=0}function Qa(){mxActor.call(this)}function Za(){mxRectangleShape.call(this)}function cb(){mxActor.call(this)}function Ja(){mxActor.call(this)}function Ua(){mxActor.call(this)}function $a(){mxActor.call(this)}function z(){mxActor.call(this)}function L(){mxActor.call(this)}function M(){mxActor.call(this)}function S(){mxActor.call(this)}function ca(){mxActor.call(this)}function ha(){mxActor.call(this)}function oa(){mxEllipse.call(this)}
+this.spacing=0}function Ca(){mxArrowConnector.call(this);this.spacing=0}function Qa(){mxActor.call(this)}function Za(){mxRectangleShape.call(this)}function cb(){mxActor.call(this)}function Ja(){mxActor.call(this)}function Ua(){mxActor.call(this)}function $a(){mxActor.call(this)}function z(){mxActor.call(this)}function L(){mxActor.call(this)}function M(){mxActor.call(this)}function S(){mxActor.call(this)}function ca(){mxActor.call(this)}function ia(){mxActor.call(this)}function oa(){mxEllipse.call(this)}
function ra(){mxEllipse.call(this)}function qa(){mxEllipse.call(this)}function xa(){mxRhombus.call(this)}function Ga(){mxEllipse.call(this)}function La(){mxEllipse.call(this)}function Pa(){mxEllipse.call(this)}function Oa(){mxEllipse.call(this)}function Ta(){mxActor.call(this)}function Ma(){mxActor.call(this)}function ua(){mxActor.call(this)}function ya(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=
!0;this.indent=2;this.rectOutline="single"}function Na(){mxConnector.call(this)}function Fa(c,l,x,p,v,A,B,fa,K,wa){B+=K;var ma=p.clone();p.x-=v*(2*B+K);p.y-=A*(2*B+K);v*=B+K;A*=B+K;return function(){c.ellipse(ma.x-v-B,ma.y-A-B,2*B,2*B);wa?c.fillAndStroke():c.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var l=0;l<this.line.length;l++){var x=this.line[l];null!=x&&(x=new mxRectangle(x.x,x.y,this.strokewidth,this.strokewidth),null==
c?c=x:c.add(x))}this.bounds=null!=c?c:new mxRectangle};b.prototype.paintVertexShape=function(c,l,x,p,v){this.paintTableLine(c,this.line,0,0)};b.prototype.paintTableLine=function(c,l,x,p){if(null!=l){var v=null;c.begin();for(var A=0;A<l.length;A++){var B=l[A];null!=B&&(null==v?c.moveTo(B.x+x,B.y+p):null!=v&&c.lineTo(B.x+x,B.y+p));v=B}c.end();c.stroke()}};b.prototype.intersectsRectangle=function(c){var l=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var x=null,
@@ -2726,8 +2727,8 @@ V);var Ya=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBound
0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&(c.setShadow(!1),Ya.apply(this,[c,l,x,p,v]))}};mxUtils.extend(P,mxRectangleShape);P.prototype.isHtmlAllowed=function(){return!1};P.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};P.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var A=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);A=0;do{var B=mxCellRenderer.defaultShapes[this.style["symbol"+A]];if(null!=B){var fa=this.style["symbol"+A+"Align"],K=this.style["symbol"+A+"VerticalAlign"],wa=this.style["symbol"+A+"Width"],ma=this.style["symbol"+A+"Height"],bb=this.style["symbol"+A+"Spacing"]||0,jb=this.style["symbol"+A+"VSpacing"]||
bb,eb=this.style["symbol"+A+"ArcSpacing"];null!=eb&&(eb*=this.getArcSize(p+this.strokewidth,v+this.strokewidth),bb+=eb,jb+=eb);eb=l;var Ea=x;eb=fa==mxConstants.ALIGN_CENTER?eb+(p-wa)/2:fa==mxConstants.ALIGN_RIGHT?eb+(p-wa-bb):eb+bb;Ea=K==mxConstants.ALIGN_MIDDLE?Ea+(v-ma)/2:K==mxConstants.ALIGN_BOTTOM?Ea+(v-ma-jb):Ea+jb;c.save();fa=new B;fa.style=this.style;B.prototype.paintVertexShape.call(fa,c,eb,Ea,wa,ma);c.restore()}A++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
-mxCellRenderer.registerShape("ext",P);mxUtils.extend(R,mxCylinder);R.prototype.redrawPath=function(c,l,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",R);mxUtils.extend(ia,mxShape);ia.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
-2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",ia);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+mxCellRenderer.registerShape("ext",P);mxUtils.extend(R,mxCylinder);R.prototype.redrawPath=function(c,l,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",R);mxUtils.extend(ha,mxShape);ha.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
+2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",ha);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
la);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/8,x+v);c.lineTo(l+7*p/8,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",ta);mxUtils.extend(u,mxShape);u.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(p,0);c.lineTo(0,v);c.moveTo(0,0);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",u);mxUtils.extend(I,mxShape);
I.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};I.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,0);c.end();c.stroke();c.ellipse(0,v/8,p,7*v/8);c.fillAndStroke()};I.prototype.paintForeground=function(c,l,x,p,v){c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,v/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",I);mxUtils.extend(N,mxRectangleShape);N.prototype.size=
40;N.prototype.isHtmlAllowed=function(){return!1};N.prototype.getLabelBounds=function(c){var l=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,l)};N.prototype.paintBackground=function(c,l,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"participant");null==B||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,c,l,
@@ -2767,8 +2768,8 @@ l,v),new mxPoint(p-l,A),new mxPoint(0,A)],this.isRounded,B,!0);c.end()};mxCellRe
2;this.addPoints(c,[new mxPoint(0,v/2),new mxPoint(l,0),new mxPoint(l,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(p-l,A),new mxPoint(l,A),new mxPoint(l,v)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",z);mxUtils.extend(L,mxActor);L.prototype.size=.1;L.prototype.fixedSize=20;L.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(l,0);c.lineTo(p,0);c.quadTo(p-2*l,v/2,p,v);c.lineTo(l,v);c.quadTo(l-2*l,v/2,l,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",L);mxUtils.extend(M,mxActor);M.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.close();c.end()};mxCellRenderer.registerShape("or",M);mxUtils.extend(S,mxActor);S.prototype.redrawPath=function(c,
l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.quadTo(p/2,v/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",S);mxUtils.extend(ca,mxActor);ca.prototype.size=20;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p/2,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p-l,0),
-new mxPoint(p,.8*l),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",ca);mxUtils.extend(ha,mxActor);ha.prototype.size=.375;ha.prototype.isRoundable=function(){return!0};ha.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,
-0),new mxPoint(p,v-l),new mxPoint(p/2,v),new mxPoint(0,v-l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",ha);mxUtils.extend(oa,mxEllipse);oa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/2,x+v);c.lineTo(l+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",oa);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
+new mxPoint(p,.8*l),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",ca);mxUtils.extend(ia,mxActor);ia.prototype.size=.375;ia.prototype.isRoundable=function(){return!0};ia.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,
+0),new mxPoint(p,v-l),new mxPoint(p/2,v),new mxPoint(0,v-l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",ia);mxUtils.extend(oa,mxEllipse);oa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/2,x+v);c.lineTo(l+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",oa);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke();c.begin();c.moveTo(l+p/2,x);c.lineTo(l+p/2,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",ra);mxUtils.extend(qa,mxEllipse);qa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l+.145*p,x+.145*v);c.lineTo(l+.855*p,x+.855*v);c.end();c.stroke();c.begin();c.moveTo(l+.855*p,x+.145*v);c.lineTo(l+.145*p,
x+.855*v);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",qa);mxUtils.extend(xa,mxRhombus);xa.prototype.paintVertexShape=function(c,l,x,p,v){mxRhombus.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",xa);mxUtils.extend(Ga,mxEllipse);Ga.prototype.paintVertexShape=function(c,l,x,p,v){c.begin();c.moveTo(l,x);c.lineTo(l+p,x);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke();
c.begin();c.moveTo(l,x+v);c.lineTo(l+p,x+v);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",Ga);mxUtils.extend(La,mxEllipse);La.prototype.paintVertexShape=function(c,l,x,p,v){var A=c.state.strokeWidth/2,B=10+2*A,fa=x+v-B/2;c.begin();c.moveTo(l,x);c.lineTo(l,x+v);c.moveTo(l+A,fa);c.lineTo(l+A+B,fa-B/2);c.moveTo(l+A,fa);c.lineTo(l+A+B,fa+B/2);c.moveTo(l+A,fa);c.lineTo(l+p-A,fa);c.moveTo(l+p,x);c.lineTo(l+p,x+v);c.moveTo(l+p-A,fa);c.lineTo(l+p-B-A,fa-B/2);c.moveTo(l+
@@ -2871,7 +2872,7 @@ mxUtils.getValue(this.state.style,"jettyHeight",va.prototype.jettyHeight)));retu
x){this.state.style.dx=Math.round(Math.max(0,2*Math.min(l.width/2,x.x-l.x-l.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},singleArrow:ob(1),doubleArrow:ob(.5),folder:function(c){return[ib(c,["tabWidth","tabHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"tabWidth",C.prototype.tabWidth))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"tabHeight",C.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(x=l.width-x);return new mxPoint(l.x+x,l.y+p)},function(l,x){var p=Math.max(0,Math.min(l.width,x.x-l.x));mxUtils.getValue(this.state.style,"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(p=l.width-p);this.state.style.tabWidth=Math.round(p);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},document:function(c){return[ib(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",da.prototype.size))));return new mxPoint(l.x+3*l.width/4,l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},tape:function(c){return[ib(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x*l.height/2)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(x.y-l.y)/l.height*2))},!1)]},isoCube2:function(c){return[ib(c,
-["isoAngle"],function(l){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(l.x,l.y+Math.min(l.width*Math.tan(x),.5*l.height))},function(l,x){this.state.style.isoAngle=Math.max(0,50*(x.y-l.y)/l.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[ib(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));
+["isoAngle"],function(l){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(l.x,l.y+Math.min(l.width*Math.tan(x),.5*l.height))},function(l,x){this.state.style.isoAngle=Math.max(0,50*(x.y-l.y)/l.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[ib(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ia.prototype.size))));
return new mxPoint(l.getCenterX(),l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},"mxgraph.basic.rect":function(c){var l=[Graph.createHandle(c,["size"],function(x){var p=Math.max(0,Math.min(x.width/2,x.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(x.x+p,x.y+p)},function(x,p){this.state.style.size=Math.round(100*Math.max(0,Math.min(x.height/2,x.width/2,p.x-x.x)))/100})];c=Graph.createHandle(c,
["indent"],function(x){var p=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(x.x+.75*x.width,x.y+p*x.height/200)},function(x,p){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(p.y-x.y)/x.height)))/100});l.push(c);return l},step:Ab(U.prototype.size,!0,null,!0,U.prototype.fixedSize),hexagon:Ab(J.prototype.size,!0,.5,!0,J.prototype.fixedSize),curlyBracket:Ab(pa.prototype.size,!1),display:Ab(ua.prototype.size,!1),cube:qb(1,
n.prototype.size,!1),card:qb(.5,G.prototype.size,!0),loopLimit:qb(.5,ca.prototype.size,!0),trapezoid:Bb(.5,Y.prototype.size,Y.prototype.fixedSize),parallelogram:Bb(1,ba.prototype.size,ba.prototype.fixedSize)};Graph.createHandle=ib;Graph.handleFactory=mb;var wb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=wb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var l=this.state.style.shape;null==mxCellRenderer.defaultShapes[l]&&
@@ -2902,8 +2903,8 @@ qa.prototype.constraints=mxEllipse.prototype.constraints;Oa.prototype.constraint
0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};va.prototype.getConstraints=function(c,l,x){l=parseFloat(mxUtils.getValue(c,
"jettyWidth",va.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,"jettyHeight",va.prototype.jettyHeight));var p=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,l),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(1,0),!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(0,1),!1,null,l),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,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,3.5*c))];x>5*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,l));x>8*c&&p.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1,null,l));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,l));return p};ca.prototype.constraints=mxRectangleShape.prototype.constraints;ha.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)];ia.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,
+.5),!1,null,l));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,l));return p};ca.prototype.constraints=mxRectangleShape.prototype.constraints;ia.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)];ha.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)];Ba.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,
@@ -3119,13 +3120,13 @@ I){u=I.editorUi.editor.graph.getCellStyle(1==u.vertices.length&&0==u.edges.lengt
{val:"width",dispName:"Width"}]},{name:"noLabel",dispName:"Hide Label",type:"bool",defVal:!1},{name:"labelPadding",dispName:"Label Padding",type:"float",defVal:0},{name:"direction",dispName:"Direction",type:"enum",defVal:"east",enumList:[{val:"north",dispName:"North"},{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraint",dispName:"Constraint",type:"enum",defVal:"none",enumList:[{val:"none",dispName:"None"},{val:"north",dispName:"North"},
{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraintRotation",dispName:"Rotate Constraint",type:"bool",defVal:!1},{name:"connectable",dispName:"Connectable",type:"bool",getDefaultValue:function(u,I){return I.editorUi.editor.graph.isCellConnectable(0<u.vertices.length&&0==u.edges.length?u.vertices[0]:null)},isVisible:function(u,I){return 0<u.vertices.length&&0==u.edges.length}},{name:"allowArrows",dispName:"Allow Arrows",type:"bool",defVal:!0},
{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"perimeter",dispName:"Perimeter",defVal:"none",type:"enum",enumList:[{val:"none",dispName:"None"},{val:"rectanglePerimeter",dispName:"Rectangle"},{val:"ellipsePerimeter",dispName:"Ellipse"},{val:"rhombusPerimeter",dispName:"Rhombus"},{val:"trianglePerimeter",dispName:"Triangle"},{val:"hexagonPerimeter2",dispName:"Hexagon"},{val:"lifelinePerimeter",dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",
-dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},
-{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(u,I){u=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;I=I.editorUi.editor.graph;return null!=u&&(I.isSwimlane(u)||0<I.model.getChildCount(u))},isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(u,I){var N=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;I=I.editorUi.editor.graph;return null!=N&&(I.isContainer(N)&&
-"0"!=u.style.collapsible||!I.isContainer(N)&&"1"==u.style.collapsible)},isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length&&!I.editorUi.editor.graph.isSwimlane(u.vertices[0])&&null==mxUtils.getValue(u.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,
-isVisible:function(u,I){I=I.editorUi.editor.graph.model;return 0<u.vertices.length?I.isVertex(I.getParent(u.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(u,I){u=0<u.vertices.length?
-I.editorUi.editor.graph.getCellGeometry(u.vertices[0]):null;return null!=u&&!u.relative}},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",
-type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(u,I){var N=mxUtils.getValue(u.style,mxConstants.STYLE_FILLCOLOR,null);return I.editorUi.editor.graph.isSwimlane(u.vertices[0])||null==N||N==mxConstants.NONE||0==mxUtils.getValue(u.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(u.style,mxConstants.STYLE_OPACITY,100)||null!=u.style.pointerEvents}},{name:"moveCells",
-dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(u,I){return 0<u.vertices.length&&I.editorUi.editor.graph.isContainer(u.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Style to be used for objects not in the CSV. If this is - then such objects are ignored,\n## else they are created using this as their style, eg. whiteSpace=wrap;html=1;\n#\n# unknownStyle: -\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Collapsed state for vertices. Possible values are true or false. Default is false.\n#\n# collapsed: false\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle, orgchart or a JSON string as used in\n## Layout, Apply. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
+dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(u,
+I){u=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;I=I.editorUi.editor.graph;return null!=u&&(I.isSwimlane(u)||0<I.model.getChildCount(u))},isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(u,I){var N=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;I=I.editorUi.editor.graph;return null!=N&&(I.isContainer(N)&&"0"!=u.style.collapsible||!I.isContainer(N)&&"1"==u.style.collapsible)},
+isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length&&!I.editorUi.editor.graph.isSwimlane(u.vertices[0])&&null==mxUtils.getValue(u.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(u,I){I=I.editorUi.editor.graph.model;return 0<u.vertices.length?
+I.isVertex(I.getParent(u.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(u,I){u=0<u.vertices.length?I.editorUi.editor.graph.getCellGeometry(u.vertices[0]):null;return null!=u&&!u.relative}},
+{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"fixedWidth",dispName:"Fixed Width",type:"bool",defVal:!1},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},
+{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(u,I){var N=mxUtils.getValue(u.style,mxConstants.STYLE_FILLCOLOR,null);return I.editorUi.editor.graph.isSwimlane(u.vertices[0])||null==N||N==mxConstants.NONE||0==mxUtils.getValue(u.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(u.style,mxConstants.STYLE_OPACITY,100)||
+null!=u.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(u,I){return 0<u.vertices.length&&I.editorUi.editor.graph.isContainer(u.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Style to be used for objects not in the CSV. If this is - then such objects are ignored,\n## else they are created using this as their style, eg. whiteSpace=wrap;html=1;\n#\n# unknownStyle: -\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Collapsed state for vertices. Possible values are true or false. Default is false.\n#\n# collapsed: false\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle, orgchart or a JSON string as used in\n## Layout, Apply. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
Editor.createRoughCanvas=function(u){var I=rough.canvas({getContext:function(){return u}});I.draw=function(N){var W=N.sets||[];N=N.options||this.getDefaultOptions();for(var T=0;T<W.length;T++){var Q=W[T];switch(Q.type){case "path":null!=N.stroke&&this._drawToContext(u,Q,N);break;case "fillPath":this._drawToContext(u,Q,N);break;case "fillSketch":this.fillSketch(u,Q,N)}}};I.fillSketch=function(N,W,T){var Q=u.state.strokeColor,Z=u.state.strokeWidth,na=u.state.strokeAlpha,va=u.state.dashed,Ba=T.fillWeight;
0>Ba&&(Ba=T.strokeWidth/2);u.setStrokeAlpha(u.state.fillAlpha);u.setStrokeColor(T.fill||"");u.setStrokeWidth(Ba);u.setDashed(!1);this._drawToContext(N,W,T);u.setDashed(va);u.setStrokeWidth(Z);u.setStrokeColor(Q);u.setStrokeAlpha(na)};I._drawToContext=function(N,W,T){N.begin();for(var Q=0;Q<W.ops.length;Q++){var Z=W.ops[Q],na=Z.data;switch(Z.op){case "move":N.moveTo(na[0],na[1]);break;case "bcurveTo":N.curveTo(na[0],na[1],na[2],na[3],na[4],na[5]);break;case "lineTo":N.lineTo(na[0],na[1])}}N.end();
"fillPath"===W.type&&T.filled?N.fill():N.stroke()};return I};(function(){function u(Q,Z,na){this.canvas=Q;this.rc=Z;this.shape=na;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,u.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,u.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,u.prototype.rect);this.originalRoundrect=this.canvas.roundrect;
@@ -3195,9 +3196,9 @@ mxUtils.bind(this,function(I){this.resolvedFontCss=I;null!=u&&u()})):null!=u&&u(
Q=0;Q<I.length;Q++)mxUtils.bind(this,function(Z,na){Graph.isCssFontUrl(na)?null==this.cachedGoogleFonts[na]?(W++,this.loadUrl(na,mxUtils.bind(this,function(va){this.cachedGoogleFonts[na]=va;N.push(va+"\n");W--;T()}),mxUtils.bind(this,function(va){W--;N.push("@import url("+na+");\n");T()}))):N.push(this.cachedGoogleFonts[na]+"\n"):N.push('@font-face {font-family: "'+Z+'";src: url("'+na+'")}\n')})(I[Q].name,I[Q].url);T()}else u()};Editor.prototype.addMathCss=function(u){u=u.getElementsByTagName("defs");
if(null!=u&&0<u.length)for(var I=document.getElementsByTagName("style"),N=0;N<I.length;N++){var W=mxUtils.getTextContent(I[N]);0>W.indexOf("mxPageSelector")&&0<W.indexOf("MathJax")&&u[0].appendChild(I[N].cloneNode(!0))}};Editor.prototype.addFontCss=function(u,I){I=null!=I?I:this.absoluteCssFonts(this.fontCss);if(null!=I){var N=u.getElementsByTagName("defs"),W=u.ownerDocument;0==N.length?(N=null!=W.createElementNS?W.createElementNS(mxConstants.NS_SVG,"defs"):W.createElement("defs"),null!=u.firstChild?
u.insertBefore(N,u.firstChild):u.appendChild(N)):N=N[0];u=null!=W.createElementNS?W.createElementNS(mxConstants.NS_SVG,"style"):W.createElement("style");u.setAttribute("type","text/css");mxUtils.setTextContent(u,I);N.appendChild(u)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(u,I,N){var W=mxClient.IS_FF?8192:16384;return Math.min(N,Math.min(W/u,W/I))};Editor.prototype.exportToCanvas=function(u,I,N,
-W,T,Q,Z,na,va,Ba,sa,Da,Aa,za,Ca,Qa,Za,cb){try{Q=null!=Q?Q:!0;Z=null!=Z?Z:!0;Da=null!=Da?Da:this.graph;Aa=null!=Aa?Aa:0;var Ja=va?null:Da.background;Ja==mxConstants.NONE&&(Ja=null);null==Ja&&(Ja=W);null==Ja&&0==va&&(Ja=Qa?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(Da.getSvg(null,null,Aa,za,null,Z,null,null,null,Ba,null,Qa,Za,cb),mxUtils.bind(this,function(Ua){try{var $a=new Image;$a.onload=mxUtils.bind(this,function(){try{var L=function(){mxClient.IS_SF?window.setTimeout(function(){ha.drawImage($a,
-0,0);u(M,Ua)},0):(ha.drawImage($a,0,0),u(M,Ua))},M=document.createElement("canvas"),S=parseInt(Ua.getAttribute("width")),ca=parseInt(Ua.getAttribute("height"));na=null!=na?na:1;null!=I&&(na=Q?Math.min(1,Math.min(3*I/(4*ca),I/S)):I/S);na=this.getMaxCanvasScale(S,ca,na);S=Math.ceil(na*S);ca=Math.ceil(na*ca);M.setAttribute("width",S);M.setAttribute("height",ca);var ha=M.getContext("2d");null!=Ja&&(ha.beginPath(),ha.rect(0,0,S,ca),ha.fillStyle=Ja,ha.fill());1!=na&&ha.scale(na,na);if(Ca){var oa=Da.view,
-ra=oa.scale;oa.scale=1;var qa=btoa(unescape(encodeURIComponent(oa.createSvgGrid(oa.gridColor))));oa.scale=ra;qa="data:image/svg+xml;base64,"+qa;var xa=Da.gridSize*oa.gridSteps*na,Ga=Da.getGraphBounds(),La=oa.translate.x*ra,Pa=oa.translate.y*ra,Oa=La+(Ga.x-La)/ra-Aa,Ta=Pa+(Ga.y-Pa)/ra-Aa,Ma=new Image;Ma.onload=function(){try{for(var ua=-Math.round(xa-mxUtils.mod((La-Oa)*na,xa)),ya=-Math.round(xa-mxUtils.mod((Pa-Ta)*na,xa));ua<S;ua+=xa)for(var Na=ya;Na<ca;Na+=xa)ha.drawImage(Ma,ua/na,Na/na);L()}catch(Fa){null!=
+W,T,Q,Z,na,va,Ba,sa,Da,Aa,za,Ca,Qa,Za,cb){try{Q=null!=Q?Q:!0;Z=null!=Z?Z:!0;Da=null!=Da?Da:this.graph;Aa=null!=Aa?Aa:0;var Ja=va?null:Da.background;Ja==mxConstants.NONE&&(Ja=null);null==Ja&&(Ja=W);null==Ja&&0==va&&(Ja=Qa?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(Da.getSvg(null,null,Aa,za,null,Z,null,null,null,Ba,null,Qa,Za,cb),mxUtils.bind(this,function(Ua){try{var $a=new Image;$a.onload=mxUtils.bind(this,function(){try{var L=function(){mxClient.IS_SF?window.setTimeout(function(){ia.drawImage($a,
+0,0);u(M,Ua)},0):(ia.drawImage($a,0,0),u(M,Ua))},M=document.createElement("canvas"),S=parseInt(Ua.getAttribute("width")),ca=parseInt(Ua.getAttribute("height"));na=null!=na?na:1;null!=I&&(na=Q?Math.min(1,Math.min(3*I/(4*ca),I/S)):I/S);na=this.getMaxCanvasScale(S,ca,na);S=Math.ceil(na*S);ca=Math.ceil(na*ca);M.setAttribute("width",S);M.setAttribute("height",ca);var ia=M.getContext("2d");null!=Ja&&(ia.beginPath(),ia.rect(0,0,S,ca),ia.fillStyle=Ja,ia.fill());1!=na&&ia.scale(na,na);if(Ca){var oa=Da.view,
+ra=oa.scale;oa.scale=1;var qa=btoa(unescape(encodeURIComponent(oa.createSvgGrid(oa.gridColor))));oa.scale=ra;qa="data:image/svg+xml;base64,"+qa;var xa=Da.gridSize*oa.gridSteps*na,Ga=Da.getGraphBounds(),La=oa.translate.x*ra,Pa=oa.translate.y*ra,Oa=La+(Ga.x-La)/ra-Aa,Ta=Pa+(Ga.y-Pa)/ra-Aa,Ma=new Image;Ma.onload=function(){try{for(var ua=-Math.round(xa-mxUtils.mod((La-Oa)*na,xa)),ya=-Math.round(xa-mxUtils.mod((Pa-Ta)*na,xa));ua<S;ua+=xa)for(var Na=ya;Na<ca;Na+=xa)ia.drawImage(Ma,ua/na,Na/na);L()}catch(Fa){null!=
T&&T(Fa)}};Ma.onerror=function(ua){null!=T&&T(ua)};Ma.src=qa}else L()}catch(ua){null!=T&&T(ua)}});$a.onerror=function(L){null!=T&&T(L)};Ba&&this.graph.addSvgShadow(Ua);this.graph.mathEnabled&&this.addMathCss(Ua);var z=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(Ua,this.resolvedFontCss),$a.src=Editor.createSvgDataUri(mxUtils.getXml(Ua))}catch(L){null!=T&&T(L)}});this.embedExtFonts(mxUtils.bind(this,function(L){try{null!=L&&this.addFontCss(Ua,L),this.loadFonts(z)}catch(M){null!=
T&&T(M)}}))}catch(L){null!=T&&T(L)}}),N,sa)}catch(Ua){null!=T&&T(Ua)}};Editor.crcTable=[];for(var D=0;256>D;D++)for(var t=D,E=0;8>E;E++)t=1==(t&1)?3988292384^t>>>1:t>>>1,Editor.crcTable[D]=t;Editor.updateCRC=function(u,I,N,W){for(var T=0;T<W;T++)u=Editor.crcTable[(u^I.charCodeAt(N+T))&255]^u>>>8;return u};Editor.crc32=function(u){for(var I=-1,N=0;N<u.length;N++)I=I>>>8^Editor.crcTable[(I^u.charCodeAt(N))&255];return(I^-1)>>>0};Editor.writeGraphModelToPng=function(u,I,N,W,T){function Q(sa,Da){var Aa=
va;va+=Da;return sa.substring(Aa,va)}function Z(sa){sa=Q(sa,4);return sa.charCodeAt(3)+(sa.charCodeAt(2)<<8)+(sa.charCodeAt(1)<<16)+(sa.charCodeAt(0)<<24)}function na(sa){return String.fromCharCode(sa>>24&255,sa>>16&255,sa>>8&255,sa&255)}u=u.substring(u.indexOf(",")+1);u=window.atob?atob(u):Base64.decode(u,!0);var va=0;if(Q(u,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=T&&T();else if(Q(u,4),"IHDR"!=Q(u,4))null!=T&&T();else{Q(u,17);T=u.substring(0,va);do{var Ba=Z(u);if("IDAT"==
@@ -3233,29 +3234,29 @@ stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradien
{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(u,I,N){if(null!=I){var W=function(Q){if(null!=Q)if(N)for(var Z=0;Z<Q.length;Z++)I[Q[Z].name]=Q[Z];else for(var na in I){var va=!1;for(Z=0;Z<Q.length;Z++)if(Q[Z].name==na&&Q[Z].type==I[na].type){va=!0;break}va||delete I[na]}},
T=this.editorUi.editor.graph.view.getState(u);null!=T&&null!=T.shape&&(T.shape.commonCustomPropAdded||(T.shape.commonCustomPropAdded=!0,T.shape.customProperties=T.shape.customProperties||[],T.cell.vertex?Array.prototype.push.apply(T.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(T.shape.customProperties,Editor.commonEdgeProperties)),W(T.shape.customProperties));u=u.getAttribute("customProperties");if(null!=u)try{W(JSON.parse(u))}catch(Q){}}};var F=StyleFormatPanel.prototype.init;
StyleFormatPanel.prototype.init=function(){var u=this.editorUi.getSelectionState();"image"!=u.style.shape&&!u.containsLabel&&0<u.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));F.apply(this,arguments);if(Editor.enableCustomProperties){for(var I={},N=u.vertices,W=u.edges,T=0;T<N.length;T++)this.findCommonProperties(N[T],I,0==T);for(T=0;T<W.length;T++)this.findCommonProperties(W[T],I,0==N.length&&0==T);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(I).length&&
-this.container.appendChild(this.addProperties(this.createPanel(),I,u))}};var C=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(u){this.addActions(u,["copyStyle","pasteStyle"]);return C.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(u,I,N){function W(ha,oa,ra,qa){Da.getModel().beginUpdate();try{var xa=[],Ga=[];if(null!=ra.index){for(var La=[],Pa=ra.parentRow.nextSibling;Pa&&Pa.getAttribute("data-pName")==
-ha;)La.push(Pa.getAttribute("data-pValue")),Pa=Pa.nextSibling;ra.index<La.length?null!=qa?La.splice(qa,1):La[ra.index]=oa:La.push(oa);null!=ra.size&&La.length>ra.size&&(La=La.slice(0,ra.size));oa=La.join(",");null!=ra.countProperty&&(Da.setCellStyles(ra.countProperty,La.length,Da.getSelectionCells()),xa.push(ra.countProperty),Ga.push(La.length))}Da.setCellStyles(ha,oa,Da.getSelectionCells());xa.push(ha);Ga.push(oa);if(null!=ra.dependentProps)for(ha=0;ha<ra.dependentProps.length;ha++){var Oa=ra.dependentPropsDefVal[ha],
-Ta=ra.dependentPropsVals[ha];if(Ta.length>oa)Ta=Ta.slice(0,oa);else for(var Ma=Ta.length;Ma<oa;Ma++)Ta.push(Oa);Ta=Ta.join(",");Da.setCellStyles(ra.dependentProps[ha],Ta,Da.getSelectionCells());xa.push(ra.dependentProps[ha]);Ga.push(Ta)}if("function"==typeof ra.onChange)ra.onChange(Da,oa);sa.editorUi.fireEvent(new mxEventObject("styleChanged","keys",xa,"values",Ga,"cells",Da.getSelectionCells()))}finally{Da.getModel().endUpdate()}}function T(ha,oa,ra){var qa=mxUtils.getOffset(u,!0),xa=mxUtils.getOffset(ha,
-!0);oa.style.position="absolute";oa.style.left=xa.x-qa.x+"px";oa.style.top=xa.y-qa.y+"px";oa.style.width=ha.offsetWidth+"px";oa.style.height=ha.offsetHeight-(ra?4:0)+"px";oa.style.zIndex=5}function Q(ha,oa,ra){var qa=document.createElement("div");qa.style.width="32px";qa.style.height="4px";qa.style.margin="2px";qa.style.border="1px solid black";qa.style.background=oa&&"none"!=oa?oa:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(sa,function(xa){this.editorUi.pickColor(oa,
-function(Ga){qa.style.background="none"==Ga?"url('"+Dialog.prototype.noColorImage+"')":Ga;W(ha,Ga,ra)});mxEvent.consume(xa)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(qa);return btn}function Z(ha,oa,ra,qa,xa,Ga,La){null!=oa&&(oa=oa.split(","),Aa.push({name:ha,values:oa,type:ra,defVal:qa,countProperty:xa,parentRow:Ga,isDeletable:!0,flipBkg:La}));btn=mxUtils.button("+",mxUtils.bind(sa,function(Pa){for(var Oa=Ga,Ta=0;null!=Oa.nextSibling;)if(Oa.nextSibling.getAttribute("data-pName")==
-ha)Oa=Oa.nextSibling,Ta++;else break;var Ma={type:ra,parentRow:Ga,index:Ta,isDeletable:!0,defVal:qa,countProperty:xa};Ta=Ba(ha,"",Ma,0==Ta%2,La);W(ha,qa,Ma);Oa.parentNode.insertBefore(Ta,Oa.nextSibling);mxEvent.consume(Pa)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function na(ha,oa,ra,qa,xa,Ga,La){if(0<xa){var Pa=Array(xa);oa=null!=oa?oa.split(","):[];for(var Oa=0;Oa<xa;Oa++)Pa[Oa]=null!=oa[Oa]?oa[Oa]:null!=qa?qa:"";Aa.push({name:ha,values:Pa,type:ra,
-defVal:qa,parentRow:Ga,flipBkg:La,size:xa})}return document.createElement("div")}function va(ha,oa,ra){var qa=document.createElement("input");qa.type="checkbox";qa.checked="1"==oa;mxEvent.addListener(qa,"change",function(){W(ha,qa.checked?"1":"0",ra)});return qa}function Ba(ha,oa,ra,qa,xa){var Ga=ra.dispName,La=ra.type,Pa=document.createElement("tr");Pa.className="gePropRow"+(xa?"Dark":"")+(qa?"Alt":"")+" gePropNonHeaderRow";Pa.setAttribute("data-pName",ha);Pa.setAttribute("data-pValue",oa);qa=!1;
-null!=ra.index&&(Pa.setAttribute("data-index",ra.index),Ga=(null!=Ga?Ga:"")+"["+ra.index+"]",qa=!0);var Oa=document.createElement("td");Oa.className="gePropRowCell";Ga=mxResources.get(Ga,null,Ga);mxUtils.write(Oa,Ga);Oa.setAttribute("title",Ga);qa&&(Oa.style.textAlign="right");Pa.appendChild(Oa);Oa=document.createElement("td");Oa.className="gePropRowCell";if("color"==La)Oa.appendChild(Q(ha,oa,ra));else if("bool"==La||"boolean"==La)Oa.appendChild(va(ha,oa,ra));else if("enum"==La){var Ta=ra.enumList;
+this.container.appendChild(this.addProperties(this.createPanel(),I,u))}};var C=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(u){this.addActions(u,["copyStyle","pasteStyle"]);return C.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(u,I,N){function W(ia,oa,ra,qa){Da.getModel().beginUpdate();try{var xa=[],Ga=[];if(null!=ra.index){for(var La=[],Pa=ra.parentRow.nextSibling;Pa&&Pa.getAttribute("data-pName")==
+ia;)La.push(Pa.getAttribute("data-pValue")),Pa=Pa.nextSibling;ra.index<La.length?null!=qa?La.splice(qa,1):La[ra.index]=oa:La.push(oa);null!=ra.size&&La.length>ra.size&&(La=La.slice(0,ra.size));oa=La.join(",");null!=ra.countProperty&&(Da.setCellStyles(ra.countProperty,La.length,Da.getSelectionCells()),xa.push(ra.countProperty),Ga.push(La.length))}Da.setCellStyles(ia,oa,Da.getSelectionCells());xa.push(ia);Ga.push(oa);if(null!=ra.dependentProps)for(ia=0;ia<ra.dependentProps.length;ia++){var Oa=ra.dependentPropsDefVal[ia],
+Ta=ra.dependentPropsVals[ia];if(Ta.length>oa)Ta=Ta.slice(0,oa);else for(var Ma=Ta.length;Ma<oa;Ma++)Ta.push(Oa);Ta=Ta.join(",");Da.setCellStyles(ra.dependentProps[ia],Ta,Da.getSelectionCells());xa.push(ra.dependentProps[ia]);Ga.push(Ta)}if("function"==typeof ra.onChange)ra.onChange(Da,oa);sa.editorUi.fireEvent(new mxEventObject("styleChanged","keys",xa,"values",Ga,"cells",Da.getSelectionCells()))}finally{Da.getModel().endUpdate()}}function T(ia,oa,ra){var qa=mxUtils.getOffset(u,!0),xa=mxUtils.getOffset(ia,
+!0);oa.style.position="absolute";oa.style.left=xa.x-qa.x+"px";oa.style.top=xa.y-qa.y+"px";oa.style.width=ia.offsetWidth+"px";oa.style.height=ia.offsetHeight-(ra?4:0)+"px";oa.style.zIndex=5}function Q(ia,oa,ra){var qa=document.createElement("div");qa.style.width="32px";qa.style.height="4px";qa.style.margin="2px";qa.style.border="1px solid black";qa.style.background=oa&&"none"!=oa?oa:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(sa,function(xa){this.editorUi.pickColor(oa,
+function(Ga){qa.style.background="none"==Ga?"url('"+Dialog.prototype.noColorImage+"')":Ga;W(ia,Ga,ra)});mxEvent.consume(xa)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(qa);return btn}function Z(ia,oa,ra,qa,xa,Ga,La){null!=oa&&(oa=oa.split(","),Aa.push({name:ia,values:oa,type:ra,defVal:qa,countProperty:xa,parentRow:Ga,isDeletable:!0,flipBkg:La}));btn=mxUtils.button("+",mxUtils.bind(sa,function(Pa){for(var Oa=Ga,Ta=0;null!=Oa.nextSibling;)if(Oa.nextSibling.getAttribute("data-pName")==
+ia)Oa=Oa.nextSibling,Ta++;else break;var Ma={type:ra,parentRow:Ga,index:Ta,isDeletable:!0,defVal:qa,countProperty:xa};Ta=Ba(ia,"",Ma,0==Ta%2,La);W(ia,qa,Ma);Oa.parentNode.insertBefore(Ta,Oa.nextSibling);mxEvent.consume(Pa)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function na(ia,oa,ra,qa,xa,Ga,La){if(0<xa){var Pa=Array(xa);oa=null!=oa?oa.split(","):[];for(var Oa=0;Oa<xa;Oa++)Pa[Oa]=null!=oa[Oa]?oa[Oa]:null!=qa?qa:"";Aa.push({name:ia,values:Pa,type:ra,
+defVal:qa,parentRow:Ga,flipBkg:La,size:xa})}return document.createElement("div")}function va(ia,oa,ra){var qa=document.createElement("input");qa.type="checkbox";qa.checked="1"==oa;mxEvent.addListener(qa,"change",function(){W(ia,qa.checked?"1":"0",ra)});return qa}function Ba(ia,oa,ra,qa,xa){var Ga=ra.dispName,La=ra.type,Pa=document.createElement("tr");Pa.className="gePropRow"+(xa?"Dark":"")+(qa?"Alt":"")+" gePropNonHeaderRow";Pa.setAttribute("data-pName",ia);Pa.setAttribute("data-pValue",oa);qa=!1;
+null!=ra.index&&(Pa.setAttribute("data-index",ra.index),Ga=(null!=Ga?Ga:"")+"["+ra.index+"]",qa=!0);var Oa=document.createElement("td");Oa.className="gePropRowCell";Ga=mxResources.get(Ga,null,Ga);mxUtils.write(Oa,Ga);Oa.setAttribute("title",Ga);qa&&(Oa.style.textAlign="right");Pa.appendChild(Oa);Oa=document.createElement("td");Oa.className="gePropRowCell";if("color"==La)Oa.appendChild(Q(ia,oa,ra));else if("bool"==La||"boolean"==La)Oa.appendChild(va(ia,oa,ra));else if("enum"==La){var Ta=ra.enumList;
for(xa=0;xa<Ta.length;xa++)if(Ga=Ta[xa],Ga.val==oa){mxUtils.write(Oa,mxResources.get(Ga.dispName,null,Ga.dispName));break}mxEvent.addListener(Oa,"click",mxUtils.bind(sa,function(){var Ma=document.createElement("select");T(Oa,Ma);for(var ua=0;ua<Ta.length;ua++){var ya=Ta[ua],Na=document.createElement("option");Na.value=mxUtils.htmlEntities(ya.val);mxUtils.write(Na,mxResources.get(ya.dispName,null,ya.dispName));Ma.appendChild(Na)}Ma.value=oa;u.appendChild(Ma);mxEvent.addListener(Ma,"change",function(){var Fa=
-mxUtils.htmlEntities(Ma.value);W(ha,Fa,ra)});Ma.focus();mxEvent.addListener(Ma,"blur",function(){u.removeChild(Ma)})}))}else"dynamicArr"==La?Oa.appendChild(Z(ha,oa,ra.subType,ra.subDefVal,ra.countProperty,Pa,xa)):"staticArr"==La?Oa.appendChild(na(ha,oa,ra.subType,ra.subDefVal,ra.size,Pa,xa)):"readOnly"==La?(xa=document.createElement("input"),xa.setAttribute("readonly",""),xa.value=oa,xa.style.width="96px",xa.style.borderWidth="0px",Oa.appendChild(xa)):(Oa.innerHTML=mxUtils.htmlEntities(decodeURIComponent(oa)),
-mxEvent.addListener(Oa,"click",mxUtils.bind(sa,function(){function Ma(){var ya=ua.value;ya=0==ya.length&&"string"!=La?0:ya;ra.allowAuto&&(null!=ya.trim&&"auto"==ya.trim().toLowerCase()?(ya="auto",La="string"):(ya=parseFloat(ya),ya=isNaN(ya)?0:ya));null!=ra.min&&ya<ra.min?ya=ra.min:null!=ra.max&&ya>ra.max&&(ya=ra.max);ya=encodeURIComponent(("int"==La?parseInt(ya):ya)+"");W(ha,ya,ra)}var ua=document.createElement("input");T(Oa,ua,!0);ua.value=decodeURIComponent(oa);ua.className="gePropEditor";"int"!=
-La&&"float"!=La||ra.allowAuto||(ua.type="number",ua.step="int"==La?"1":"any",null!=ra.min&&(ua.min=parseFloat(ra.min)),null!=ra.max&&(ua.max=parseFloat(ra.max)));u.appendChild(ua);mxEvent.addListener(ua,"keypress",function(ya){13==ya.keyCode&&Ma()});ua.focus();mxEvent.addListener(ua,"blur",function(){Ma()})})));ra.isDeletable&&(xa=mxUtils.button("-",mxUtils.bind(sa,function(Ma){W(ha,"",ra,ra.index);mxEvent.consume(Ma)})),xa.style.height="16px",xa.style.width="25px",xa.style.float="right",xa.className=
+mxUtils.htmlEntities(Ma.value);W(ia,Fa,ra)});Ma.focus();mxEvent.addListener(Ma,"blur",function(){u.removeChild(Ma)})}))}else"dynamicArr"==La?Oa.appendChild(Z(ia,oa,ra.subType,ra.subDefVal,ra.countProperty,Pa,xa)):"staticArr"==La?Oa.appendChild(na(ia,oa,ra.subType,ra.subDefVal,ra.size,Pa,xa)):"readOnly"==La?(xa=document.createElement("input"),xa.setAttribute("readonly",""),xa.value=oa,xa.style.width="96px",xa.style.borderWidth="0px",Oa.appendChild(xa)):(Oa.innerHTML=mxUtils.htmlEntities(decodeURIComponent(oa)),
+mxEvent.addListener(Oa,"click",mxUtils.bind(sa,function(){function Ma(){var ya=ua.value;ya=0==ya.length&&"string"!=La?0:ya;ra.allowAuto&&(null!=ya.trim&&"auto"==ya.trim().toLowerCase()?(ya="auto",La="string"):(ya=parseFloat(ya),ya=isNaN(ya)?0:ya));null!=ra.min&&ya<ra.min?ya=ra.min:null!=ra.max&&ya>ra.max&&(ya=ra.max);ya=encodeURIComponent(("int"==La?parseInt(ya):ya)+"");W(ia,ya,ra)}var ua=document.createElement("input");T(Oa,ua,!0);ua.value=decodeURIComponent(oa);ua.className="gePropEditor";"int"!=
+La&&"float"!=La||ra.allowAuto||(ua.type="number",ua.step="int"==La?"1":"any",null!=ra.min&&(ua.min=parseFloat(ra.min)),null!=ra.max&&(ua.max=parseFloat(ra.max)));u.appendChild(ua);mxEvent.addListener(ua,"keypress",function(ya){13==ya.keyCode&&Ma()});ua.focus();mxEvent.addListener(ua,"blur",function(){Ma()})})));ra.isDeletable&&(xa=mxUtils.button("-",mxUtils.bind(sa,function(Ma){W(ia,"",ra,ra.index);mxEvent.consume(Ma)})),xa.style.height="16px",xa.style.width="25px",xa.style.float="right",xa.className=
"geColorBtn",Oa.appendChild(xa));Pa.appendChild(Oa);return Pa}var sa=this,Da=this.editorUi.editor.graph,Aa=[];u.style.position="relative";u.style.padding="0";var za=document.createElement("table");za.className="geProperties";za.style.whiteSpace="nowrap";za.style.width="100%";var Ca=document.createElement("tr");Ca.className="gePropHeader";var Qa=document.createElement("th");Qa.className="gePropHeaderCell";var Za=document.createElement("img");Za.src=Sidebar.prototype.expandedImage;Za.style.verticalAlign=
-"middle";Qa.appendChild(Za);mxUtils.write(Qa,mxResources.get("property"));Ca.style.cursor="pointer";var cb=function(){var ha=za.querySelectorAll(".gePropNonHeaderRow");if(sa.editorUi.propertiesCollapsed){Za.src=Sidebar.prototype.collapsedImage;var oa="none";for(var ra=u.childNodes.length-1;0<=ra;ra--)try{var qa=u.childNodes[ra],xa=qa.nodeName.toUpperCase();"INPUT"!=xa&&"SELECT"!=xa||u.removeChild(qa)}catch(Ga){}}else Za.src=Sidebar.prototype.expandedImage,oa="";for(ra=0;ra<ha.length;ra++)ha[ra].style.display=
+"middle";Qa.appendChild(Za);mxUtils.write(Qa,mxResources.get("property"));Ca.style.cursor="pointer";var cb=function(){var ia=za.querySelectorAll(".gePropNonHeaderRow");if(sa.editorUi.propertiesCollapsed){Za.src=Sidebar.prototype.collapsedImage;var oa="none";for(var ra=u.childNodes.length-1;0<=ra;ra--)try{var qa=u.childNodes[ra],xa=qa.nodeName.toUpperCase();"INPUT"!=xa&&"SELECT"!=xa||u.removeChild(qa)}catch(Ga){}}else Za.src=Sidebar.prototype.expandedImage,oa="";for(ra=0;ra<ia.length;ra++)ia[ra].style.display=
oa};mxEvent.addListener(Ca,"click",function(){sa.editorUi.propertiesCollapsed=!sa.editorUi.propertiesCollapsed;cb()});Ca.appendChild(Qa);Qa=document.createElement("th");Qa.className="gePropHeaderCell";Qa.innerHTML=mxResources.get("value");Ca.appendChild(Qa);za.appendChild(Ca);var Ja=!1,Ua=!1;Ca=null;1==N.vertices.length&&0==N.edges.length?Ca=N.vertices[0].id:0==N.vertices.length&&1==N.edges.length&&(Ca=N.edges[0].id);null!=Ca&&za.appendChild(Ba("id",mxUtils.htmlEntities(Ca),{dispName:"ID",type:"readOnly"},
!0,!1));for(var $a in I)if(Ca=I[$a],"function"!=typeof Ca.isVisible||Ca.isVisible(N,this)){var z=null!=N.style[$a]?mxUtils.htmlEntities(N.style[$a]+""):null!=Ca.getDefaultValue?Ca.getDefaultValue(N,this):Ca.defVal;if("separator"==Ca.type)Ua=!Ua;else{if("staticArr"==Ca.type)Ca.size=parseInt(N.style[Ca.sizeProperty]||I[Ca.sizeProperty].defVal)||0;else if(null!=Ca.dependentProps){var L=Ca.dependentProps,M=[],S=[];for(Qa=0;Qa<L.length;Qa++){var ca=N.style[L[Qa]];S.push(I[L[Qa]].subDefVal);M.push(null!=
ca?ca.split(","):[])}Ca.dependentPropsDefVal=S;Ca.dependentPropsVals=M}za.appendChild(Ba($a,z,Ca,Ja,Ua));Ja=!Ja}}for(Qa=0;Qa<Aa.length;Qa++)for(Ca=Aa[Qa],I=Ca.parentRow,N=0;N<Ca.values.length;N++)$a=Ba(Ca.name,Ca.values[N],{type:Ca.type,parentRow:Ca.parentRow,isDeletable:Ca.isDeletable,index:N,defVal:Ca.defVal,countProperty:Ca.countProperty,size:Ca.size},0==N%2,Ca.flipBkg),I.parentNode.insertBefore($a,I.nextSibling),I=$a;u.appendChild(za);cb();return u};StyleFormatPanel.prototype.addStyles=function(u){function I(Ca){mxEvent.addListener(Ca,
"mouseenter",function(){Ca.style.opacity="1"});mxEvent.addListener(Ca,"mouseleave",function(){Ca.style.opacity="0.5"})}var N=this.editorUi,W=N.editor.graph,T=document.createElement("div");T.style.whiteSpace="nowrap";T.style.paddingLeft="24px";T.style.paddingRight="20px";u.style.paddingLeft="16px";u.style.paddingBottom="6px";u.style.position="relative";u.appendChild(T);var Q="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),
Z=document.createElement("div");Z.style.whiteSpace="nowrap";Z.style.position="relative";Z.style.textAlign="center";Z.style.width="210px";for(var na=[],va=0;va<this.defaultColorSchemes.length;va++){var Ba=document.createElement("div");Ba.style.display="inline-block";Ba.style.width="6px";Ba.style.height="6px";Ba.style.marginLeft="4px";Ba.style.marginRight="3px";Ba.style.borderRadius="3px";Ba.style.cursor="pointer";Ba.style.background="transparent";Ba.style.border="1px solid #b5b6b7";mxUtils.bind(this,
function(Ca){mxEvent.addListener(Ba,"click",mxUtils.bind(this,function(){sa(Ca)}))})(va);na.push(Ba);Z.appendChild(Ba)}var sa=mxUtils.bind(this,function(Ca){null!=na[Ca]&&(null!=this.format.currentScheme&&null!=na[this.format.currentScheme]&&(na[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=Ca,Da(this.defaultColorSchemes[this.format.currentScheme]),na[this.format.currentScheme].style.background="#84d7ff")}),Da=mxUtils.bind(this,function(Ca){var Qa=mxUtils.bind(this,
-function(cb){var Ja=mxUtils.button("",mxUtils.bind(this,function(z){W.getModel().beginUpdate();try{for(var L=N.getSelectionState().cells,M=0;M<L.length;M++){for(var S=W.getModel().getStyle(L[M]),ca=0;ca<Q.length;ca++)S=mxUtils.removeStylename(S,Q[ca]);var ha=W.getModel().isVertex(L[M])?W.defaultVertexStyle:W.defaultEdgeStyle;null!=cb?(mxEvent.isShiftDown(z)||(S=""==cb.fill?mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,cb.fill||mxUtils.getValue(ha,
-mxConstants.STYLE_FILLCOLOR,null)),S=mxUtils.setStyle(S,mxConstants.STYLE_GRADIENTCOLOR,cb.gradient||mxUtils.getValue(ha,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(z)||mxClient.IS_MAC&&mxEvent.isMetaDown(z)||!W.getModel().isVertex(L[M])||(S=mxUtils.setStyle(S,mxConstants.STYLE_FONTCOLOR,cb.font||mxUtils.getValue(ha,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(z)||(S=""==cb.stroke?mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,
-cb.stroke||mxUtils.getValue(ha,mxConstants.STYLE_STROKECOLOR,null)))):(S=mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(ha,mxConstants.STYLE_FILLCOLOR,"#ffffff")),S=mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(ha,mxConstants.STYLE_STROKECOLOR,"#000000")),S=mxUtils.setStyle(S,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(ha,mxConstants.STYLE_GRADIENTCOLOR,null)),W.getModel().isVertex(L[M])&&(S=mxUtils.setStyle(S,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(ha,
+function(cb){var Ja=mxUtils.button("",mxUtils.bind(this,function(z){W.getModel().beginUpdate();try{for(var L=N.getSelectionState().cells,M=0;M<L.length;M++){for(var S=W.getModel().getStyle(L[M]),ca=0;ca<Q.length;ca++)S=mxUtils.removeStylename(S,Q[ca]);var ia=W.getModel().isVertex(L[M])?W.defaultVertexStyle:W.defaultEdgeStyle;null!=cb?(mxEvent.isShiftDown(z)||(S=""==cb.fill?mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,cb.fill||mxUtils.getValue(ia,
+mxConstants.STYLE_FILLCOLOR,null)),S=mxUtils.setStyle(S,mxConstants.STYLE_GRADIENTCOLOR,cb.gradient||mxUtils.getValue(ia,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(z)||mxClient.IS_MAC&&mxEvent.isMetaDown(z)||!W.getModel().isVertex(L[M])||(S=mxUtils.setStyle(S,mxConstants.STYLE_FONTCOLOR,cb.font||mxUtils.getValue(ia,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(z)||(S=""==cb.stroke?mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,
+cb.stroke||mxUtils.getValue(ia,mxConstants.STYLE_STROKECOLOR,null)))):(S=mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(ia,mxConstants.STYLE_FILLCOLOR,"#ffffff")),S=mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(ia,mxConstants.STYLE_STROKECOLOR,"#000000")),S=mxUtils.setStyle(S,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(ia,mxConstants.STYLE_GRADIENTCOLOR,null)),W.getModel().isVertex(L[M])&&(S=mxUtils.setStyle(S,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(ia,
mxConstants.STYLE_FONTCOLOR,null))));W.getModel().setStyle(L[M],S)}}finally{W.getModel().endUpdate()}}));Ja.className="geStyleButton";Ja.style.width="36px";Ja.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";Ja.style.margin="0px 6px 6px 0px";if(null!=cb){var Ua="1"==urlParams.sketch?"2px solid":"1px solid";null!=cb.gradient?mxClient.IS_IE&&10>document.documentMode?Ja.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+cb.fill+"', EndColorStr='"+cb.gradient+"', GradientType=0)":
Ja.style.backgroundImage="linear-gradient("+cb.fill+" 0px,"+cb.gradient+" 100%)":cb.fill==mxConstants.NONE?Ja.style.background="url('"+Dialog.prototype.noColorImage+"')":Ja.style.backgroundColor=""==cb.fill?mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):cb.fill||mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");Ja.style.border=cb.stroke==mxConstants.NONE?Ua+" transparent":
""==cb.stroke?Ua+" "+mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):Ua+" "+(cb.stroke||mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=cb.title&&Ja.setAttribute("title",cb.title)}else{Ua=mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff");var $a=mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");Ja.style.backgroundColor=
@@ -3275,9 +3276,9 @@ Q.marginBottom||0;Z.allowGaps=Q.allowGaps||0;Z.horizontal="1"==mxUtils.getValue(
Graph.processFontAttributes(sa)};var da=mxText.prototype.redraw;mxText.prototype.redraw=function(){da.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(u,I,N){function W(){for(var Ca=Z.getSelectionCells(),Qa=[],Za=0;Za<Ca.length;Za++)Z.isCellVisible(Ca[Za])&&Qa.push(Ca[Za]);Z.setSelectionCells(Qa)}function T(Ca){Z.setHiddenTags(Ca?[]:na.slice());W();Z.refresh()}function Q(Ca,Qa){Ba.innerText="";if(0<
Ca.length){var Za=document.createElement("table");Za.setAttribute("cellpadding","2");Za.style.boxSizing="border-box";Za.style.tableLayout="fixed";Za.style.width="100%";var cb=document.createElement("tbody");if(null!=Ca&&0<Ca.length)for(var Ja=0;Ja<Ca.length;Ja++)(function(Ua){var $a=0>mxUtils.indexOf(Z.hiddenTags,Ua),z=document.createElement("tr"),L=document.createElement("td");L.style.align="center";L.style.width="16px";var M=document.createElement("img");M.setAttribute("src",$a?Editor.visibleImage:
Editor.hiddenImage);M.setAttribute("title",mxResources.get($a?"hideIt":"show",[Ua]));mxUtils.setOpacity(M,$a?75:25);M.style.verticalAlign="middle";M.style.cursor="pointer";M.style.width="16px";if(I||Editor.isDarkMode())M.style.filter="invert(100%)";L.appendChild(M);mxEvent.addListener(M,"click",function(ca){mxEvent.isShiftDown(ca)?T(0<=mxUtils.indexOf(Z.hiddenTags,Ua)):(Z.toggleHiddenTag(Ua),W(),Z.refresh());mxEvent.consume(ca)});z.appendChild(L);L=document.createElement("td");L.style.overflow="hidden";
-L.style.whiteSpace="nowrap";L.style.textOverflow="ellipsis";L.style.verticalAlign="middle";L.style.cursor="pointer";L.setAttribute("title",Ua);a=document.createElement("a");mxUtils.write(a,Ua);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,$a?100:40);L.appendChild(a);mxEvent.addListener(L,"click",function(ca){if(mxEvent.isShiftDown(ca)){T(!0);var ha=Z.getCellsForTags([Ua],null,null,!0);Z.isEnabled()?Z.setSelectionCells(ha):Z.highlightCells(ha)}else if($a&&0<Z.hiddenTags.length)T(!0);
-else{ha=na.slice();var oa=mxUtils.indexOf(ha,Ua);ha.splice(oa,1);Z.setHiddenTags(ha);W();Z.refresh()}mxEvent.consume(ca)});z.appendChild(L);if(Z.isEnabled()){L=document.createElement("td");L.style.verticalAlign="middle";L.style.textAlign="center";L.style.width="18px";if(null==Qa){L.style.align="center";L.style.width="16px";M=document.createElement("img");M.setAttribute("src",Editor.crossImage);M.setAttribute("title",mxResources.get("removeIt",[Ua]));mxUtils.setOpacity(M,$a?75:25);M.style.verticalAlign=
-"middle";M.style.cursor="pointer";M.style.width="16px";if(I||Editor.isDarkMode())M.style.filter="invert(100%)";mxEvent.addListener(M,"click",function(ca){var ha=mxUtils.indexOf(na,Ua);0<=ha&&na.splice(ha,1);Z.removeTagsForCells(Z.model.getDescendants(Z.model.getRoot()),[Ua]);Z.refresh();mxEvent.consume(ca)});L.appendChild(M)}else{var S=document.createElement("input");S.setAttribute("type","checkbox");S.style.margin="0px";S.defaultChecked=null!=Qa&&0<=mxUtils.indexOf(Qa,Ua);S.checked=S.defaultChecked;
+L.style.whiteSpace="nowrap";L.style.textOverflow="ellipsis";L.style.verticalAlign="middle";L.style.cursor="pointer";L.setAttribute("title",Ua);a=document.createElement("a");mxUtils.write(a,Ua);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,$a?100:40);L.appendChild(a);mxEvent.addListener(L,"click",function(ca){if(mxEvent.isShiftDown(ca)){T(!0);var ia=Z.getCellsForTags([Ua],null,null,!0);Z.isEnabled()?Z.setSelectionCells(ia):Z.highlightCells(ia)}else if($a&&0<Z.hiddenTags.length)T(!0);
+else{ia=na.slice();var oa=mxUtils.indexOf(ia,Ua);ia.splice(oa,1);Z.setHiddenTags(ia);W();Z.refresh()}mxEvent.consume(ca)});z.appendChild(L);if(Z.isEnabled()){L=document.createElement("td");L.style.verticalAlign="middle";L.style.textAlign="center";L.style.width="18px";if(null==Qa){L.style.align="center";L.style.width="16px";M=document.createElement("img");M.setAttribute("src",Editor.crossImage);M.setAttribute("title",mxResources.get("removeIt",[Ua]));mxUtils.setOpacity(M,$a?75:25);M.style.verticalAlign=
+"middle";M.style.cursor="pointer";M.style.width="16px";if(I||Editor.isDarkMode())M.style.filter="invert(100%)";mxEvent.addListener(M,"click",function(ca){var ia=mxUtils.indexOf(na,Ua);0<=ia&&na.splice(ia,1);Z.removeTagsForCells(Z.model.getDescendants(Z.model.getRoot()),[Ua]);Z.refresh();mxEvent.consume(ca)});L.appendChild(M)}else{var S=document.createElement("input");S.setAttribute("type","checkbox");S.style.margin="0px";S.defaultChecked=null!=Qa&&0<=mxUtils.indexOf(Qa,Ua);S.checked=S.defaultChecked;
S.style.background="transparent";S.setAttribute("title",mxResources.get(S.defaultChecked?"removeIt":"add",[Ua]));mxEvent.addListener(S,"change",function(ca){S.checked?Z.addTagsForCells(Z.getSelectionCells(),[Ua]):Z.removeTagsForCells(Z.getSelectionCells(),[Ua]);mxEvent.consume(ca)});L.appendChild(S)}z.appendChild(L)}cb.appendChild(z)})(Ca[Ja]);Za.appendChild(cb);Ba.appendChild(Za)}}var Z=this,na=Z.hiddenTags.slice(),va=document.createElement("div");va.style.userSelect="none";va.style.overflow="hidden";
va.style.padding="10px";va.style.height="100%";var Ba=document.createElement("div");Ba.style.boxSizing="border-box";Ba.style.borderRadius="4px";Ba.style.userSelect="none";Ba.style.overflow="auto";Ba.style.position="absolute";Ba.style.left="10px";Ba.style.right="10px";Ba.style.top="10px";Ba.style.border=Z.isEnabled()?"1px solid #808080":"none";Ba.style.bottom=Z.isEnabled()?"48px":"10px";va.appendChild(Ba);var sa=mxUtils.button(mxResources.get("reset"),function(Ca){Z.setHiddenTags([]);mxEvent.isShiftDown(Ca)||
(na=Z.hiddenTags.slice());W();Z.refresh()});sa.setAttribute("title",mxResources.get("reset"));sa.className="geBtn";sa.style.margin="0 4px 0 0";var Da=mxUtils.button(mxResources.get("add"),function(){null!=N&&N(na,function(Ca){na=Ca;Aa()})});Da.setAttribute("title",mxResources.get("add"));Da.className="geBtn";Da.style.margin="0";Z.addListener(mxEvent.ROOT,function(){na=Z.hiddenTags.slice()});var Aa=mxUtils.bind(this,function(Ca,Qa){if(u()){Ca=Z.getAllTags();for(Qa=0;Qa<Ca.length;Qa++)0>mxUtils.indexOf(na,
@@ -3348,16 +3349,16 @@ Ba.setAttribute("name","pages-printdialog");Z.appendChild(Ba);I=document.createE
I+1;Da.value=va;Aa.value=va;break}Da.setAttribute("max",na);Aa.setAttribute("max",na);u.isPagesEnabled()?1<na&&(Q.appendChild(Z),sa.checked=!0):sa.checked=!0;mxUtils.br(Z);var za=document.createElement("input");za.setAttribute("value","all");za.setAttribute("type","radio");za.style.marginRight="8px";T.isSelectionEmpty()&&za.setAttribute("disabled","disabled");var Ca=document.createElement("div");Ca.style.marginBottom="10px";1==na?(za.setAttribute("type","checkbox"),za.style.marginBottom="12px",Ca.appendChild(za)):
(za.setAttribute("name","pages-printdialog"),za.style.marginBottom="8px",Z.appendChild(za));I=document.createElement("span");mxUtils.write(I,mxResources.get("selectionOnly"));za.parentNode.appendChild(I);1==na&&mxUtils.br(za.parentNode);var Qa=document.createElement("input");Qa.style.marginRight="8px";Qa.setAttribute("value","adjust");Qa.setAttribute("type","radio");Qa.setAttribute("name","printZoom");Ca.appendChild(Qa);I=document.createElement("span");mxUtils.write(I,mxResources.get("adjustTo"));
Ca.appendChild(I);var Za=document.createElement("input");Za.style.cssText="margin:0 8px 0 8px;";Za.setAttribute("value","100 %");Za.style.width="50px";Ca.appendChild(Za);mxEvent.addListener(Za,"focus",function(){Qa.checked=!0});Q.appendChild(Ca);Z=Z.cloneNode(!1);var cb=Qa.cloneNode(!0);cb.setAttribute("value","fit");Qa.setAttribute("checked","checked");I=document.createElement("div");I.style.cssText="display:inline-block;vertical-align:top;padding-top:2px;";I.appendChild(cb);Z.appendChild(I);Ca=
-document.createElement("table");Ca.style.display="inline-block";var Ja=document.createElement("tbody"),Ua=document.createElement("tr"),$a=Ua.cloneNode(!0),z=document.createElement("td"),L=z.cloneNode(!0),M=z.cloneNode(!0),S=z.cloneNode(!0),ca=z.cloneNode(!0),ha=z.cloneNode(!0);z.style.textAlign="right";S.style.textAlign="right";mxUtils.write(z,mxResources.get("fitTo"));var oa=document.createElement("input");oa.style.cssText="margin:0 8px 0 8px;";oa.setAttribute("value","1");oa.setAttribute("min",
-"1");oa.setAttribute("type","number");oa.style.width="40px";L.appendChild(oa);I=document.createElement("span");mxUtils.write(I,mxResources.get("fitToSheetsAcross"));M.appendChild(I);mxUtils.write(S,mxResources.get("fitToBy"));var ra=oa.cloneNode(!0);ca.appendChild(ra);mxEvent.addListener(oa,"focus",function(){cb.checked=!0});mxEvent.addListener(ra,"focus",function(){cb.checked=!0});I=document.createElement("span");mxUtils.write(I,mxResources.get("fitToSheetsDown"));ha.appendChild(I);Ua.appendChild(z);
-Ua.appendChild(L);Ua.appendChild(M);$a.appendChild(S);$a.appendChild(ca);$a.appendChild(ha);Ja.appendChild(Ua);Ja.appendChild($a);Ca.appendChild(Ja);Z.appendChild(Ca);Q.appendChild(Z);Z=document.createElement("div");I=document.createElement("div");I.style.fontWeight="bold";I.style.marginBottom="12px";mxUtils.write(I,mxResources.get("paperSize"));Z.appendChild(I);I=document.createElement("div");I.style.marginBottom="12px";var qa=PageSetupDialog.addPageFormatPanel(I,"printdialog",u.editor.graph.pageFormat||
+document.createElement("table");Ca.style.display="inline-block";var Ja=document.createElement("tbody"),Ua=document.createElement("tr"),$a=Ua.cloneNode(!0),z=document.createElement("td"),L=z.cloneNode(!0),M=z.cloneNode(!0),S=z.cloneNode(!0),ca=z.cloneNode(!0),ia=z.cloneNode(!0);z.style.textAlign="right";S.style.textAlign="right";mxUtils.write(z,mxResources.get("fitTo"));var oa=document.createElement("input");oa.style.cssText="margin:0 8px 0 8px;";oa.setAttribute("value","1");oa.setAttribute("min",
+"1");oa.setAttribute("type","number");oa.style.width="40px";L.appendChild(oa);I=document.createElement("span");mxUtils.write(I,mxResources.get("fitToSheetsAcross"));M.appendChild(I);mxUtils.write(S,mxResources.get("fitToBy"));var ra=oa.cloneNode(!0);ca.appendChild(ra);mxEvent.addListener(oa,"focus",function(){cb.checked=!0});mxEvent.addListener(ra,"focus",function(){cb.checked=!0});I=document.createElement("span");mxUtils.write(I,mxResources.get("fitToSheetsDown"));ia.appendChild(I);Ua.appendChild(z);
+Ua.appendChild(L);Ua.appendChild(M);$a.appendChild(S);$a.appendChild(ca);$a.appendChild(ia);Ja.appendChild(Ua);Ja.appendChild($a);Ca.appendChild(Ja);Z.appendChild(Ca);Q.appendChild(Z);Z=document.createElement("div");I=document.createElement("div");I.style.fontWeight="bold";I.style.marginBottom="12px";mxUtils.write(I,mxResources.get("paperSize"));Z.appendChild(I);I=document.createElement("div");I.style.marginBottom="12px";var qa=PageSetupDialog.addPageFormatPanel(I,"printdialog",u.editor.graph.pageFormat||
mxConstants.PAGE_FORMAT_A4_PORTRAIT);Z.appendChild(I);I=document.createElement("span");mxUtils.write(I,mxResources.get("pageScale"));Z.appendChild(I);var xa=document.createElement("input");xa.style.cssText="margin:0 8px 0 8px;";xa.setAttribute("value","100 %");xa.style.width="60px";Z.appendChild(xa);Q.appendChild(Z);I=document.createElement("div");I.style.cssText="text-align:right;margin:48px 0 0 0;";Z=mxUtils.button(mxResources.get("cancel"),function(){u.hideDialog()});Z.className="geBtn";u.editor.cancelFirst&&
I.appendChild(Z);u.isOffline()||(Ca=mxUtils.button(mxResources.get("help"),function(){T.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),Ca.className="geBtn",I.appendChild(Ca));PrintDialog.previewEnabled&&(Ca=mxUtils.button(mxResources.get("preview"),function(){u.hideDialog();W(!1)}),Ca.className="geBtn",I.appendChild(Ca));Ca=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){u.hideDialog();W(!0)});Ca.className="geBtn gePrimaryBtn";I.appendChild(Ca);u.editor.cancelFirst||
-I.appendChild(Z);Q.appendChild(I);this.container=Q};var ia=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var u=this.image;null!=u&&null!=u.src&&Graph.isPageLink(u.src)&&(u={originalSrc:u.src});this.page.viewState.backgroundImage=u}null!=this.format&&(this.page.viewState.pageFormat=
-this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else ia.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=
+I.appendChild(Z);Q.appendChild(I);this.container=Q};var ha=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var u=this.image;null!=u&&null!=u.src&&Graph.isPageLink(u.src)&&(u={originalSrc:u.src});this.page.viewState.backgroundImage=u}null!=this.format&&(this.page.viewState.pageFormat=
+this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else ha.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=
!this.shadowVisible)};Editor.prototype.useCanvasForExport=!1;try{var la=document.createElement("canvas"),ta=new Image;ta.onload=function(){try{la.getContext("2d").drawImage(ta,0,0);var u=la.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=u&&6<u.length}catch(I){}};ta.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(u){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};b.afterDecode=function(e,k,n){n.previousColor=n.color;n.previousImage=n.image;n.previousFormat=n.format;null!=n.foldingEnabled&&(n.foldingEnabled=!n.foldingEnabled);null!=n.mathEnabled&&(n.mathEnabled=!n.mathEnabled);null!=n.shadowVisible&&(n.shadowVisible=!n.shadowVisible);return n};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="19.0.2";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="19.0.3";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&
"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(d,f,g,m,q,y,F){y=null!=y?y:0<=d.indexOf("NetworkError")||0<=d.indexOf("SecurityError")||0<=d.indexOf("NS_ERROR_FAILURE")||0<=d.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -3409,7 +3410,7 @@ urlParams.pages&&null==this.fileNode&&null!=f&&(this.fileNode=f.ownerDocument.cr
F=y.getChildren(y.root);for(m=0;m<F.length;m++){var C=F[m];y.setVisible(C,f[C.id]||!1)}}catch(H){}};EditorUi.prototype.getBaseFilename=function(d){var f=this.getCurrentFile();f=null!=f&&null!=f.getTitle()?f.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(f)||/(\.html)$/i.test(f)||/(\.svg)$/i.test(f)||/(\.png)$/i.test(f))f=f.substring(0,f.lastIndexOf("."));/(\.drawio)$/i.test(f)&&(f=f.substring(0,f.lastIndexOf(".")));!d&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
0<this.currentPage.getName().length&&(f=f+"-"+this.currentPage.getName());return f};EditorUi.prototype.downloadFile=function(d,f,g,m,q,y,F,C,H,G,aa,da){try{m=null!=m?m:this.editor.graph.isSelectionEmpty();var ba=this.getBaseFilename("remoteSvg"==d?!1:!q),Y=ba+("xml"==d||"pdf"==d&&aa?".drawio":"")+"."+d;if("xml"==d){var pa=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,m,q,null,null,null,f);this.saveData(Y,d,pa,"text/xml")}else if("html"==d)pa=this.getHtml2(this.getFileData(!0),this.editor.graph,
ba),this.saveData(Y,d,pa,"text/html");else if("svg"!=d&&"xmlsvg"!=d||!this.spinner.spin(document.body,mxResources.get("export"))){if("xmlpng"==d)Y=ba+".png";else if("jpeg"==d)Y=ba+".jpg";else if("remoteSvg"==d){Y=ba+".svg";d="svg";var O=parseInt(H);"string"===typeof C&&0<C.indexOf("%")&&(C=parseInt(C)/100);if(0<O){var X=this.editor.graph,ea=X.getGraphBounds();var ka=Math.ceil(ea.width*C/X.view.scale+2*O);var ja=Math.ceil(ea.height*C/X.view.scale+2*O)}}this.saveRequest(Y,d,mxUtils.bind(this,function(R,
-ia){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var ta=this.createDownloadRequest(R,d,m,ia,F,q,C,H,G,aa,da,ka,ja);this.editor.graph.pageVisible=la;return ta}catch(u){this.handleError(u)}}))}else{var U=null,J=mxUtils.bind(this,function(R){R.length<=MAX_REQUEST_SIZE?this.saveData(Y,"svg",R,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(U)}))});if("svg"==d){var V=this.editor.graph.background;
+ha){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var ta=this.createDownloadRequest(R,d,m,ha,F,q,C,H,G,aa,da,ka,ja);this.editor.graph.pageVisible=la;return ta}catch(u){this.handleError(u)}}))}else{var U=null,J=mxUtils.bind(this,function(R){R.length<=MAX_REQUEST_SIZE?this.saveData(Y,"svg",R,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(U)}))});if("svg"==d){var V=this.editor.graph.background;
if(F||V==mxConstants.NONE)V=null;var P=this.editor.graph.getSvg(V,null,null,null,null,m);g&&this.editor.graph.addSvgShadow(P);this.editor.convertImages(P,mxUtils.bind(this,mxUtils.bind(this,function(R){this.spinner.stop();J(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(R))})))}else Y=ba+".svg",U=this.getFileData(!1,!0,null,mxUtils.bind(this,function(R){this.spinner.stop();J(R)}),m)}}catch(R){this.handleError(R)}};EditorUi.prototype.createDownloadRequest=function(d,f,g,m,q,y,F,C,H,
G,aa,da,ba){var Y=this.editor.graph,pa=Y.getGraphBounds();g=this.getFileData(!0,null,null,null,g,0==y?!1:"xmlpng"!=f,null,null,null,!1,"pdf"==f);var O="",X="";if(pa.width*pa.height>MAX_AREA||g.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};G=G?"1":"0";"pdf"==f&&(null!=aa?X="&from="+aa.from+"&to="+aa.to:0==y&&(X="&allPages=1"));"xmlpng"==f&&(G="1",f="png");if(("xmlpng"==f||"svg"==f)&&null!=this.pages&&null!=this.currentPage)for(y=0;y<this.pages.length;y++)if(this.pages[y]==
this.currentPage){O="&from="+y;break}y=Y.background;"png"!=f&&"pdf"!=f&&"svg"!=f||!q?q||null!=y&&y!=mxConstants.NONE||(y="#ffffff"):y=mxConstants.NONE;q={globalVars:Y.getExportVariables()};H&&(q.grid={size:Y.gridSize,steps:Y.view.gridSteps,color:Y.view.gridColor});Graph.translateDiagram&&(q.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+f+O+X+"&bg="+(null!=y?y:mxConstants.NONE)+"&base64="+m+"&embedXml="+G+"&xml="+encodeURIComponent(g)+(null!=d?"&filename="+encodeURIComponent(d):
@@ -3445,10 +3446,10 @@ LocalLibrary,!0,function(){null==da||d.isModified()||(H.style.paddingRight=18*G.
U=ba.view.getBounds(ja),J=ba.view.scale;U.x/=J;U.y/=J;U.width/=J;U.height/=J;U.x-=ba.view.translate.x;U.y-=ba.view.translate.y;X(ja,U)}mxEvent.consume(ka)});mxEvent.addGestureListeners(C,function(){},mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.panningManager&&null!=ba.graphHandler.first&&(ba.graphHandler.suspend(),null!=ba.graphHandler.hint&&(ba.graphHandler.hint.style.visibility="hidden"),C.style.backgroundColor="#f1f3f4",C.style.cursor="copy",ba.panningManager.stop(),ba.autoScroll=!1,
mxEvent.consume(ka))}),mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.panningManager&&null!=ba.graphHandler&&(C.style.backgroundColor="",C.style.cursor="default",this.sidebar.showTooltips=!0,ba.panningManager.stop(),ba.graphHandler.reset(),ba.isMouseDown=!1,ba.autoScroll=!0,ea(ka),mxEvent.consume(ka))}));mxEvent.addListener(C,"mouseleave",mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.graphHandler.first&&(ba.graphHandler.resume(),null!=ba.graphHandler.hint&&(ba.graphHandler.hint.style.visibility=
"visible"),C.style.backgroundColor="",C.style.cursor="",ba.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(C,"dragover",mxUtils.bind(this,function(ka){C.style.backgroundColor="#f1f3f4";ka.dataTransfer.dropEffect="copy";C.style.cursor="copy";this.sidebar.hideTooltip();ka.stopPropagation();ka.preventDefault()})),mxEvent.addListener(C,"drop",mxUtils.bind(this,function(ka){C.style.cursor="";C.style.backgroundColor="";0<ka.dataTransfer.files.length&&this.importFiles(ka.dataTransfer.files,0,0,
-this.maxImageSize,mxUtils.bind(this,function(ja,U,J,V,P,R,ia,la,ta){if(null!=ja&&"image/"==U.substring(0,6))ja="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(ja),ja=[new mxCell("",new mxGeometry(0,0,P,R),ja)],ja[0].vertex=!0,X(ja,new mxRectangle(0,0,P,R),ka,mxEvent.isAltDown(ka)?null:ia.substring(0,ia.lastIndexOf(".")).replace(/_/g," ")),null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null);else{var u=!1,I=
+this.maxImageSize,mxUtils.bind(this,function(ja,U,J,V,P,R,ha,la,ta){if(null!=ja&&"image/"==U.substring(0,6))ja="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(ja),ja=[new mxCell("",new mxGeometry(0,0,P,R),ja)],ja[0].vertex=!0,X(ja,new mxRectangle(0,0,P,R),ka,mxEvent.isAltDown(ka)?null:ha.substring(0,ha.lastIndexOf(".")).replace(/_/g," ")),null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null);else{var u=!1,I=
mxUtils.bind(this,function(N,W){null!=N&&"application/pdf"==W&&(W=Editor.extractGraphModelFromPdf(N),null!=W&&0<W.length&&(N=W));if(null!=N)if(N=mxUtils.parseXml(N),"mxlibrary"==N.documentElement.nodeName)try{var T=JSON.parse(mxUtils.getTextContent(N.documentElement));F(T,C);f=f.concat(T);O(ka);this.spinner.stop();u=!0}catch(va){}else if("mxfile"==N.documentElement.nodeName)try{var Q=N.documentElement.getElementsByTagName("diagram");for(T=0;T<Q.length;T++){var Z=this.stringToCells(Editor.getDiagramNodeXml(Q[T])),
-na=this.editor.graph.getBoundingBoxFromGeometry(Z);X(Z,new mxRectangle(0,0,na.width,na.height),ka)}u=!0}catch(va){null!=window.console&&console.log("error in drop handler:",va)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)});null!=ta&&null!=ia&&(/(\.v(dx|sdx?))($|\?)/i.test(ia)||/(\.vs(x|sx?))($|\?)/i.test(ia))?this.importVisio(ta,function(N){I(N,"text/xml")},null,ia):(new XMLHttpRequest).upload&&
-this.isRemoteFileFormat(ja,ia)&&null!=ta?this.isExternalDataComms()?this.parseFile(ta,mxUtils.bind(this,function(N){4==N.readyState&&(this.spinner.stop(),200<=N.status&&299>=N.status?I(N.responseText,"text/xml"):this.handleError({message:mxResources.get(413==N.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):I(ja,U)}}));ka.stopPropagation();ka.preventDefault()})),
+na=this.editor.graph.getBoundingBoxFromGeometry(Z);X(Z,new mxRectangle(0,0,na.width,na.height),ka)}u=!0}catch(va){null!=window.console&&console.log("error in drop handler:",va)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)});null!=ta&&null!=ha&&(/(\.v(dx|sdx?))($|\?)/i.test(ha)||/(\.vs(x|sx?))($|\?)/i.test(ha))?this.importVisio(ta,function(N){I(N,"text/xml")},null,ha):(new XMLHttpRequest).upload&&
+this.isRemoteFileFormat(ja,ha)&&null!=ta?this.isExternalDataComms()?this.parseFile(ta,mxUtils.bind(this,function(N){4==N.readyState&&(this.spinner.stop(),200<=N.status&&299>=N.status?I(N.responseText,"text/xml"):this.handleError({message:mxResources.get(413==N.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):I(ja,U)}}));ka.stopPropagation();ka.preventDefault()})),
mxEvent.addListener(C,"dragleave",function(ka){C.style.cursor="";C.style.backgroundColor="";ka.stopPropagation();ka.preventDefault()}));aa=aa.cloneNode(!1);aa.setAttribute("src",Editor.editImage);aa.setAttribute("title",mxResources.get("edit"));G.insertBefore(aa,G.firstChild);mxEvent.addListener(aa,"click",pa);mxEvent.addListener(C,"dblclick",function(ka){mxEvent.getSource(ka)==C&&pa(ka)});m=aa.cloneNode(!1);m.setAttribute("src",Editor.plusImage);m.setAttribute("title",mxResources.get("add"));G.insertBefore(m,
G.firstChild);mxEvent.addListener(m,"click",ea);this.isOffline()||".scratchpad"!=d.title||null==EditorUi.scratchpadHelpLink||(m=document.createElement("span"),m.setAttribute("title",mxResources.get("help")),m.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(m,"?"),mxEvent.addGestureListeners(m,mxUtils.bind(this,function(ka){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(ka)})),G.insertBefore(m,G.firstChild))}H.appendChild(G);H.style.paddingRight=
18*G.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(d,f){for(var g=0;g<d.length;g++){var m=d[g],q=m.data;if(null!=q){q=this.convertDataUri(q);var y="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==m.aspect&&(y+="aspect=fixed;");f.appendChild(this.sidebar.createVertexTemplate(y+"image="+q,m.w,m.h,"",m.title||"",!1,null,!0))}else null!=m.xml&&(q=this.stringToCells(Graph.decompress(m.xml)),0<q.length&&f.appendChild(this.sidebar.createVertexTemplateFromCells(q,
@@ -3532,12 +3533,12 @@ function(d,f,g,m,q,y,F,C,H){F=null!=F?F:Editor.defaultIncludeDiagram;var G=docum
"8px";X.style.marginLeft="24px";X.setAttribute("disabled","disabled");X.setAttribute("type","checkbox");var ea=document.createElement("select");ea.style.marginTop="16px";ea.style.marginLeft="8px";d=["selectionOnly","diagram","page"];var ka={};for(ba=0;ba<d.length;ba++)if(!aa.isSelectionEmpty()||"selectionOnly"!=d[ba]){var ja=document.createElement("option");mxUtils.write(ja,mxResources.get(d[ba]));ja.setAttribute("value",d[ba]);ea.appendChild(ja);ka[d[ba]]=ja}H?(mxUtils.write(G,mxResources.get("size")+
":"),G.appendChild(ea),mxUtils.br(G),da+=26,mxEvent.addListener(ea,"change",function(){"selectionOnly"==ea.value&&(O.checked=!0)})):y&&(G.appendChild(X),mxUtils.write(G,mxResources.get("crop")),mxUtils.br(G),da+=30,mxEvent.addListener(O,"change",function(){O.checked?X.removeAttribute("disabled"):X.setAttribute("disabled","disabled")}));aa.isSelectionEmpty()?H&&(O.style.display="none",O.nextSibling.style.display="none",O.nextSibling.nextSibling.style.display="none",da-=30):(ea.value="diagram",X.setAttribute("checked",
"checked"),X.defaultChecked=!0,mxEvent.addListener(O,"change",function(){ea.value=O.checked?"selectionOnly":"diagram"}));var U=this.addCheckbox(G,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=C),J=null;Editor.isDarkMode()&&(J=this.addCheckbox(G,mxResources.get("dark"),!0),da+=26);var V=this.addCheckbox(G,mxResources.get("shadow"),aa.shadowVisible),P=null;if("png"==C||"jpeg"==C)P=this.addCheckbox(G,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),da+=30;var R=
-this.addCheckbox(G,mxResources.get("includeCopyOfMyDiagram"),F,null,null,"jpeg"!=C);R.style.marginBottom="16px";var ia=document.createElement("input");ia.style.marginBottom="16px";ia.style.marginRight="8px";ia.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ia.setAttribute("disabled","disabled");var la=document.createElement("select");la.style.maxWidth="260px";la.style.marginLeft="8px";la.style.marginRight="10px";la.style.marginBottom="16px";la.className="geBtn";y=document.createElement("option");
-y.setAttribute("value","none");mxUtils.write(y,mxResources.get("noChange"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","embedFonts");mxUtils.write(y,mxResources.get("embedFonts"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","lblToSvg");mxUtils.write(y,mxResources.get("lblToSvg"));this.isOffline()||EditorUi.isElectronApp||la.appendChild(y);mxEvent.addListener(la,"change",mxUtils.bind(this,function(){"lblToSvg"==la.value?(ia.checked=!0,
-ia.setAttribute("disabled","disabled"),ka.page.style.display="none","page"==ea.value&&(ea.value="diagram"),V.checked=!1,V.setAttribute("disabled","disabled"),u.style.display="inline-block",ta.style.display="none"):"disabled"==ia.getAttribute("disabled")&&(ia.checked=!1,ia.removeAttribute("disabled"),V.removeAttribute("disabled"),ka.page.style.display="",u.style.display="none",ta.style.display="")}));f&&(G.appendChild(ia),mxUtils.write(G,mxResources.get("embedImages")),mxUtils.br(G),mxUtils.write(G,
+this.addCheckbox(G,mxResources.get("includeCopyOfMyDiagram"),F,null,null,"jpeg"!=C);R.style.marginBottom="16px";var ha=document.createElement("input");ha.style.marginBottom="16px";ha.style.marginRight="8px";ha.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ha.setAttribute("disabled","disabled");var la=document.createElement("select");la.style.maxWidth="260px";la.style.marginLeft="8px";la.style.marginRight="10px";la.style.marginBottom="16px";la.className="geBtn";y=document.createElement("option");
+y.setAttribute("value","none");mxUtils.write(y,mxResources.get("noChange"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","embedFonts");mxUtils.write(y,mxResources.get("embedFonts"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","lblToSvg");mxUtils.write(y,mxResources.get("lblToSvg"));this.isOffline()||EditorUi.isElectronApp||la.appendChild(y);mxEvent.addListener(la,"change",mxUtils.bind(this,function(){"lblToSvg"==la.value?(ha.checked=!0,
+ha.setAttribute("disabled","disabled"),ka.page.style.display="none","page"==ea.value&&(ea.value="diagram"),V.checked=!1,V.setAttribute("disabled","disabled"),u.style.display="inline-block",ta.style.display="none"):"disabled"==ha.getAttribute("disabled")&&(ha.checked=!1,ha.removeAttribute("disabled"),V.removeAttribute("disabled"),ka.page.style.display="",u.style.display="none",ta.style.display="")}));f&&(G.appendChild(ha),mxUtils.write(G,mxResources.get("embedImages")),mxUtils.br(G),mxUtils.write(G,
mxResources.get("txtSettings")+":"),G.appendChild(la),mxUtils.br(G),da+=60);var ta=document.createElement("select");ta.style.maxWidth="260px";ta.style.marginLeft="8px";ta.style.marginRight="10px";ta.className="geBtn";f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));ta.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));ta.appendChild(f);f=document.createElement("option");
f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));ta.appendChild(f);var u=document.createElement("div");mxUtils.write(u,mxResources.get("LinksLost"));u.style.margin="7px";u.style.display="none";"svg"==C&&(mxUtils.write(G,mxResources.get("links")+":"),G.appendChild(ta),G.appendChild(u),mxUtils.br(G),mxUtils.br(G),da+=50);g=new CustomDialog(this,G,mxUtils.bind(this,function(){this.lastExportBorder=pa.value;this.lastExportZoom=Y.value;q(Y.value,U.checked,!O.checked,
-V.checked,R.checked,ia.checked,pa.value,X.checked,!1,ta.value,null!=P?P.checked:null,null!=J?J.checked:null,ea.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,m);this.showDialog(g.container,340,da,!0,!0,null,null,null,null,!0);Y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Y.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;
+V.checked,R.checked,ha.checked,pa.value,X.checked,!1,ta.value,null!=P?P.checked:null,null!=J?J.checked:null,ea.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,m);this.showDialog(g.container,340,da,!0,!0,null,null,null,null,!0);Y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Y.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;
if(null!=f){var C=document.createElement("h3");mxUtils.write(C,f);C.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";y.appendChild(C)}var H=this.addCheckbox(y,mxResources.get("fit"),!0),G=this.addCheckbox(y,mxResources.get("shadow"),F.shadowVisible&&m,!m),aa=this.addCheckbox(y,g),da=this.addCheckbox(y,mxResources.get("lightbox"),!0),ba=this.addEditButton(y,da),Y=ba.getEditInput(),pa=1<F.model.getChildCount(F.model.getRoot()),O=this.addCheckbox(y,mxResources.get("layers"),
pa,!pa);O.style.marginLeft=Y.style.marginLeft;O.style.marginBottom="12px";O.style.marginTop="8px";mxEvent.addListener(da,"change",function(){da.checked?(pa&&O.removeAttribute("disabled"),Y.removeAttribute("disabled")):(O.setAttribute("disabled","disabled"),Y.setAttribute("disabled","disabled"));Y.checked&&da.checked?ba.getEditSelect().removeAttribute("disabled"):ba.getEditSelect().setAttribute("disabled","disabled")});f=new CustomDialog(this,y,mxUtils.bind(this,function(){d(H.checked,G.checked,aa.checked,
da.checked,ba.getLink(),O.checked)}),null,mxResources.get("embed"),q);this.showDialog(f.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(d,f,g,m,q,y,F,C){function H(Y){var pa=" ",O="";m&&(pa=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
@@ -3594,13 +3595,13 @@ d+";")])):/(\.*<graphml )/.test(d)?(ba=!0,this.importGraphML(d,pa)):null!=H&&nul
q,F)):0==d.indexOf("PK")&&null!=H?(ba=!0,this.importZipFile(H,pa,mxUtils.bind(this,function(){Y=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G);C(Y)}))):/(\.v(sd|dx))($|\?)/i.test(F)||/(\.vs(s|x))($|\?)/i.test(F)||(Y=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G,null,null!=da?mxEvent.isControlDown(da):null));ba||null==C||C(Y);return Y};EditorUi.prototype.importFiles=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba){m=null!=m?m:this.maxImageSize;G=null!=G?G:this.maxImageBytes;var Y=null!=
f&&null!=g,pa=!0;f=null!=f?f:0;g=null!=g?g:0;var O=!1;if(!mxClient.IS_CHROMEAPP&&null!=d)for(var X=aa||this.resampleThreshold,ea=0;ea<d.length;ea++)if("image/svg"!==d[ea].type.substring(0,9)&&"image/"===d[ea].type.substring(0,6)&&d[ea].size>X){O=!0;break}var ka=mxUtils.bind(this,function(){var ja=this.editor.graph,U=ja.gridSize;q=null!=q?q:mxUtils.bind(this,function(la,ta,u,I,N,W,T,Q,Z){try{return null!=la&&"<mxlibrary"==la.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,
la,T)),null):this.importFile(la,ta,u,I,N,W,T,Q,Z,Y,da,ba)}catch(na){return this.handleError(na),null}});y=null!=y?y:mxUtils.bind(this,function(la){ja.setSelectionCells(la)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var J=d.length,V=J,P=[],R=mxUtils.bind(this,function(la,ta){P[la]=ta;if(0==--V){this.spinner.stop();if(null!=C)C(P);else{var u=[];ja.getModel().beginUpdate();try{for(la=0;la<P.length;la++){var I=P[la]();null!=I&&(u=u.concat(I))}}finally{ja.getModel().endUpdate()}}y(u)}}),
-ia=0;ia<J;ia++)mxUtils.bind(this,function(la){var ta=d[la];if(null!=ta){var u=new FileReader;u.onload=mxUtils.bind(this,function(I){if(null==F||F(ta))if("image/"==ta.type.substring(0,6))if("image/svg"==ta.type.substring(0,9)){var N=Graph.clipSvgDataUri(I.target.result),W=N.indexOf(",");W=decodeURIComponent(escape(atob(N.substring(W+1))));var T=mxUtils.parseXml(W);W=T.getElementsByTagName("svg");if(0<W.length){W=W[0];var Q=da?null:W.getAttribute("content");null!=Q&&"<"!=Q.charAt(0)&&"%"!=Q.charAt(0)&&
+ha=0;ha<J;ha++)mxUtils.bind(this,function(la){var ta=d[la];if(null!=ta){var u=new FileReader;u.onload=mxUtils.bind(this,function(I){if(null==F||F(ta))if("image/"==ta.type.substring(0,6))if("image/svg"==ta.type.substring(0,9)){var N=Graph.clipSvgDataUri(I.target.result),W=N.indexOf(",");W=decodeURIComponent(escape(atob(N.substring(W+1))));var T=mxUtils.parseXml(W);W=T.getElementsByTagName("svg");if(0<W.length){W=W[0];var Q=da?null:W.getAttribute("content");null!=Q&&"<"!=Q.charAt(0)&&"%"!=Q.charAt(0)&&
(Q=unescape(window.atob?atob(Q):Base64.decode(Q,!0)));null!=Q&&"%"==Q.charAt(0)&&(Q=decodeURIComponent(Q));null==Q||"<mxfile "!==Q.substring(0,8)&&"<mxGraphModel "!==Q.substring(0,14)?R(la,mxUtils.bind(this,function(){try{if(null!=T){var va=T.getElementsByTagName("svg");if(0<va.length){var Ba=va[0],sa=Ba.getAttribute("width"),Da=Ba.getAttribute("height");sa=null!=sa&&"%"!=sa.charAt(sa.length-1)?parseFloat(sa):NaN;Da=null!=Da&&"%"!=Da.charAt(Da.length-1)?parseFloat(Da):NaN;var Aa=Ba.getAttribute("viewBox");
if(null==Aa||0==Aa.length)Ba.setAttribute("viewBox","0 0 "+sa+" "+Da);else if(isNaN(sa)||isNaN(Da)){var za=Aa.split(" ");3<za.length&&(sa=parseFloat(za[2]),Da=parseFloat(za[3]))}N=Editor.createSvgDataUri(mxUtils.getXml(Ba));var Ca=Math.min(1,Math.min(m/Math.max(1,sa)),m/Math.max(1,Da)),Qa=q(N,ta.type,f+la*U,g+la*U,Math.max(1,Math.round(sa*Ca)),Math.max(1,Math.round(Da*Ca)),ta.name);if(isNaN(sa)||isNaN(Da)){var Za=new Image;Za.onload=mxUtils.bind(this,function(){sa=Math.max(1,Za.width);Da=Math.max(1,
Za.height);Qa[0].geometry.width=sa;Qa[0].geometry.height=Da;Ba.setAttribute("viewBox","0 0 "+sa+" "+Da);N=Editor.createSvgDataUri(mxUtils.getXml(Ba));var cb=N.indexOf(";");0<cb&&(N=N.substring(0,cb)+N.substring(N.indexOf(",",cb+1)));ja.setCellStyles("image",N,[Qa[0]])});Za.src=Editor.createSvgDataUri(mxUtils.getXml(Ba))}return Qa}}}catch(cb){}return null})):R(la,mxUtils.bind(this,function(){return q(Q,"text/xml",f+la*U,g+la*U,0,0,ta.name)}))}else R(la,mxUtils.bind(this,function(){return null}))}else{W=
!1;if("image/png"==ta.type){var Z=da?null:this.extractGraphModelFromPng(I.target.result);if(null!=Z&&0<Z.length){var na=new Image;na.src=I.target.result;R(la,mxUtils.bind(this,function(){return q(Z,"text/xml",f+la*U,g+la*U,na.width,na.height,ta.name)}));W=!0}}W||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):
this.loadImage(I.target.result,mxUtils.bind(this,function(va){this.resizeImage(va,I.target.result,mxUtils.bind(this,function(Ba,sa,Da){R(la,mxUtils.bind(this,function(){if(null!=Ba&&Ba.length<G){var Aa=pa&&this.isResampleImageSize(ta.size,aa)?Math.min(1,Math.min(m/sa,m/Da)):1;return q(Ba,ta.type,f+la*U,g+la*U,Math.round(sa*Aa),Math.round(Da*Aa),ta.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),pa,m,aa,ta.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else N=
-I.target.result,q(N,ta.type,f+la*U,g+la*U,240,160,ta.name,function(va){R(la,function(){return va})},ta)});/(\.v(dx|sdx?))($|\?)/i.test(ta.name)||/(\.vs(x|sx?))($|\?)/i.test(ta.name)?q(null,ta.type,f+la*U,g+la*U,240,160,ta.name,function(I){R(la,function(){return I})},ta):"image"==ta.type.substring(0,5)||"application/pdf"==ta.type?u.readAsDataURL(ta):u.readAsText(ta)}})(ia)});if(O){O=[];for(ea=0;ea<d.length;ea++)O.push(d[ea]);d=O;this.confirmImageResize(function(ja){pa=ja;ka()},H)}else ka()};EditorUi.prototype.isBlankFile=
+I.target.result,q(N,ta.type,f+la*U,g+la*U,240,160,ta.name,function(va){R(la,function(){return va})},ta)});/(\.v(dx|sdx?))($|\?)/i.test(ta.name)||/(\.vs(x|sx?))($|\?)/i.test(ta.name)?q(null,ta.type,f+la*U,g+la*U,240,160,ta.name,function(I){R(la,function(){return I})},ta):"image"==ta.type.substring(0,5)||"application/pdf"==ta.type?u.readAsDataURL(ta):u.readAsText(ta)}})(ha)});if(O){O=[];for(ea=0;ea<d.length;ea++)O.push(d[ea]);d=O;this.confirmImageResize(function(ja){pa=ja;ka()},H)}else ka()};EditorUi.prototype.isBlankFile=
function(){return null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1])};EditorUi.prototype.confirmImageResize=function(d,f){f=null!=f?f:!1;var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},m=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,q=function(y,F){if(y||f)mxSettings.setResizeImages(y?F:null),mxSettings.save();g();d(F)};null==m||f?this.showDialog((new ConfirmDialog(this,
mxResources.get("resizeLargeImages"),function(y){q(y,!0)},function(y){q(y,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):q(!1,m)};EditorUi.prototype.parseFile=function(d,f,g){g=null!=g?g:d.name;var m=new FileReader;m.onload=mxUtils.bind(this,function(){this.parseFileData(m.result,
f,g)});m.readAsText(d)};EditorUi.prototype.parseFileData=function(d,f,g){var m=new XMLHttpRequest;m.open("POST",OPEN_URL);m.setRequestHeader("Content-Type","application/x-www-form-urlencoded");m.onreadystatechange=function(){f(m)};m.send("format=xml&filename="+encodeURIComponent(g)+"&data="+encodeURIComponent(d));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(d,f){f=null!=f?f:this.resampleThreshold;return d>
@@ -3622,7 +3623,7 @@ null!=ea&&(X.filename=ea.getTitle());X.pagecount=null!=d.pages?d.pages.length:1;
1:1:"pagecount"==X?null!=d.pages?d.pages.length:1:da.apply(this,arguments)};var ba=f.labelLinkClicked;f.labelLinkClicked=function(X,ea,ka){var ja=ea.getAttribute("href");if(null==ja||!f.isCustomLink(ja)||!mxEvent.isTouchEvent(ka)&&mxEvent.isPopupTrigger(ka))ba.apply(this,arguments);else{if(!f.isEnabled()||null!=X&&f.isCellLocked(X.cell))f.customLinkClicked(ja),f.getRubberband().reset();mxEvent.consume(ka)}};this.editor.getOrCreateFilename=function(){var X=d.defaultFilename,ea=d.getCurrentFile();null!=
ea&&(X=null!=ea.getTitle()?ea.getTitle():X);return X};var Y=this.actions.get("print");Y.setEnabled(!mxClient.IS_IOS||!navigator.standalone);Y.visible=Y.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),
this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.addListener("realtimeStateChanged",mxUtils.bind(this,function(){this.updateUserElement()}));this.spinner=this.createSpinner(null,null,24);Graph.fileSupport&&f.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(X){var ea=f.cellEditor.text2,ka=null;null!=ea&&(mxEvent.addListener(ea,"dragleave",function(ja){null!=ka&&(ka.parentNode.removeChild(ka),
-ka=null);ja.stopPropagation();ja.preventDefault()}),mxEvent.addListener(ea,"dragover",mxUtils.bind(this,function(ja){null==ka&&(!mxClient.IS_IE||10<document.documentMode)&&(ka=this.highlightElement(ea));ja.stopPropagation();ja.preventDefault()})),mxEvent.addListener(ea,"drop",mxUtils.bind(this,function(ja){null!=ka&&(ka.parentNode.removeChild(ka),ka=null);if(0<ja.dataTransfer.files.length)this.importFiles(ja.dataTransfer.files,0,0,this.maxImageSize,function(J,V,P,R,ia,la){f.insertImage(J,ia,la)},
+ka=null);ja.stopPropagation();ja.preventDefault()}),mxEvent.addListener(ea,"dragover",mxUtils.bind(this,function(ja){null==ka&&(!mxClient.IS_IE||10<document.documentMode)&&(ka=this.highlightElement(ea));ja.stopPropagation();ja.preventDefault()})),mxEvent.addListener(ea,"drop",mxUtils.bind(this,function(ja){null!=ka&&(ka.parentNode.removeChild(ka),ka=null);if(0<ja.dataTransfer.files.length)this.importFiles(ja.dataTransfer.files,0,0,this.maxImageSize,function(J,V,P,R,ha,la){f.insertImage(J,ha,la)},
function(){},function(J){return"image/"==J.type.substring(0,6)},function(J){for(var V=0;V<J.length;V++)J[V]()},mxEvent.isControlDown(ja));else if(0<=mxUtils.indexOf(ja.dataTransfer.types,"text/uri-list")){var U=ja.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(U)?this.loadImage(decodeURIComponent(U),mxUtils.bind(this,function(J){var V=Math.max(1,J.width);J=Math.max(1,J.height);var P=this.maxImageSize;P=Math.min(1,Math.min(P/Math.max(1,V)),P/Math.max(1,J));f.insertImage(decodeURIComponent(U),
V*P,J*P)})):document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(ja.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(ja.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/plain"));ja.stopPropagation();ja.preventDefault()})))}));this.isSettingsEnabled()&&(Y=this.editor.graph.view,Y.setUnit(mxSettings.getUnit()),Y.addListener("unitChanged",
function(X,ea){mxSettings.setUnit(ea.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,Y.unit),this.refresh());if("1"==urlParams.styledev){Y=document.getElementById("geFooter");null!=Y&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top=
@@ -3631,8 +3632,8 @@ X=this.editor.graph.getModel().getStyle(X),this.styleInput.value=X||"",this.styl
function(X){f.isEnabled()&&(null!=O&&(O.parentNode.removeChild(O),O=null),X.stopPropagation(),X.preventDefault())});mxEvent.addListener(f.container,"dragover",mxUtils.bind(this,function(X){null==O&&(!mxClient.IS_IE||10<document.documentMode)&&(O=this.highlightElement(f.container));null!=this.sidebar&&this.sidebar.hideTooltip();X.stopPropagation();X.preventDefault()}));mxEvent.addListener(f.container,"drop",mxUtils.bind(this,function(X){null!=O&&(O.parentNode.removeChild(O),O=null);if(f.isEnabled()){var ea=
mxUtils.convertPoint(f.container,mxEvent.getClientX(X),mxEvent.getClientY(X)),ka=X.dataTransfer.files,ja=f.view.translate,U=f.view.scale,J=ea.x/U-ja.x,V=ea.y/U-ja.y;if(0<ka.length)ea=1==ka.length&&this.isBlankFile()&&!this.canUndo()&&("image/svg"===ka[0].type.substring(0,9)||"image/"!==ka[0].type.substring(0,6)||/(\.drawio.png)$/i.test(ka[0].name)),"1"!=urlParams.embed&&(mxEvent.isShiftDown(X)||ea)?(!mxEvent.isShiftDown(X)&&ea&&null!=this.getCurrentFile()&&this.fileLoaded(null),this.openFiles(ka,
!0)):(mxEvent.isAltDown(X)&&(V=J=null),this.importFiles(ka,J,V,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(X),null,null,mxEvent.isShiftDown(X),X));else{mxEvent.isAltDown(X)&&(V=J=0);var P=0<=mxUtils.indexOf(X.dataTransfer.types,"text/uri-list")?X.dataTransfer.getData("text/uri-list"):null;ka=this.extractGraphModelFromEvent(X,null!=this.pages);if(null!=ka)f.setSelectionCells(this.importXml(ka,J,V,!0));else if(0<=mxUtils.indexOf(X.dataTransfer.types,"text/html")){var R=X.dataTransfer.getData("text/html");
-ka=document.createElement("div");ka.innerHTML=f.sanitizeHtml(R);var ia=null;ea=ka.getElementsByTagName("img");null!=ea&&1==ea.length?(R=ea[0].getAttribute("src"),null==R&&(R=ea[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(R)||(ia=!0)):(ea=ka.getElementsByTagName("a"),null!=ea&&1==ea.length?R=ea[0].getAttribute("href"):(ka=ka.getElementsByTagName("pre"),null!=ka&&1==ka.length&&(R=mxUtils.getTextContent(ka[0]))));var la=!0,ta=mxUtils.bind(this,function(){f.setSelectionCells(this.insertTextAt(R,
-J,V,!0,ia,null,la,mxEvent.isControlDown(X)))});ia&&null!=R&&R.length>this.resampleThreshold?this.confirmImageResize(function(u){la=u;ta()},mxEvent.isControlDown(X)):ta()}else null!=P&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(P)?this.loadImage(decodeURIComponent(P),mxUtils.bind(this,function(u){var I=Math.max(1,u.width);u=Math.max(1,u.height);var N=this.maxImageSize;N=Math.min(1,Math.min(N/Math.max(1,I)),N/Math.max(1,u));f.setSelectionCell(f.insertVertex(null,null,"",J,V,I*N,u*N,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
+ka=document.createElement("div");ka.innerHTML=f.sanitizeHtml(R);var ha=null;ea=ka.getElementsByTagName("img");null!=ea&&1==ea.length?(R=ea[0].getAttribute("src"),null==R&&(R=ea[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(R)||(ha=!0)):(ea=ka.getElementsByTagName("a"),null!=ea&&1==ea.length?R=ea[0].getAttribute("href"):(ka=ka.getElementsByTagName("pre"),null!=ka&&1==ka.length&&(R=mxUtils.getTextContent(ka[0]))));var la=!0,ta=mxUtils.bind(this,function(){f.setSelectionCells(this.insertTextAt(R,
+J,V,!0,ha,null,la,mxEvent.isControlDown(X)))});ha&&null!=R&&R.length>this.resampleThreshold?this.confirmImageResize(function(u){la=u;ta()},mxEvent.isControlDown(X)):ta()}else null!=P&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(P)?this.loadImage(decodeURIComponent(P),mxUtils.bind(this,function(u){var I=Math.max(1,u.width);u=Math.max(1,u.height);var N=this.maxImageSize;N=Math.min(1,Math.min(N/Math.max(1,I)),N/Math.max(1,u));f.setSelectionCell(f.insertVertex(null,null,"",J,V,I*N,u*N,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
P+";"))}),mxUtils.bind(this,function(u){f.setSelectionCells(this.insertTextAt(P,J,V,!0))})):0<=mxUtils.indexOf(X.dataTransfer.types,"text/plain")&&f.setSelectionCells(this.insertTextAt(X.dataTransfer.getData("text/plain"),J,V,!0))}}X.stopPropagation();X.preventDefault()}),!1)}f.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var d=this.editor.graph;d.container.addEventListener("paste",
mxUtils.bind(this,function(f){if(!mxEvent.isConsumed(f))try{for(var g=f.clipboardData||f.originalEvent.clipboardData,m=!1,q=0;q<g.types.length;q++)if("text/"===g.types[q].substring(0,5)){m=!0;break}if(!m){var y=g.items;for(index in y){var F=y[index];if("file"===F.kind){if(d.isEditing())this.importFiles([F.getAsFile()],0,0,this.maxImageSize,function(H,G,aa,da,ba,Y){d.insertImage(H,ba,Y)},function(){},function(H){return"image/"==H.type.substring(0,6)},function(H){for(var G=0;G<H.length;G++)H[G]()});
else{var C=this.editor.graph.getInsertPoint();this.importFiles([F.getAsFile()],C.x,C.y,this.maxImageSize);mxEvent.consume(f)}break}}}}catch(H){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function d(){window.setTimeout(function(){g.innerHTML="&nbsp;";g.focus();document.execCommand("selectAll",!1,null)},0)}var f=this.editor.graph,g=document.createElement("div");g.setAttribute("autocomplete","off");g.setAttribute("autocorrect","off");g.setAttribute("autocapitalize","off");g.setAttribute("spellcheck",
@@ -3695,11 +3696,11 @@ ka?ka.id:null,O?mxUtils.bind(this,function(Q,Z,na){this.remoteInvoke("getRecentD
null,Q,function(){Q(null,"Network Error!")})}):null,X?mxUtils.bind(this,function(Q,Z){this.remoteInvoke("searchDiagrams",[Q,null],null,Z,function(){Z(null,"Network Error!")})}):null,mxUtils.bind(this,function(Q,Z,na){F.postMessage(JSON.stringify({event:"template",docUrl:Q,info:Z,name:na}),"*")}),null,null,ea?mxUtils.bind(this,function(Q){this.remoteInvoke("getCustomTemplates",null,null,Q,function(){Q({},0)})}):null,1==G.withoutType);this.showDialog(Y.container,620,460,!0,!1,mxUtils.bind(this,function(Q){this.sidebar.hideTooltip();
Q&&this.actions.get("exit").funct()}));Y.init();return}if("textContent"==G.action){var U=this.getDiagramTextContent();F.postMessage(JSON.stringify({event:"textContent",data:U,message:G}),"*");return}if("status"==G.action){null!=G.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(G.messageKey))):null!=G.message&&this.editor.setStatus(mxUtils.htmlEntities(G.message));null!=G.modified&&(this.editor.modified=G.modified);return}if("spinner"==G.action){var J=null!=G.messageKey?mxResources.get(G.messageKey):
G.message;null==G.show||G.show?this.spinner.spin(document.body,J):this.spinner.stop();return}if("exit"==G.action){this.actions.get("exit").funct();return}if("viewport"==G.action){null!=G.viewport&&(this.embedViewport=G.viewport);return}if("snapshot"==G.action){this.sendEmbeddedSvgExport(!0);return}if("export"==G.action){if("png"==G.format||"xmlpng"==G.format){if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin)){var V=null!=G.xml?G.xml:
-this.getFileData(!0);this.editor.graph.setEnabled(!1);var P=this.editor.graph,R=mxUtils.bind(this,function(Q){this.editor.graph.setEnabled(!0);this.spinner.stop();var Z=this.createLoadMessage("export");Z.format=G.format;Z.message=G;Z.data=Q;Z.xml=V;F.postMessage(JSON.stringify(Z),"*")}),ia=mxUtils.bind(this,function(Q){null==Q&&(Q=Editor.blankImage);"xmlpng"==G.format&&(Q=Editor.writeGraphModelToPng(Q,"tEXt","mxfile",encodeURIComponent(V)));P!=this.editor.graph&&P.container.parentNode.removeChild(P.container);
+this.getFileData(!0);this.editor.graph.setEnabled(!1);var P=this.editor.graph,R=mxUtils.bind(this,function(Q){this.editor.graph.setEnabled(!0);this.spinner.stop();var Z=this.createLoadMessage("export");Z.format=G.format;Z.message=G;Z.data=Q;Z.xml=V;F.postMessage(JSON.stringify(Z),"*")}),ha=mxUtils.bind(this,function(Q){null==Q&&(Q=Editor.blankImage);"xmlpng"==G.format&&(Q=Editor.writeGraphModelToPng(Q,"tEXt","mxfile",encodeURIComponent(V)));P!=this.editor.graph&&P.container.parentNode.removeChild(P.container);
R(Q)}),la=G.pageId||(null!=this.pages?G.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var ta=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=la){var Q=P.getGlobalVariable;P=this.createTemporaryGraph(P.getStylesheet());for(var Z,na=0;na<this.pages.length;na++)if(this.pages[na].getId()==la){Z=this.updatePageRoot(this.pages[na]);break}null==Z&&(Z=this.currentPage);P.getGlobalVariable=function(Da){return"page"==Da?Z.getName():
-"pagenumber"==Da?1:Q.apply(this,arguments)};document.body.appendChild(P.container);P.model.setRoot(Z.root)}if(null!=G.layerIds){var va=P.model,Ba=va.getChildCells(va.getRoot()),sa={};for(na=0;na<G.layerIds.length;na++)sa[G.layerIds[na]]=!0;for(na=0;na<Ba.length;na++)va.setVisible(Ba[na],sa[Ba[na].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Da){ia(Da.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){ia(null)}),null,null,G.scale,G.transparent,G.shadow,
+"pagenumber"==Da?1:Q.apply(this,arguments)};document.body.appendChild(P.container);P.model.setRoot(Z.root)}if(null!=G.layerIds){var va=P.model,Ba=va.getChildCells(va.getRoot()),sa={};for(na=0;na<G.layerIds.length;na++)sa[G.layerIds[na]]=!0;for(na=0;na<Ba.length;na++)va.setVisible(Ba[na],sa[Ba[na].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Da){ha(Da.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){ha(null)}),null,null,G.scale,G.transparent,G.shadow,
null,P,G.border,null,G.grid,G.keepTheme)});null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(V),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ta)},0):ta()):ta()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==G.format?"1":"0")+(null!=la?"&pageId="+la:"")+(null!=G.layerIds&&0<G.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:G.layerIds})):"")+(null!=G.scale?"&scale="+G.scale:"")+"&base64=1&xml="+encodeURIComponent(V))).send(mxUtils.bind(this,
-function(Q){200<=Q.getStatus()&&299>=Q.getStatus()?R("data:image/png;base64,"+Q.getText()):ia(null)}),mxUtils.bind(this,function(){ia(null)}))}}else ta=mxUtils.bind(this,function(){var Q=this.createLoadMessage("export");Q.message=G;if("html2"==G.format||"html"==G.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var Z=this.getXmlFileData();Q.xml=mxUtils.getXml(Z);Q.data=this.getFileData(null,null,!0,null,null,null,Z);Q.format=G.format}else if("html"==G.format)Z=this.editor.getGraphXml(),
+function(Q){200<=Q.getStatus()&&299>=Q.getStatus()?R("data:image/png;base64,"+Q.getText()):ha(null)}),mxUtils.bind(this,function(){ha(null)}))}}else ta=mxUtils.bind(this,function(){var Q=this.createLoadMessage("export");Q.message=G;if("html2"==G.format||"html"==G.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var Z=this.getXmlFileData();Q.xml=mxUtils.getXml(Z);Q.data=this.getFileData(null,null,!0,null,null,null,Z);Q.format=G.format}else if("html"==G.format)Z=this.editor.getGraphXml(),
Q.data=this.getHtml(Z,this.editor.graph),Q.xml=mxUtils.getXml(Z),Q.format=G.format;else{mxSvgCanvas2D.prototype.foAltText=null;Z=null!=G.background?G.background:this.editor.graph.background;Z==mxConstants.NONE&&(Z=null);Q.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);Q.format="svg";var na=mxUtils.bind(this,function(va){this.editor.graph.setEnabled(!0);this.spinner.stop();Q.data=Editor.createSvgDataUri(va);F.postMessage(JSON.stringify(Q),"*")});if("xmlsvg"==G.format)(null==G.spin&&
null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin))&&this.getEmbeddedSvg(Q.xml,this.editor.graph,null,!0,na,null,null,G.embedImages,Z,G.scale,G.border,G.shadow,G.keepTheme);else if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin))this.editor.graph.setEnabled(!1),Z=this.editor.graph.getSvg(Z,G.scale,G.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||G.shadow,null,G.keepTheme),
(this.editor.graph.shadowVisible||G.shadow)&&this.editor.graph.addSvgShadow(Z),this.embedFonts(Z,mxUtils.bind(this,function(va){G.embedImages||null==G.embedImages?this.editor.convertImages(va,mxUtils.bind(this,function(Ba){na(mxUtils.getXml(Ba))})):na(mxUtils.getXml(va))}));return}F.postMessage(JSON.stringify(Q),"*")}),null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(G.xml),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ta)},0):ta()):ta();return}if("load"==
@@ -3719,22 +3720,22 @@ urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit")
g),f.className="geBigButton geBigStandardButton",f.style.marginLeft="6px",mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),d.appendChild(f),g=f);g.style.marginRight="20px";this.toolbar.container.appendChild(d);this.toolbar.staticElements.push(d);d.style.right="atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+
":",Editor.defaultCsvValue,mxUtils.bind(this,function(d){this.importCsv(d)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.loadOrgChartLayouts=function(d){var f=mxUtils.bind(this,function(){this.loadingOrgChart=!1;this.spinner.stop();d()});"undefined"!==typeof mxOrgChartLayout||this.loadingOrgChart||
this.isOffline(!0)?f():this.spinner.spin(document.body,mxResources.get("loading"))&&(this.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",f)})})}):mxscript("js/extensions.min.js",f))};EditorUi.prototype.importCsv=function(d,f){this.loadOrgChartLayouts(mxUtils.bind(this,function(){this.doImportCsv(d,f)}))};
-EditorUi.prototype.doImportCsv=function(d,f){try{var g=d.split("\n"),m=[],q=[],y=[],F={};if(0<g.length){var C={},H=this.editor.graph,G=null,aa=null,da=null,ba=null,Y=null,pa=null,O=null,X="whiteSpace=wrap;html=1;",ea=null,ka=null,ja="",U="auto",J="auto",V=!1,P=null,R=null,ia=40,la=40,ta=100,u=0,I=function(){null!=f?f(ra):(H.setSelectionCells(ra),H.scrollCellToVisible(H.getSelectionCell()))},N=H.getFreeInsertPoint(),W=N.x,T=N.y;N=T;var Q=null,Z="auto";ka=null;for(var na=[],va=null,Ba=null,sa=0;sa<
+EditorUi.prototype.doImportCsv=function(d,f){try{var g=d.split("\n"),m=[],q=[],y=[],F={};if(0<g.length){var C={},H=this.editor.graph,G=null,aa=null,da=null,ba=null,Y=null,pa=null,O=null,X="whiteSpace=wrap;html=1;",ea=null,ka=null,ja="",U="auto",J="auto",V=!1,P=null,R=null,ha=40,la=40,ta=100,u=0,I=function(){null!=f?f(ra):(H.setSelectionCells(ra),H.scrollCellToVisible(H.getSelectionCell()))},N=H.getFreeInsertPoint(),W=N.x,T=N.y;N=T;var Q=null,Z="auto";ka=null;for(var na=[],va=null,Ba=null,sa=0;sa<
g.length&&"#"==g[sa].charAt(0);){d=g[sa].replace(/\r$/,"");for(sa++;sa<g.length&&"\\"==d.charAt(d.length-1)&&"#"==g[sa].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(g[sa].substring(1)),sa++;if("#"!=d.charAt(1)){var Da=d.indexOf(":");if(0<Da){var Aa=mxUtils.trim(d.substring(1,Da)),za=mxUtils.trim(d.substring(Da+1));"label"==Aa?Q=H.sanitizeHtml(za):"labelname"==Aa&&0<za.length&&"-"!=za?Y=za:"labels"==Aa&&0<za.length&&"-"!=za?O=JSON.parse(za):"style"==Aa?aa=za:"parentstyle"==Aa?X=za:"unknownStyle"==
Aa&&"-"!=za?pa=za:"stylename"==Aa&&0<za.length&&"-"!=za?ba=za:"styles"==Aa&&0<za.length&&"-"!=za?da=JSON.parse(za):"vars"==Aa&&0<za.length&&"-"!=za?G=JSON.parse(za):"identity"==Aa&&0<za.length&&"-"!=za?ea=za:"parent"==Aa&&0<za.length&&"-"!=za?ka=za:"namespace"==Aa&&0<za.length&&"-"!=za?ja=za:"width"==Aa?U=za:"height"==Aa?J=za:"collapsed"==Aa&&"-"!=za?V="true"==za:"left"==Aa&&0<za.length?P=za:"top"==Aa&&0<za.length?R=za:"ignore"==Aa?Ba=za.split(","):"connect"==Aa?na.push(JSON.parse(za)):"link"==Aa?
-va=za:"padding"==Aa?u=parseFloat(za):"edgespacing"==Aa?ia=parseFloat(za):"nodespacing"==Aa?la=parseFloat(za):"levelspacing"==Aa?ta=parseFloat(za):"layout"==Aa&&(Z=za)}}}if(null==g[sa])throw Error(mxResources.get("invalidOrMissingFile"));var Ca=this.editor.csvToArray(g[sa].replace(/\r$/,""));Da=d=null;Aa=[];for(za=0;za<Ca.length;za++)ea==Ca[za]&&(d=za),ka==Ca[za]&&(Da=za),Aa.push(mxUtils.trim(Ca[za]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==Q&&(Q="%"+Aa[0]+"%");if(null!=
+va=za:"padding"==Aa?u=parseFloat(za):"edgespacing"==Aa?ha=parseFloat(za):"nodespacing"==Aa?la=parseFloat(za):"levelspacing"==Aa?ta=parseFloat(za):"layout"==Aa&&(Z=za)}}}if(null==g[sa])throw Error(mxResources.get("invalidOrMissingFile"));var Ca=this.editor.csvToArray(g[sa].replace(/\r$/,""));Da=d=null;Aa=[];for(za=0;za<Ca.length;za++)ea==Ca[za]&&(d=za),ka==Ca[za]&&(Da=za),Aa.push(mxUtils.trim(Ca[za]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==Q&&(Q="%"+Aa[0]+"%");if(null!=
na)for(var Qa=0;Qa<na.length;Qa++)null==C[na[Qa].to]&&(C[na[Qa].to]={});ea=[];for(za=sa+1;za<g.length;za++){var Za=this.editor.csvToArray(g[za].replace(/\r$/,""));if(null==Za){var cb=40<g[za].length?g[za].substring(0,40)+"...":g[za];throw Error(cb+" ("+za+"):\n"+mxResources.get("containsValidationErrors"));}0<Za.length&&ea.push(Za)}H.model.beginUpdate();try{for(za=0;za<ea.length;za++){Za=ea[za];var Ja=null,Ua=null!=d?ja+Za[d]:null;g=!1;null!=Ua&&(Ja=H.model.getCell(Ua),g=null==Ja||0<=mxUtils.indexOf(m,
Ja));var $a=new mxCell(Q,new mxGeometry(W,N,0,0),aa||"whiteSpace=wrap;html=1;");$a.collapsed=V;$a.vertex=!0;$a.id=Ua;null==Ja||g||H.model.setCollapsed(Ja,V);for(var z=0;z<Za.length;z++)H.setAttributeForCell($a,Aa[z],Za[z]),null==Ja||g||H.setAttributeForCell(Ja,Aa[z],Za[z]);if(null!=Y&&null!=O){var L=O[$a.getAttribute(Y)];null!=L&&(H.labelChanged($a,L),null==Ja||g||H.cellLabelChanged(Ja,L))}if(null!=ba&&null!=da){var M=da[$a.getAttribute(ba)];null!=M&&($a.style=M)}H.setAttributeForCell($a,"placeholders",
"1");$a.style=H.replacePlaceholders($a,$a.style,G);null!=Ja?(H.model.setStyle(Ja,$a.style),0>mxUtils.indexOf(y,Ja)&&y.push(Ja),H.fireEvent(new mxEventObject("cellsInserted","cells",[Ja]))):H.fireEvent(new mxEventObject("cellsInserted","cells",[$a]));g=null!=Ja;Ja=$a;if(!g)for(Qa=0;Qa<na.length;Qa++)C[na[Qa].to][Ja.getAttribute(na[Qa].to)]=Ja;null!=va&&"link"!=va&&(H.setLinkForCell(Ja,Ja.getAttribute(va)),H.setAttributeForCell(Ja,va,null));var S=this.editor.graph.getPreferredSizeForCell(Ja);ka=null!=
-Da?H.model.getCell(ja+Za[Da]):null;if(Ja.vertex){cb=null!=ka?0:W;sa=null!=ka?0:T;null!=P&&null!=Ja.getAttribute(P)&&(Ja.geometry.x=cb+parseFloat(Ja.getAttribute(P)));null!=R&&null!=Ja.getAttribute(R)&&(Ja.geometry.y=sa+parseFloat(Ja.getAttribute(R)));var ca="@"==U.charAt(0)?Ja.getAttribute(U.substring(1)):null;Ja.geometry.width=null!=ca&&"auto"!=ca?parseFloat(Ja.getAttribute(U.substring(1))):"auto"==U||"auto"==ca?S.width+u:parseFloat(U);var ha="@"==J.charAt(0)?Ja.getAttribute(J.substring(1)):null;
-Ja.geometry.height=null!=ha&&"auto"!=ha?parseFloat(ha):"auto"==J||"auto"==ha?S.height+u:parseFloat(J);N+=Ja.geometry.height+la}g?(null==F[Ua]&&(F[Ua]=[]),F[Ua].push(Ja)):(m.push(Ja),null!=ka?(ka.style=H.replacePlaceholders(ka,X,G),H.addCell(Ja,ka),q.push(ka)):y.push(H.addCell(Ja)))}for(za=0;za<q.length;za++)ca="@"==U.charAt(0)?q[za].getAttribute(U.substring(1)):null,ha="@"==J.charAt(0)?q[za].getAttribute(J.substring(1)):null,"auto"!=U&&"auto"!=ca||"auto"!=J&&"auto"!=ha||H.updateGroupBounds([q[za]],
+Da?H.model.getCell(ja+Za[Da]):null;if(Ja.vertex){cb=null!=ka?0:W;sa=null!=ka?0:T;null!=P&&null!=Ja.getAttribute(P)&&(Ja.geometry.x=cb+parseFloat(Ja.getAttribute(P)));null!=R&&null!=Ja.getAttribute(R)&&(Ja.geometry.y=sa+parseFloat(Ja.getAttribute(R)));var ca="@"==U.charAt(0)?Ja.getAttribute(U.substring(1)):null;Ja.geometry.width=null!=ca&&"auto"!=ca?parseFloat(Ja.getAttribute(U.substring(1))):"auto"==U||"auto"==ca?S.width+u:parseFloat(U);var ia="@"==J.charAt(0)?Ja.getAttribute(J.substring(1)):null;
+Ja.geometry.height=null!=ia&&"auto"!=ia?parseFloat(ia):"auto"==J||"auto"==ia?S.height+u:parseFloat(J);N+=Ja.geometry.height+la}g?(null==F[Ua]&&(F[Ua]=[]),F[Ua].push(Ja)):(m.push(Ja),null!=ka?(ka.style=H.replacePlaceholders(ka,X,G),H.addCell(Ja,ka),q.push(ka)):y.push(H.addCell(Ja)))}for(za=0;za<q.length;za++)ca="@"==U.charAt(0)?q[za].getAttribute(U.substring(1)):null,ia="@"==J.charAt(0)?q[za].getAttribute(J.substring(1)):null,"auto"!=U&&"auto"!=ca||"auto"!=J&&"auto"!=ia||H.updateGroupBounds([q[za]],
u,!0);var oa=y.slice(),ra=y.slice();for(Qa=0;Qa<na.length;Qa++){var qa=na[Qa];for(za=0;za<m.length;za++){Ja=m[za];var xa=mxUtils.bind(this,function(db,Va,fb){var kb=Va.getAttribute(fb.from);if(null!=kb&&""!=kb){kb=kb.split(",");for(var ub=0;ub<kb.length;ub++){var nb=C[fb.to][kb[ub]];if(null==nb&&null!=pa){nb=new mxCell(kb[ub],new mxGeometry(W,T,0,0),pa);nb.style=H.replacePlaceholders(Va,nb.style,G);var Ya=this.editor.graph.getPreferredSizeForCell(nb);nb.geometry.width=Ya.width+u;nb.geometry.height=
Ya.height+u;C[fb.to][kb[ub]]=nb;nb.vertex=!0;nb.id=kb[ub];y.push(H.addCell(nb))}if(null!=nb){Ya=fb.label;null!=fb.fromlabel&&(Ya=(Va.getAttribute(fb.fromlabel)||"")+(Ya||""));null!=fb.sourcelabel&&(Ya=H.replacePlaceholders(Va,fb.sourcelabel,G)+(Ya||""));null!=fb.tolabel&&(Ya=(Ya||"")+(nb.getAttribute(fb.tolabel)||""));null!=fb.targetlabel&&(Ya=(Ya||"")+H.replacePlaceholders(nb,fb.targetlabel,G));var gb="target"==fb.placeholders==!fb.invert?nb:db;gb=null!=fb.style?H.replacePlaceholders(gb,fb.style,
G):H.createCurrentEdgeStyle();Ya=H.insertEdge(null,null,Ya||"",fb.invert?nb:db,fb.invert?db:nb,gb);if(null!=fb.labels)for(gb=0;gb<fb.labels.length;gb++){var hb=fb.labels[gb],ob=new mxCell(hb.label||gb,new mxGeometry(null!=hb.x?hb.x:0,null!=hb.y?hb.y:0,0,0),"resizable=0;html=1;");ob.vertex=!0;ob.connectable=!1;ob.geometry.relative=!0;null!=hb.placeholders&&(ob.value=H.replacePlaceholders("target"==hb.placeholders==!fb.invert?nb:db,ob.value,G));if(null!=hb.dx||null!=hb.dy)ob.geometry.offset=new mxPoint(null!=
-hb.dx?hb.dx:0,null!=hb.dy?hb.dy:0);Ya.insert(ob)}ra.push(Ya);mxUtils.remove(fb.invert?db:nb,oa)}}}});xa(Ja,Ja,qa);if(null!=F[Ja.id])for(z=0;z<F[Ja.id].length;z++)xa(Ja,F[Ja.id][z],qa)}}if(null!=Ba)for(za=0;za<m.length;za++)for(Ja=m[za],z=0;z<Ba.length;z++)H.setAttributeForCell(Ja,mxUtils.trim(Ba[z]),null);if(0<y.length){var Ga=new mxParallelEdgeLayout(H);Ga.spacing=ia;Ga.checkOverlap=!0;var La=function(){0<Ga.spacing&&Ga.execute(H.getDefaultParent());for(var db=0;db<y.length;db++){var Va=H.getCellGeometry(y[db]);
+hb.dx?hb.dx:0,null!=hb.dy?hb.dy:0);Ya.insert(ob)}ra.push(Ya);mxUtils.remove(fb.invert?db:nb,oa)}}}});xa(Ja,Ja,qa);if(null!=F[Ja.id])for(z=0;z<F[Ja.id].length;z++)xa(Ja,F[Ja.id][z],qa)}}if(null!=Ba)for(za=0;za<m.length;za++)for(Ja=m[za],z=0;z<Ba.length;z++)H.setAttributeForCell(Ja,mxUtils.trim(Ba[z]),null);if(0<y.length){var Ga=new mxParallelEdgeLayout(H);Ga.spacing=ha;Ga.checkOverlap=!0;var La=function(){0<Ga.spacing&&Ga.execute(H.getDefaultParent());for(var db=0;db<y.length;db++){var Va=H.getCellGeometry(y[db]);
Va.x=Math.round(H.snap(Va.x));Va.y=Math.round(H.snap(Va.y));"auto"==U&&(Va.width=Math.round(H.snap(Va.width)));"auto"==J&&(Va.height=Math.round(H.snap(Va.height)))}};if("["==Z.charAt(0)){var Pa=I;H.view.validate();this.executeLayouts(H.createLayouts(JSON.parse(Z)),function(){La();Pa()});I=null}else if("circle"==Z){var Oa=new mxCircleLayout(H);Oa.disableEdgeStyle=!1;Oa.resetEdges=!1;var Ta=Oa.isVertexIgnored;Oa.isVertexIgnored=function(db){return Ta.apply(this,arguments)||0>mxUtils.indexOf(y,db)};
this.executeLayout(function(){Oa.execute(H.getDefaultParent());La()},!0,I);I=null}else if("horizontaltree"==Z||"verticaltree"==Z||"auto"==Z&&ra.length==2*y.length-1&&1==oa.length){H.view.validate();var Ma=new mxCompactTreeLayout(H,"horizontaltree"==Z);Ma.levelDistance=la;Ma.edgeRouting=!1;Ma.resetEdges=!1;this.executeLayout(function(){Ma.execute(H.getDefaultParent(),0<oa.length?oa[0]:null)},!0,I);I=null}else if("horizontalflow"==Z||"verticalflow"==Z||"auto"==Z&&1==oa.length){H.view.validate();var ua=
-new mxHierarchicalLayout(H,"horizontalflow"==Z?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ua.intraCellSpacing=la;ua.parallelEdgeSpacing=ia;ua.interRankCellSpacing=ta;ua.disableEdgeStyle=!1;this.executeLayout(function(){ua.execute(H.getDefaultParent(),ra);H.moveCells(ra,W,T)},!0,I);I=null}else if("orgchart"==Z){H.view.validate();var ya=new mxOrgChartLayout(H,2,ta,la),Na=ya.isVertexIgnored;ya.isVertexIgnored=function(db){return Na.apply(this,arguments)||0>mxUtils.indexOf(y,db)};this.executeLayout(function(){ya.execute(H.getDefaultParent());
+new mxHierarchicalLayout(H,"horizontalflow"==Z?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ua.intraCellSpacing=la;ua.parallelEdgeSpacing=ha;ua.interRankCellSpacing=ta;ua.disableEdgeStyle=!1;this.executeLayout(function(){ua.execute(H.getDefaultParent(),ra);H.moveCells(ra,W,T)},!0,I);I=null}else if("orgchart"==Z){H.view.validate();var ya=new mxOrgChartLayout(H,2,ta,la),Na=ya.isVertexIgnored;ya.isVertexIgnored=function(db){return Na.apply(this,arguments)||0>mxUtils.indexOf(y,db)};this.executeLayout(function(){ya.execute(H.getDefaultParent());
La()},!0,I);I=null}else if("organic"==Z||"auto"==Z&&ra.length>y.length){H.view.validate();var Fa=new mxFastOrganicLayout(H);Fa.forceConstant=3*la;Fa.disableEdgeStyle=!1;Fa.resetEdges=!1;var Ra=Fa.isVertexIgnored;Fa.isVertexIgnored=function(db){return Ra.apply(this,arguments)||0>mxUtils.indexOf(y,db)};this.executeLayout(function(){Fa.execute(H.getDefaultParent());La()},!0,I);I=null}}this.hideDialog()}finally{H.model.endUpdate()}null!=I&&I()}}catch(db){this.handleError(db)}};EditorUi.prototype.getSearch=
function(d){var f="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var g="?",m;for(m in urlParams)0>mxUtils.indexOf(d,m)&&null!=urlParams[m]&&(f+=g+m+"="+urlParams[m],g="&")}else f=window.location.search;return f};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var f=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),
m;for(m in urlParams)0>mxUtils.indexOf(g,m)&&(d=0==f?d+"?":d+"&",null!=urlParams[m]&&(d+=m+"="+urlParams[m],f++))}return d};EditorUi.prototype.showLinkDialog=function(d,f,g,m,q){d=new LinkDialog(this,d,f,g,!0,m,q);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var f=1;null==this.drive&&"function"!==typeof window.DriveClient||f++;null==this.dropbox&&"function"!==typeof window.DropboxClient||f++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||
@@ -3775,17 +3776,17 @@ f,g,m,q,y,F,C,H,G,aa,da,ba,Y,pa,O){EditorUi.logEvent("SHOULD NOT BE CALLED: expo
function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,f)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(d,f,g,m)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};
EditorUi.prototype.writeGraphModelToPng=function(d,f,g,m,q){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,f,g,m,q)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],f=0;f<localStorage.length;f++){var g=localStorage.key(f),m=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<m.length){var q="<mxfile "===
m.substring(0,8)||"<?xml"===m.substring(0,5)||"\x3c!--[if IE]>"===m.substring(0,12);m="<mxlibrary>"===m.substring(0,11);(q||m)&&d.push(g)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var f=localStorage.getItem(d);return{title:d,data:f,isLib:"<mxlibrary>"===f.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
-var CommentsWindow=function(b,e,k,n,D,t){function E(){for(var ja=da.getElementsByTagName("div"),U=0,J=0;J<ja.length;J++)"none"!=ja[J].style.display&&ja[J].parentNode==da&&U++;ba.style.display=0==U?"block":"none"}function d(ja,U,J,V){function P(){U.removeChild(la);U.removeChild(ta);ia.style.display="block";R.style.display="block"}H={div:U,comment:ja,saveCallback:J,deleteOnCancel:V};var R=U.querySelector(".geCommentTxt"),ia=U.querySelector(".geCommentActionsList"),la=document.createElement("textarea");
+var CommentsWindow=function(b,e,k,n,D,t){function E(){for(var ja=da.getElementsByTagName("div"),U=0,J=0;J<ja.length;J++)"none"!=ja[J].style.display&&ja[J].parentNode==da&&U++;ba.style.display=0==U?"block":"none"}function d(ja,U,J,V){function P(){U.removeChild(la);U.removeChild(ta);ha.style.display="block";R.style.display="block"}H={div:U,comment:ja,saveCallback:J,deleteOnCancel:V};var R=U.querySelector(".geCommentTxt"),ha=U.querySelector(".geCommentActionsList"),la=document.createElement("textarea");
la.className="geCommentEditTxtArea";la.style.minHeight=R.offsetHeight+"px";la.value=ja.content;U.insertBefore(la,R);var ta=document.createElement("div");ta.className="geCommentEditBtns";var u=mxUtils.button(mxResources.get("cancel"),function(){V?(U.parentNode.removeChild(U),E()):P();H=null});u.className="geCommentEditBtn";ta.appendChild(u);var I=mxUtils.button(mxResources.get("save"),function(){R.innerText="";ja.content=la.value;mxUtils.write(R,ja.content);P();J(ja);H=null});mxEvent.addListener(la,
-"keydown",mxUtils.bind(this,function(N){mxEvent.isConsumed(N)||((mxEvent.isControlDown(N)||mxClient.IS_MAC&&mxEvent.isMetaDown(N))&&13==N.keyCode?(I.click(),mxEvent.consume(N)):27==N.keyCode&&(u.click(),mxEvent.consume(N)))}));I.focus();I.className="geCommentEditBtn gePrimaryBtn";ta.appendChild(I);U.insertBefore(ta,R);ia.style.display="none";R.style.display="none";la.focus()}function f(ja,U){U.innerText="";ja=new Date(ja.modifiedDate);var J=b.timeSince(ja);null==J&&(J=mxResources.get("lessThanAMinute"));
+"keydown",mxUtils.bind(this,function(N){mxEvent.isConsumed(N)||((mxEvent.isControlDown(N)||mxClient.IS_MAC&&mxEvent.isMetaDown(N))&&13==N.keyCode?(I.click(),mxEvent.consume(N)):27==N.keyCode&&(u.click(),mxEvent.consume(N)))}));I.focus();I.className="geCommentEditBtn gePrimaryBtn";ta.appendChild(I);U.insertBefore(ta,R);ha.style.display="none";R.style.display="none";la.focus()}function f(ja,U){U.innerText="";ja=new Date(ja.modifiedDate);var J=b.timeSince(ja);null==J&&(J=mxResources.get("lessThanAMinute"));
mxUtils.write(U,mxResources.get("timeAgo",[J],"{1} ago"));U.setAttribute("title",ja.toLocaleDateString()+" "+ja.toLocaleTimeString())}function g(ja){var U=document.createElement("img");U.className="geCommentBusyImg";U.src=IMAGE_PATH+"/spin.gif";ja.appendChild(U);ja.busyImg=U}function m(ja){ja.style.border="1px solid red";ja.removeChild(ja.busyImg)}function q(ja){ja.style.border="";ja.removeChild(ja.busyImg)}function y(ja,U,J,V,P){function R(T,Q,Z){var na=document.createElement("li");na.className=
-"geCommentAction";var va=document.createElement("a");va.className="geCommentActionLnk";mxUtils.write(va,T);na.appendChild(va);mxEvent.addListener(va,"click",function(Ba){Q(Ba,ja);Ba.preventDefault();mxEvent.consume(Ba)});W.appendChild(na);Z&&(na.style.display="none")}function ia(){function T(na){Q.push(Z);if(null!=na.replies)for(var va=0;va<na.replies.length;va++)Z=Z.nextSibling,T(na.replies[va])}var Q=[],Z=ta;T(ja);return{pdiv:Z,replies:Q}}function la(T,Q,Z,na,va){function Ba(){g(za);ja.addReply(Aa,
-function(Ca){Aa.id=Ca;ja.replies.push(Aa);q(za);Z&&Z()},function(Ca){sa();m(za);b.handleError(Ca,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},na,va)}function sa(){d(Aa,za,function(Ca){Ba()},!0)}var Da=ia().pdiv,Aa=b.newComment(T,b.getCurrentUser());Aa.pCommentId=ja.id;null==ja.replies&&(ja.replies=[]);var za=y(Aa,ja.replies,Da,V+1);Q?sa():Ba()}if(P||!ja.isResolved){ba.style.display="none";var ta=document.createElement("div");ta.className="geCommentContainer";ta.setAttribute("data-commentId",
+"geCommentAction";var va=document.createElement("a");va.className="geCommentActionLnk";mxUtils.write(va,T);na.appendChild(va);mxEvent.addListener(va,"click",function(Ba){Q(Ba,ja);Ba.preventDefault();mxEvent.consume(Ba)});W.appendChild(na);Z&&(na.style.display="none")}function ha(){function T(na){Q.push(Z);if(null!=na.replies)for(var va=0;va<na.replies.length;va++)Z=Z.nextSibling,T(na.replies[va])}var Q=[],Z=ta;T(ja);return{pdiv:Z,replies:Q}}function la(T,Q,Z,na,va){function Ba(){g(za);ja.addReply(Aa,
+function(Ca){Aa.id=Ca;ja.replies.push(Aa);q(za);Z&&Z()},function(Ca){sa();m(za);b.handleError(Ca,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},na,va)}function sa(){d(Aa,za,function(Ca){Ba()},!0)}var Da=ha().pdiv,Aa=b.newComment(T,b.getCurrentUser());Aa.pCommentId=ja.id;null==ja.replies&&(ja.replies=[]);var za=y(Aa,ja.replies,Da,V+1);Q?sa():Ba()}if(P||!ja.isResolved){ba.style.display="none";var ta=document.createElement("div");ta.className="geCommentContainer";ta.setAttribute("data-commentId",
ja.id);ta.style.marginLeft=20*V+5+"px";ja.isResolved&&!Editor.isDarkMode()&&(ta.style.backgroundColor="ghostWhite");var u=document.createElement("div");u.className="geCommentHeader";var I=document.createElement("img");I.className="geCommentUserImg";I.src=ja.user.pictureUrl||Editor.userImage;u.appendChild(I);I=document.createElement("div");I.className="geCommentHeaderTxt";u.appendChild(I);var N=document.createElement("div");N.className="geCommentUsername";mxUtils.write(N,ja.user.displayName||"");I.appendChild(N);
N=document.createElement("div");N.className="geCommentDate";N.setAttribute("data-commentId",ja.id);f(ja,N);I.appendChild(N);ta.appendChild(u);u=document.createElement("div");u.className="geCommentTxt";mxUtils.write(u,ja.content||"");ta.appendChild(u);ja.isLocked&&(ta.style.opacity="0.5");u=document.createElement("div");u.className="geCommentActions";var W=document.createElement("ul");W.className="geCommentActionsList";u.appendChild(W);F||ja.isLocked||0!=V&&!C||R(mxResources.get("reply"),function(){la("",
!0)},ja.isResolved);I=b.getCurrentUser();null==I||I.id!=ja.user.id||F||ja.isLocked||(R(mxResources.get("edit"),function(){function T(){d(ja,ta,function(){g(ta);ja.editComment(ja.content,function(){q(ta)},function(Q){m(ta);T();b.handleError(Q,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}T()},ja.isResolved),R(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(ta);ja.deleteComment(function(T){if(!0===T){T=ta.querySelector(".geCommentTxt");
-T.innerText="";mxUtils.write(T,mxResources.get("msgDeleted"));var Q=ta.querySelectorAll(".geCommentAction");for(T=0;T<Q.length;T++)Q[T].parentNode.removeChild(Q[T]);q(ta);ta.style.opacity="0.5"}else{Q=ia(ja).replies;for(T=0;T<Q.length;T++)da.removeChild(Q[T]);for(T=0;T<U.length;T++)if(U[T]==ja){U.splice(T,1);break}ba.style.display=0==da.getElementsByTagName("div").length?"block":"none"}},function(T){m(ta);b.handleError(T,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
-ja.isResolved));F||ja.isLocked||0!=V||R(ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(T){function Q(){var Z=T.target;Z.innerText="";ja.isResolved=!ja.isResolved;mxUtils.write(Z,ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var na=ja.isResolved?"none":"",va=ia(ja).replies,Ba=Editor.isDarkMode()?"transparent":ja.isResolved?"ghostWhite":"white",sa=0;sa<va.length;sa++){va[sa].style.backgroundColor=Ba;for(var Da=va[sa].querySelectorAll(".geCommentAction"),
+T.innerText="";mxUtils.write(T,mxResources.get("msgDeleted"));var Q=ta.querySelectorAll(".geCommentAction");for(T=0;T<Q.length;T++)Q[T].parentNode.removeChild(Q[T]);q(ta);ta.style.opacity="0.5"}else{Q=ha(ja).replies;for(T=0;T<Q.length;T++)da.removeChild(Q[T]);for(T=0;T<U.length;T++)if(U[T]==ja){U.splice(T,1);break}ba.style.display=0==da.getElementsByTagName("div").length?"block":"none"}},function(T){m(ta);b.handleError(T,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
+ja.isResolved));F||ja.isLocked||0!=V||R(ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(T){function Q(){var Z=T.target;Z.innerText="";ja.isResolved=!ja.isResolved;mxUtils.write(Z,ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var na=ja.isResolved?"none":"",va=ha(ja).replies,Ba=Editor.isDarkMode()?"transparent":ja.isResolved?"ghostWhite":"white",sa=0;sa<va.length;sa++){va[sa].style.backgroundColor=Ba;for(var Da=va[sa].querySelectorAll(".geCommentAction"),
Aa=0;Aa<Da.length;Aa++)Da[Aa]!=Z.parentNode&&(Da[Aa].style.display=na);O||(va[sa].style.display="none")}E()}ja.isResolved?la(mxResources.get("reOpened")+": ",!0,Q,!1,!0):la(mxResources.get("markedAsResolved"),!1,Q,!0)});ta.appendChild(u);null!=J?da.insertBefore(ta,J.nextSibling):da.appendChild(ta);for(J=0;null!=ja.replies&&J<ja.replies.length;J++)u=ja.replies[J],u.isResolved=ja.isResolved,y(u,ja.replies,null,V+1,P);null!=H&&(H.comment.id==ja.id?(P=ja.content,ja.content=H.comment.content,d(ja,ta,H.saveCallback,
H.deleteOnCancel),ja.content=P):null==H.comment.id&&H.comment.pCommentId==ja.id&&(da.appendChild(H.div),d(H.comment,H.div,H.saveCallback,H.deleteOnCancel)));return ta}}var F=!b.canComment(),C=b.canReplyToReplies(),H=null,G=document.createElement("div");G.className="geCommentsWin";G.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var aa=EditorUi.compactUi?"26px":"30px",da=document.createElement("div");da.className="geCommentsList";da.style.backgroundColor=Editor.isDarkMode()?
Dialog.backdropColor:"whiteSmoke";da.style.bottom=parseInt(aa)+7+"px";G.appendChild(da);var ba=document.createElement("span");ba.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(ba,mxResources.get("noCommentsFound"));var Y=document.createElement("div");Y.className="geToolbarContainer geCommentsToolbar";Y.style.height=aa;Y.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";Y.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";aa=document.createElement("a");
@@ -3793,8 +3794,8 @@ aa.className="geButton";if(!F){var pa=aa.cloneNode();pa.innerHTML='<div class="g
U();ja.preventDefault();mxEvent.consume(ja)});Y.appendChild(pa)}pa=aa.cloneNode();pa.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';pa.setAttribute("title",mxResources.get("showResolved"));var O=!1;Editor.isDarkMode()&&(pa.style.filter="invert(100%)");mxEvent.addListener(pa,"click",function(ja){this.className=(O=!O)?"geButton geCheckedBtn":"geButton";ea();ja.preventDefault();mxEvent.consume(ja)});Y.appendChild(pa);b.commentsRefreshNeeded()&&(pa=aa.cloneNode(),
pa.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',pa.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(pa.style.filter="invert(100%)"),mxEvent.addListener(pa,"click",function(ja){ea();ja.preventDefault();mxEvent.consume(ja)}),Y.appendChild(pa));b.commentsSaveNeeded()&&(aa=aa.cloneNode(),aa.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',aa.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&
(aa.style.filter="invert(100%)"),mxEvent.addListener(aa,"click",function(ja){t();ja.preventDefault();mxEvent.consume(ja)}),Y.appendChild(aa));G.appendChild(Y);var X=[],ea=mxUtils.bind(this,function(){this.hasError=!1;if(null!=H)try{H.div=H.div.cloneNode(!0);var ja=H.div.querySelector(".geCommentEditTxtArea"),U=H.div.querySelector(".geCommentEditBtns");H.comment.content=ja.value;ja.parentNode.removeChild(ja);U.parentNode.removeChild(U)}catch(J){b.handleError(J)}da.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+
-IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";C=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(J){function V(P){if(null!=P){P.sort(function(ia,la){return new Date(ia.modifiedDate)-new Date(la.modifiedDate)});for(var R=0;R<P.length;R++)V(P[R].replies)}}J.sort(function(P,R){return new Date(P.modifiedDate)-new Date(R.modifiedDate)});da.innerText="";da.appendChild(ba);ba.style.display="block";X=J;for(J=0;J<X.length;J++)V(X[J].replies),
-y(X[J],X,null,0,O);null!=H&&null==H.comment.id&&null==H.comment.pCommentId&&(da.appendChild(H.div),d(H.comment,H.div,H.saveCallback,H.deleteOnCancel))},mxUtils.bind(this,function(J){da.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(J&&J.message?": "+J.message:""));this.hasError=!0})):da.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});ea();this.refreshComments=ea;Y=mxUtils.bind(this,function(){function ja(R){var ia=J[R.id];if(null!=ia)for(f(R,ia),ia=0;null!=R.replies&&ia<R.replies.length;ia++)ja(R.replies[ia])}
+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";C=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(J){function V(P){if(null!=P){P.sort(function(ha,la){return new Date(ha.modifiedDate)-new Date(la.modifiedDate)});for(var R=0;R<P.length;R++)V(P[R].replies)}}J.sort(function(P,R){return new Date(P.modifiedDate)-new Date(R.modifiedDate)});da.innerText="";da.appendChild(ba);ba.style.display="block";X=J;for(J=0;J<X.length;J++)V(X[J].replies),
+y(X[J],X,null,0,O);null!=H&&null==H.comment.id&&null==H.comment.pCommentId&&(da.appendChild(H.div),d(H.comment,H.div,H.saveCallback,H.deleteOnCancel))},mxUtils.bind(this,function(J){da.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(J&&J.message?": "+J.message:""));this.hasError=!0})):da.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});ea();this.refreshComments=ea;Y=mxUtils.bind(this,function(){function ja(R){var ha=J[R.id];if(null!=ha)for(f(R,ha),ha=0;null!=R.replies&&ha<R.replies.length;ha++)ja(R.replies[ha])}
if(this.window.isVisible()){for(var U=da.querySelectorAll(".geCommentDate"),J={},V=0;V<U.length;V++){var P=U[V];J[P.getAttribute("data-commentId")]=P}for(V=0;V<X.length;V++)ja(X[V])}});setInterval(Y,6E4);this.refreshCommentsTime=Y;this.window=new mxWindow(mxResources.get("comments"),G,e,k,n,D,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,
mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(ja,U){var J=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;ja=Math.max(0,Math.min(ja,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));U=Math.max(0,Math.min(U,J-this.table.clientHeight-48));this.getX()==ja&&this.getY()==U||mxWindow.prototype.setLocation.apply(this,arguments)};var ka=mxUtils.bind(this,function(){var ja=
this.window.getX(),U=this.window.getY();this.window.setLocation(ja,U)});mxEvent.addListener(window,"resize",ka);this.destroy=function(){mxEvent.removeListener(window,"resize",ka);this.window.destroy()}},ConfirmDialog=function(b,e,k,n,D,t,E,d,f,g,m){var q=document.createElement("div");q.style.textAlign="center";m=null!=m?m:44;var y=document.createElement("div");y.style.padding="6px";y.style.overflow="auto";y.style.maxHeight=m+"px";y.style.lineHeight="1.2em";mxUtils.write(y,e);q.appendChild(y);null!=
@@ -3874,30 +3875,30 @@ n));return n};b.beforeDecode=function(e,k,n){n.ui=e.ui;n.relatedPage=n.ui.getPag
function(n,D){this.model.beginUpdate();try{var t=[];this.traverse(D,!0,mxUtils.bind(this,function(d,f){var g=null!=f&&this.isTreeEdge(f);g&&t.push(f);d==D||null!=f&&!g||t.push(d);return(null==f||g)&&(d==D||!this.model.isCollapsed(d))}));this.model.setCollapsed(D,n);for(var E=0;E<t.length;E++)this.model.setVisible(t[E],!n)}finally{this.model.endUpdate()}};Graph.prototype.isTreeEdge=function(n){return!this.isEdgeIgnored(n)};Graph.prototype.getTreeEdges=function(n,D,t,E,d,f){return this.model.filterCells(this.getEdges(n,
D,t,E,d,f),mxUtils.bind(this,function(g){return this.isTreeEdge(g)}))};Graph.prototype.getIncomingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!0,!1,!1)};Graph.prototype.getOutgoingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!1,!0,!1)};var e=EditorUi.prototype.init;EditorUi.prototype.init=function(){e.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function n(J){return H.isVertex(J)&&t(J)}function D(J){var V=
!1;null!=J&&(V="1"==C.getCurrentCellStyle(J).treeMoving);return V}function t(J){var V=!1;null!=J&&(J=H.getParent(J),V=C.view.getState(J),V="tree"==(null!=V?V.style:C.getCellStyle(J)).containerType);return V}function E(J){var V=!1;null!=J&&(J=H.getParent(J),V=C.view.getState(J),C.view.getState(J),V=null!=(null!=V?V.style:C.getCellStyle(J)).childLayout);return V}function d(J){J=C.view.getState(J);if(null!=J){var V=C.getIncomingTreeEdges(J.cell);if(0<V.length&&(V=C.view.getState(V[0]),null!=V&&(V=V.absolutePoints,
-null!=V&&0<V.length&&(V=V[V.length-1],null!=V)))){if(V.y==J.y&&Math.abs(V.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_SOUTH;if(V.y==J.y+J.height&&Math.abs(V.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_NORTH;if(V.x>J.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function f(J,V){V=null!=V?V:!0;C.model.beginUpdate();try{var P=C.model.getParent(J),R=C.getIncomingTreeEdges(J),ia=C.cloneCells([R[0],J]);C.model.setTerminal(ia[0],C.model.getTerminal(R[0],
-!0),!0);var la=d(J),ta=P.geometry;la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?ia[1].geometry.x+=V?J.geometry.width+10:-ia[1].geometry.width-10:ia[1].geometry.y+=V?J.geometry.height+10:-ia[1].geometry.height-10;C.view.currentRoot!=P&&(ia[1].geometry.x-=ta.x,ia[1].geometry.y-=ta.y);var u=C.view.getState(J),I=C.view.scale;if(null!=u){var N=mxRectangle.fromRectangle(u);la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?N.x+=(V?J.geometry.width+10:-ia[1].geometry.width-
-10)*I:N.y+=(V?J.geometry.height+10:-ia[1].geometry.height-10)*I;var W=C.getOutgoingTreeEdges(C.model.getTerminal(R[0],!0));if(null!=W){for(var T=la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH,Q=ta=R=0;Q<W.length;Q++){var Z=C.model.getTerminal(W[Q],!1);if(la==d(Z)){var na=C.view.getState(Z);Z!=J&&null!=na&&(T&&V!=na.getCenterX()<u.getCenterX()||!T&&V!=na.getCenterY()<u.getCenterY())&&mxUtils.intersects(N,na)&&(R=10+Math.max(R,(Math.min(N.x+N.width,na.x+na.width)-Math.max(N.x,na.x))/
-I),ta=10+Math.max(ta,(Math.min(N.y+N.height,na.y+na.height)-Math.max(N.y,na.y))/I))}}T?ta=0:R=0;for(Q=0;Q<W.length;Q++)if(Z=C.model.getTerminal(W[Q],!1),la==d(Z)&&(na=C.view.getState(Z),Z!=J&&null!=na&&(T&&V!=na.getCenterX()<u.getCenterX()||!T&&V!=na.getCenterY()<u.getCenterY()))){var va=[];C.traverse(na.cell,!0,function(Ba,sa){var Da=null!=sa&&C.isTreeEdge(sa);Da&&va.push(sa);(null==sa||Da)&&va.push(Ba);return null==sa||Da});C.moveCells(va,(V?1:-1)*R,(V?1:-1)*ta)}}}return C.addCells(ia,P)}finally{C.model.endUpdate()}}
-function g(J){C.model.beginUpdate();try{var V=d(J),P=C.getIncomingTreeEdges(J),R=C.cloneCells([P[0],J]);C.model.setTerminal(P[0],R[1],!1);C.model.setTerminal(R[0],R[1],!0);C.model.setTerminal(R[0],J,!1);var ia=C.model.getParent(J),la=ia.geometry,ta=[];C.view.currentRoot!=ia&&(R[1].geometry.x-=la.x,R[1].geometry.y-=la.y);C.traverse(J,!0,function(N,W){var T=null!=W&&C.isTreeEdge(W);T&&ta.push(W);(null==W||T)&&ta.push(N);return null==W||T});var u=J.geometry.width+40,I=J.geometry.height+40;V==mxConstants.DIRECTION_SOUTH?
-u=0:V==mxConstants.DIRECTION_NORTH?(u=0,I=-I):V==mxConstants.DIRECTION_WEST?(u=-u,I=0):V==mxConstants.DIRECTION_EAST&&(I=0);C.moveCells(ta,u,I);return C.addCells(R,ia)}finally{C.model.endUpdate()}}function m(J,V){C.model.beginUpdate();try{var P=C.model.getParent(J),R=C.getIncomingTreeEdges(J),ia=d(J);0==R.length&&(R=[C.createEdge(P,null,"",null,null,C.createCurrentEdgeStyle())],ia=V);var la=C.cloneCells([R[0],J]);C.model.setTerminal(la[0],J,!0);if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],
-la[1],!1);var ta=C.getCellStyle(la[1]).newEdgeStyle;if(null!=ta)try{var u=JSON.parse(ta),I;for(I in u)C.setCellStyles(I,u[I],[la[0]]),"edgeStyle"==I&&"elbowEdgeStyle"==u[I]&&C.setCellStyles("elbow",ia==mxConstants.DIRECTION_SOUTH||ia==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[la[0]])}catch(na){}}R=C.getOutgoingTreeEdges(J);var N=P.geometry;V=[];C.view.currentRoot==P&&(N=new mxRectangle);for(ta=0;ta<R.length;ta++){var W=C.model.getTerminal(R[ta],!1);null!=W&&V.push(W)}var T=C.view.getBounds(V),
-Q=C.view.translate,Z=C.view.scale;ia==mxConstants.DIRECTION_SOUTH?(la[1].geometry.x=null==T?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(T.x+T.width)/Z-Q.x-N.x+10,la[1].geometry.y+=la[1].geometry.height-N.y+40):ia==mxConstants.DIRECTION_NORTH?(la[1].geometry.x=null==T?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(T.x+T.width)/Z-Q.x+-N.x+10,la[1].geometry.y-=la[1].geometry.height+N.y+40):(la[1].geometry.x=ia==mxConstants.DIRECTION_WEST?la[1].geometry.x-(la[1].geometry.width+N.x+
-40):la[1].geometry.x+(la[1].geometry.width-N.x+40),la[1].geometry.y=null==T?J.geometry.y+(J.geometry.height-la[1].geometry.height)/2:(T.y+T.height)/Z-Q.y+-N.y+10);return C.addCells(la,P)}finally{C.model.endUpdate()}}function q(J,V,P){J=C.getOutgoingTreeEdges(J);P=C.view.getState(P);var R=[];if(null!=P&&null!=J){for(var ia=0;ia<J.length;ia++){var la=C.view.getState(C.model.getTerminal(J[ia],!1));null!=la&&(!V&&Math.min(la.x+la.width,P.x+P.width)>=Math.max(la.x,P.x)||V&&Math.min(la.y+la.height,P.y+
+null!=V&&0<V.length&&(V=V[V.length-1],null!=V)))){if(V.y==J.y&&Math.abs(V.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_SOUTH;if(V.y==J.y+J.height&&Math.abs(V.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_NORTH;if(V.x>J.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function f(J,V){V=null!=V?V:!0;C.model.beginUpdate();try{var P=C.model.getParent(J),R=C.getIncomingTreeEdges(J),ha=C.cloneCells([R[0],J]);C.model.setTerminal(ha[0],C.model.getTerminal(R[0],
+!0),!0);var la=d(J),ta=P.geometry;la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?ha[1].geometry.x+=V?J.geometry.width+10:-ha[1].geometry.width-10:ha[1].geometry.y+=V?J.geometry.height+10:-ha[1].geometry.height-10;C.view.currentRoot!=P&&(ha[1].geometry.x-=ta.x,ha[1].geometry.y-=ta.y);var u=C.view.getState(J),I=C.view.scale;if(null!=u){var N=mxRectangle.fromRectangle(u);la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?N.x+=(V?J.geometry.width+10:-ha[1].geometry.width-
+10)*I:N.y+=(V?J.geometry.height+10:-ha[1].geometry.height-10)*I;var W=C.getOutgoingTreeEdges(C.model.getTerminal(R[0],!0));if(null!=W){for(var T=la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH,Q=ta=R=0;Q<W.length;Q++){var Z=C.model.getTerminal(W[Q],!1);if(la==d(Z)){var na=C.view.getState(Z);Z!=J&&null!=na&&(T&&V!=na.getCenterX()<u.getCenterX()||!T&&V!=na.getCenterY()<u.getCenterY())&&mxUtils.intersects(N,na)&&(R=10+Math.max(R,(Math.min(N.x+N.width,na.x+na.width)-Math.max(N.x,na.x))/
+I),ta=10+Math.max(ta,(Math.min(N.y+N.height,na.y+na.height)-Math.max(N.y,na.y))/I))}}T?ta=0:R=0;for(Q=0;Q<W.length;Q++)if(Z=C.model.getTerminal(W[Q],!1),la==d(Z)&&(na=C.view.getState(Z),Z!=J&&null!=na&&(T&&V!=na.getCenterX()<u.getCenterX()||!T&&V!=na.getCenterY()<u.getCenterY()))){var va=[];C.traverse(na.cell,!0,function(Ba,sa){var Da=null!=sa&&C.isTreeEdge(sa);Da&&va.push(sa);(null==sa||Da)&&va.push(Ba);return null==sa||Da});C.moveCells(va,(V?1:-1)*R,(V?1:-1)*ta)}}}return C.addCells(ha,P)}finally{C.model.endUpdate()}}
+function g(J){C.model.beginUpdate();try{var V=d(J),P=C.getIncomingTreeEdges(J),R=C.cloneCells([P[0],J]);C.model.setTerminal(P[0],R[1],!1);C.model.setTerminal(R[0],R[1],!0);C.model.setTerminal(R[0],J,!1);var ha=C.model.getParent(J),la=ha.geometry,ta=[];C.view.currentRoot!=ha&&(R[1].geometry.x-=la.x,R[1].geometry.y-=la.y);C.traverse(J,!0,function(N,W){var T=null!=W&&C.isTreeEdge(W);T&&ta.push(W);(null==W||T)&&ta.push(N);return null==W||T});var u=J.geometry.width+40,I=J.geometry.height+40;V==mxConstants.DIRECTION_SOUTH?
+u=0:V==mxConstants.DIRECTION_NORTH?(u=0,I=-I):V==mxConstants.DIRECTION_WEST?(u=-u,I=0):V==mxConstants.DIRECTION_EAST&&(I=0);C.moveCells(ta,u,I);return C.addCells(R,ha)}finally{C.model.endUpdate()}}function m(J,V){C.model.beginUpdate();try{var P=C.model.getParent(J),R=C.getIncomingTreeEdges(J),ha=d(J);0==R.length&&(R=[C.createEdge(P,null,"",null,null,C.createCurrentEdgeStyle())],ha=V);var la=C.cloneCells([R[0],J]);C.model.setTerminal(la[0],J,!0);if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],
+la[1],!1);var ta=C.getCellStyle(la[1]).newEdgeStyle;if(null!=ta)try{var u=JSON.parse(ta),I;for(I in u)C.setCellStyles(I,u[I],[la[0]]),"edgeStyle"==I&&"elbowEdgeStyle"==u[I]&&C.setCellStyles("elbow",ha==mxConstants.DIRECTION_SOUTH||ha==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[la[0]])}catch(na){}}R=C.getOutgoingTreeEdges(J);var N=P.geometry;V=[];C.view.currentRoot==P&&(N=new mxRectangle);for(ta=0;ta<R.length;ta++){var W=C.model.getTerminal(R[ta],!1);null!=W&&V.push(W)}var T=C.view.getBounds(V),
+Q=C.view.translate,Z=C.view.scale;ha==mxConstants.DIRECTION_SOUTH?(la[1].geometry.x=null==T?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(T.x+T.width)/Z-Q.x-N.x+10,la[1].geometry.y+=la[1].geometry.height-N.y+40):ha==mxConstants.DIRECTION_NORTH?(la[1].geometry.x=null==T?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(T.x+T.width)/Z-Q.x+-N.x+10,la[1].geometry.y-=la[1].geometry.height+N.y+40):(la[1].geometry.x=ha==mxConstants.DIRECTION_WEST?la[1].geometry.x-(la[1].geometry.width+N.x+
+40):la[1].geometry.x+(la[1].geometry.width-N.x+40),la[1].geometry.y=null==T?J.geometry.y+(J.geometry.height-la[1].geometry.height)/2:(T.y+T.height)/Z-Q.y+-N.y+10);return C.addCells(la,P)}finally{C.model.endUpdate()}}function q(J,V,P){J=C.getOutgoingTreeEdges(J);P=C.view.getState(P);var R=[];if(null!=P&&null!=J){for(var ha=0;ha<J.length;ha++){var la=C.view.getState(C.model.getTerminal(J[ha],!1));null!=la&&(!V&&Math.min(la.x+la.width,P.x+P.width)>=Math.max(la.x,P.x)||V&&Math.min(la.y+la.height,P.y+
P.height)>=Math.max(la.y,P.y))&&R.push(la)}R.sort(function(ta,u){return V?ta.x+ta.width-u.x-u.width:ta.y+ta.height-u.y-u.height})}return R}function y(J,V){var P=d(J),R=V==mxConstants.DIRECTION_EAST||V==mxConstants.DIRECTION_WEST;(P==mxConstants.DIRECTION_EAST||P==mxConstants.DIRECTION_WEST)==R&&P!=V?F.actions.get("selectParent").funct():P==V?(V=C.getOutgoingTreeEdges(J),null!=V&&0<V.length&&C.setSelectionCell(C.model.getTerminal(V[0],!1))):(P=C.getIncomingTreeEdges(J),null!=P&&0<P.length&&(R=q(C.model.getTerminal(P[0],
!0),R,J),J=C.view.getState(J),null!=J&&(J=mxUtils.indexOf(R,J),0<=J&&(J+=V==mxConstants.DIRECTION_NORTH||V==mxConstants.DIRECTION_WEST?-1:1,0<=J&&J<=R.length-1&&C.setSelectionCell(R[J].cell)))))}var F=this,C=F.editor.graph,H=C.getModel(),G=F.menus.createPopupMenu;F.menus.createPopupMenu=function(J,V,P){G.apply(this,arguments);if(1==C.getSelectionCount()){V=C.getSelectionCell();var R=C.getOutgoingTreeEdges(V);J.addSeparator();0<R.length&&(n(C.getSelectionCell())&&this.addMenuItems(J,["selectChildren"],
null,P),this.addMenuItems(J,["selectDescendants"],null,P));n(C.getSelectionCell())?(J.addSeparator(),0<C.getIncomingTreeEdges(V).length&&this.addMenuItems(J,["selectSiblings","selectParent"],null,P)):0<C.model.getEdgeCount(V)&&this.addMenuItems(J,["selectConnections"],null,P)}};F.actions.addAction("selectChildren",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=C.getSelectionCell();J=C.getOutgoingTreeEdges(J);if(null!=J){for(var V=[],P=0;P<J.length;P++)V.push(C.model.getTerminal(J[P],
!1));C.setSelectionCells(V)}}},null,null,"Alt+Shift+X");F.actions.addAction("selectSiblings",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=C.getSelectionCell();J=C.getIncomingTreeEdges(J);if(null!=J&&0<J.length&&(J=C.getOutgoingTreeEdges(C.model.getTerminal(J[0],!0)),null!=J)){for(var V=[],P=0;P<J.length;P++)V.push(C.model.getTerminal(J[P],!1));C.setSelectionCells(V)}}},null,null,"Alt+Shift+S");F.actions.addAction("selectParent",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=
-C.getSelectionCell();J=C.getIncomingTreeEdges(J);null!=J&&0<J.length&&C.setSelectionCell(C.model.getTerminal(J[0],!0))}},null,null,"Alt+Shift+P");F.actions.addAction("selectDescendants",function(J,V){J=C.getSelectionCell();if(C.isEnabled()&&C.model.isVertex(J)){if(null!=V&&mxEvent.isAltDown(V))C.setSelectionCells(C.model.getTreeEdges(J,null==V||!mxEvent.isShiftDown(V),null==V||!mxEvent.isControlDown(V)));else{var P=[];C.traverse(J,!0,function(R,ia){var la=null!=ia&&C.isTreeEdge(ia);la&&P.push(ia);
-null!=ia&&!la||null!=V&&mxEvent.isShiftDown(V)||P.push(R);return null==ia||la})}C.setSelectionCells(P)}},null,null,"Alt+Shift+D");var aa=C.removeCells;C.removeCells=function(J,V){V=null!=V?V:!0;null==J&&(J=this.getDeletableCells(this.getSelectionCells()));V&&(J=this.getDeletableCells(this.addAllEdges(J)));for(var P=[],R=0;R<J.length;R++){var ia=J[R];H.isEdge(ia)&&t(ia)&&(P.push(ia),ia=H.getTerminal(ia,!1));if(n(ia)){var la=[];C.traverse(ia,!0,function(ta,u){var I=null!=u&&C.isTreeEdge(u);I&&la.push(u);
-(null==u||I)&&la.push(ta);return null==u||I});0<la.length&&(P=P.concat(la),ia=C.getIncomingTreeEdges(J[R]),J=J.concat(ia))}else null!=ia&&P.push(J[R])}J=P;return aa.apply(this,arguments)};F.hoverIcons.getStateAt=function(J,V,P){return n(J.cell)?null:this.graph.view.getState(this.graph.getCellAt(V,P))};var da=C.duplicateCells;C.duplicateCells=function(J,V){J=null!=J?J:this.getSelectionCells();for(var P=J.slice(0),R=0;R<P.length;R++){var ia=C.view.getState(P[R]);if(null!=ia&&n(ia.cell)){var la=C.getIncomingTreeEdges(ia.cell);
-for(ia=0;ia<la.length;ia++)mxUtils.remove(la[ia],J)}}this.model.beginUpdate();try{var ta=da.call(this,J,V);if(ta.length==J.length)for(R=0;R<J.length;R++)if(n(J[R])){var u=C.getIncomingTreeEdges(ta[R]);la=C.getIncomingTreeEdges(J[R]);if(0==u.length&&0<la.length){var I=this.cloneCell(la[0]);this.addEdge(I,C.getDefaultParent(),this.model.getTerminal(la[0],!0),ta[R])}}}finally{this.model.endUpdate()}return ta};var ba=C.moveCells;C.moveCells=function(J,V,P,R,ia,la,ta){var u=null;this.model.beginUpdate();
-try{var I=ia,N=this.getCurrentCellStyle(ia);if(null!=J&&n(ia)&&"1"==mxUtils.getValue(N,"treeFolding","0")){for(var W=0;W<J.length;W++)if(n(J[W])||C.model.isEdge(J[W])&&null==C.model.getTerminal(J[W],!0)){ia=C.model.getParent(J[W]);break}if(null!=I&&ia!=I&&null!=this.view.getState(J[0])){var T=C.getIncomingTreeEdges(J[0]);if(0<T.length){var Q=C.view.getState(C.model.getTerminal(T[0],!0));if(null!=Q){var Z=C.view.getState(I);null!=Z&&(V=(Z.getCenterX()-Q.getCenterX())/C.view.scale,P=(Z.getCenterY()-
+C.getSelectionCell();J=C.getIncomingTreeEdges(J);null!=J&&0<J.length&&C.setSelectionCell(C.model.getTerminal(J[0],!0))}},null,null,"Alt+Shift+P");F.actions.addAction("selectDescendants",function(J,V){J=C.getSelectionCell();if(C.isEnabled()&&C.model.isVertex(J)){if(null!=V&&mxEvent.isAltDown(V))C.setSelectionCells(C.model.getTreeEdges(J,null==V||!mxEvent.isShiftDown(V),null==V||!mxEvent.isControlDown(V)));else{var P=[];C.traverse(J,!0,function(R,ha){var la=null!=ha&&C.isTreeEdge(ha);la&&P.push(ha);
+null!=ha&&!la||null!=V&&mxEvent.isShiftDown(V)||P.push(R);return null==ha||la})}C.setSelectionCells(P)}},null,null,"Alt+Shift+D");var aa=C.removeCells;C.removeCells=function(J,V){V=null!=V?V:!0;null==J&&(J=this.getDeletableCells(this.getSelectionCells()));V&&(J=this.getDeletableCells(this.addAllEdges(J)));for(var P=[],R=0;R<J.length;R++){var ha=J[R];H.isEdge(ha)&&t(ha)&&(P.push(ha),ha=H.getTerminal(ha,!1));if(n(ha)){var la=[];C.traverse(ha,!0,function(ta,u){var I=null!=u&&C.isTreeEdge(u);I&&la.push(u);
+(null==u||I)&&la.push(ta);return null==u||I});0<la.length&&(P=P.concat(la),ha=C.getIncomingTreeEdges(J[R]),J=J.concat(ha))}else null!=ha&&P.push(J[R])}J=P;return aa.apply(this,arguments)};F.hoverIcons.getStateAt=function(J,V,P){return n(J.cell)?null:this.graph.view.getState(this.graph.getCellAt(V,P))};var da=C.duplicateCells;C.duplicateCells=function(J,V){J=null!=J?J:this.getSelectionCells();for(var P=J.slice(0),R=0;R<P.length;R++){var ha=C.view.getState(P[R]);if(null!=ha&&n(ha.cell)){var la=C.getIncomingTreeEdges(ha.cell);
+for(ha=0;ha<la.length;ha++)mxUtils.remove(la[ha],J)}}this.model.beginUpdate();try{var ta=da.call(this,J,V);if(ta.length==J.length)for(R=0;R<J.length;R++)if(n(J[R])){var u=C.getIncomingTreeEdges(ta[R]);la=C.getIncomingTreeEdges(J[R]);if(0==u.length&&0<la.length){var I=this.cloneCell(la[0]);this.addEdge(I,C.getDefaultParent(),this.model.getTerminal(la[0],!0),ta[R])}}}finally{this.model.endUpdate()}return ta};var ba=C.moveCells;C.moveCells=function(J,V,P,R,ha,la,ta){var u=null;this.model.beginUpdate();
+try{var I=ha,N=this.getCurrentCellStyle(ha);if(null!=J&&n(ha)&&"1"==mxUtils.getValue(N,"treeFolding","0")){for(var W=0;W<J.length;W++)if(n(J[W])||C.model.isEdge(J[W])&&null==C.model.getTerminal(J[W],!0)){ha=C.model.getParent(J[W]);break}if(null!=I&&ha!=I&&null!=this.view.getState(J[0])){var T=C.getIncomingTreeEdges(J[0]);if(0<T.length){var Q=C.view.getState(C.model.getTerminal(T[0],!0));if(null!=Q){var Z=C.view.getState(I);null!=Z&&(V=(Z.getCenterX()-Q.getCenterX())/C.view.scale,P=(Z.getCenterY()-
Q.getCenterY())/C.view.scale)}}}}u=ba.apply(this,arguments);if(null!=u&&null!=J&&u.length==J.length)for(W=0;W<u.length;W++)if(this.model.isEdge(u[W]))n(I)&&0>mxUtils.indexOf(u,this.model.getTerminal(u[W],!0))&&this.model.setTerminal(u[W],I,!0);else if(n(J[W])&&(T=C.getIncomingTreeEdges(J[W]),0<T.length))if(!R)n(I)&&0>mxUtils.indexOf(J,this.model.getTerminal(T[0],!0))&&this.model.setTerminal(T[0],I,!0);else if(0==C.getIncomingTreeEdges(u[W]).length){N=I;if(null==N||N==C.model.getParent(J[W]))N=C.model.getTerminal(T[0],
-!0);R=this.cloneCell(T[0]);this.addEdge(R,C.getDefaultParent(),N,u[W])}}finally{this.model.endUpdate()}return u};if(null!=F.sidebar){var Y=F.sidebar.dropAndConnect;F.sidebar.dropAndConnect=function(J,V,P,R){var ia=C.model,la=null;ia.beginUpdate();try{if(la=Y.apply(this,arguments),n(J))for(var ta=0;ta<la.length;ta++)if(ia.isEdge(la[ta])&&null==ia.getTerminal(la[ta],!0)){ia.setTerminal(la[ta],J,!0);var u=C.getCellGeometry(la[ta]);u.points=null;null!=u.getTerminalPoint(!0)&&u.setTerminalPoint(null,!0)}}finally{ia.endUpdate()}return la}}var pa=
+!0);R=this.cloneCell(T[0]);this.addEdge(R,C.getDefaultParent(),N,u[W])}}finally{this.model.endUpdate()}return u};if(null!=F.sidebar){var Y=F.sidebar.dropAndConnect;F.sidebar.dropAndConnect=function(J,V,P,R){var ha=C.model,la=null;ha.beginUpdate();try{if(la=Y.apply(this,arguments),n(J))for(var ta=0;ta<la.length;ta++)if(ha.isEdge(la[ta])&&null==ha.getTerminal(la[ta],!0)){ha.setTerminal(la[ta],J,!0);var u=C.getCellGeometry(la[ta]);u.points=null;null!=u.getTerminalPoint(!0)&&u.setTerminalPoint(null,!0)}}finally{ha.endUpdate()}return la}}var pa=
{88:F.actions.get("selectChildren"),84:F.actions.get("selectSubtree"),80:F.actions.get("selectParent"),83:F.actions.get("selectSiblings")},O=F.onKeyDown;F.onKeyDown=function(J){try{if(C.isEnabled()&&!C.isEditing()&&n(C.getSelectionCell())&&1==C.getSelectionCount()){var V=null;0<C.getIncomingTreeEdges(C.getSelectionCell()).length&&(9==J.which?V=mxEvent.isShiftDown(J)?g(C.getSelectionCell()):m(C.getSelectionCell()):13==J.which&&(V=f(C.getSelectionCell(),!mxEvent.isShiftDown(J))));if(null!=V&&0<V.length)1==
V.length&&C.model.isEdge(V[0])?C.setSelectionCell(C.model.getTerminal(V[0],!1)):C.setSelectionCell(V[V.length-1]),null!=F.hoverIcons&&F.hoverIcons.update(C.view.getState(C.getSelectionCell())),C.startEditingAtCell(C.getSelectionCell()),mxEvent.consume(J);else if(mxEvent.isAltDown(J)&&mxEvent.isShiftDown(J)){var P=pa[J.keyCode];null!=P&&(P.funct(J),mxEvent.consume(J))}else 37==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(J)):38==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_NORTH),
-mxEvent.consume(J)):39==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(J)):40==J.keyCode&&(y(C.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(J))}}catch(R){F.handleError(R)}mxEvent.isConsumed(J)||O.apply(this,arguments)};var X=C.connectVertex;C.connectVertex=function(J,V,P,R,ia,la,ta){var u=C.getIncomingTreeEdges(J);if(n(J)){var I=d(J),N=I==mxConstants.DIRECTION_EAST||I==mxConstants.DIRECTION_WEST,W=V==mxConstants.DIRECTION_EAST||V==mxConstants.DIRECTION_WEST;
-return I==V||0==u.length?m(J,V):N==W?g(J):f(J,V!=mxConstants.DIRECTION_NORTH&&V!=mxConstants.DIRECTION_WEST)}return X.apply(this,arguments)};C.getSubtree=function(J){var V=[J];!D(J)&&!n(J)||E(J)||C.traverse(J,!0,function(P,R){var ia=null!=R&&C.isTreeEdge(R);ia&&0>mxUtils.indexOf(V,R)&&V.push(R);(null==R||ia)&&0>mxUtils.indexOf(V,P)&&V.push(P);return null==R||ia});return V};var ea=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ea.apply(this,arguments);(D(this.state.cell)||
+mxEvent.consume(J)):39==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(J)):40==J.keyCode&&(y(C.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(J))}}catch(R){F.handleError(R)}mxEvent.isConsumed(J)||O.apply(this,arguments)};var X=C.connectVertex;C.connectVertex=function(J,V,P,R,ha,la,ta){var u=C.getIncomingTreeEdges(J);if(n(J)){var I=d(J),N=I==mxConstants.DIRECTION_EAST||I==mxConstants.DIRECTION_WEST,W=V==mxConstants.DIRECTION_EAST||V==mxConstants.DIRECTION_WEST;
+return I==V||0==u.length?m(J,V):N==W?g(J):f(J,V!=mxConstants.DIRECTION_NORTH&&V!=mxConstants.DIRECTION_WEST)}return X.apply(this,arguments)};C.getSubtree=function(J){var V=[J];!D(J)&&!n(J)||E(J)||C.traverse(J,!0,function(P,R){var ha=null!=R&&C.isTreeEdge(R);ha&&0>mxUtils.indexOf(V,R)&&V.push(R);(null==R||ha)&&0>mxUtils.indexOf(V,P)&&V.push(P);return null==R||ha});return V};var ea=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ea.apply(this,arguments);(D(this.state.cell)||
n(this.state.cell))&&!E(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(J){this.graph.graphHandler.start(this.state.cell,
mxEvent.getClientX(J),mxEvent.getClientY(J),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(J);this.graph.isMouseDown=!0;F.hoverIcons.reset();mxEvent.consume(J)})))};var ka=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){ka.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=
this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var ja=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(J){ja.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=J?"":"none")};var U=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(J,V){U.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==
@@ -3927,10 +3928,10 @@ J.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;heig
ka.className="geTitle",ja=document.createElement("span"),ja.style.cssText="position:relative;top:6px;",mxUtils.write(ja,mxResources.get("newLibrary")),ka.appendChild(ja),X.appendChild(ka),mxEvent.addListener(ka,"click",O.actions.get("newLibrary").funct),ka=document.createElement("div"),ka.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;",ka.className="geTitle",ja=
document.createElement("span"),ja.style.cssText="position:relative;top:6px;",mxUtils.write(ja,mxResources.get("openLibrary")),ka.appendChild(ja),X.appendChild(ka),mxEvent.addListener(ka,"click",O.actions.get("openLibrary").funct)):(ka=ea("newLibrary",mxResources.get("newLibrary")),ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="0",ka=ea("openLibraryFrom",mxResources.get("openLibraryFrom")),ka.style.borderLeft="1px solid lightgray",
ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="50%");X.appendChild(O.sidebar.container);X.style.overflow="hidden"}function k(O,X){if(EditorUi.windowed){var ea=O.editor.graph;ea.popupMenuHandler.hideMenu();if(null==O.sidebarWindow){X=Math.min(ea.container.clientWidth-10,218);var ka="1"==urlParams.embedInline?650:Math.min(ea.container.clientHeight-40,650);O.sidebarWindow=new t(O,mxResources.get("shapes"),"1"==urlParams.sketch&&
-"1"!=urlParams.embedInline?66:10,"1"==urlParams.sketch&&"1"!=urlParams.embedInline?Math.max(30,(ea.container.clientHeight-ka)/2):56,X-6,ka-6,function(ja){e(O,ja)});O.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){O.sidebarWindow.window.fit()}));O.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);O.sidebarWindow.window.setVisible(!0);O.getLocalData("sidebar",function(ja){O.sidebar.showEntries(ja,null,!0)});O.restoreLibraries()}else O.sidebarWindow.window.setVisible(null!=
+"1"!=urlParams.embedInline?66:10,"1"==urlParams.sketch&&"1"!=urlParams.embedInline?Math.max(30,(ea.container.clientHeight-ka)/2):56,X-6,ka-6,function(ja){e(O,ja)});O.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){O.sidebarWindow.window.fit()}));O.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);O.sidebarWindow.window.setVisible(!0);isLocalStorage&&O.getLocalData("sidebar",function(ja){O.sidebar.showEntries(ja,null,!0)});O.restoreLibraries()}else O.sidebarWindow.window.setVisible(null!=
X?X:!O.sidebarWindow.window.isVisible())}else null==O.sidebarElt&&(O.sidebarElt=D(),e(O,O.sidebarElt),O.sidebarElt.style.border="none",O.sidebarElt.style.width="210px",O.sidebarElt.style.borderRight="1px solid gray"),ea=O.diagramContainer.parentNode,null!=O.sidebarElt.parentNode?(O.sidebarElt.parentNode.removeChild(O.sidebarElt),ea.style.left="0px"):(ea.parentNode.appendChild(O.sidebarElt),ea.style.left=O.sidebarElt.style.width)}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||
"undefined"===typeof window.Menus)window.uiTheme=null;else{var n=0;try{n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}catch(O){}var D=function(){var O=document.createElement("div");O.className="geSidebarContainer";O.style.position="absolute";O.style.width="100%";O.style.height="100%";O.style.border="1px solid whiteSmoke";O.style.overflowX="hidden";O.style.overflowY="auto";return O},t=function(O,X,ea,ka,ja,U,J){var V=D();J(V);this.window=new mxWindow(X,V,ea,ka,
-ja,U,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(P,R){var ia=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,la=this.table.firstChild.firstChild.firstChild;P=Math.max(0,Math.min(P,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-la.clientWidth-2));R=Math.max(0,Math.min(R,ia-la.clientHeight-
+ja,U,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(P,R){var ha=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,la=this.table.firstChild.firstChild.firstChild;P=Math.max(0,Math.min(P,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-la.clientWidth-2));R=Math.max(0,Math.min(R,ha-la.clientHeight-
2));this.getX()==P&&this.getY()==R||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&&(this.window.div.onselectstart=mxUtils.bind(this,function(P){null==P&&(P=window.event);return null!=P&&O.isSelectionAllowed(P)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=
Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src;mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke-width="2" style="stroke-opacity:0.4" stroke="#ffffff"/><path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');
mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR="#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity=
@@ -3970,21 +3971,21 @@ mxResources.get("outline")+"...";O.actions.get("layers").label=mxResources.get("
ea.setToggleAction(!0);ea.setSelectedCallback(function(){return Editor.sketchMode});ea=O.actions.put("togglePagesVisible",new Action(mxResources.get("pages"),function(R){O.setPagesVisible(!Editor.pagesVisible)}));ea.setToggleAction(!0);ea.setSelectedCallback(function(){return Editor.pagesVisible});O.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){X.popupMenuHandler.hideMenu();O.showImportCsvDialog()}));O.actions.put("importText",new Action(mxResources.get("text")+"...",
function(){var R=new ParseDialog(O,"Insert from Text");O.showDialog(R.container,620,420,!0,!1);R.init()}));O.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var R=new ParseDialog(O,"Insert from Text","formatSql");O.showDialog(R.container,620,420,!0,!1);R.init()}));O.actions.put("toggleShapes",new Action(mxResources.get("1"==urlParams.sketch?"moreShapes":"shapes")+"...",function(){k(O)},null,null,Editor.ctrlKey+"+Shift+K"));O.actions.put("toggleFormat",new Action(mxResources.get("format")+
"...",function(){b(O)})).shortcut=O.actions.get("formatPanel").shortcut;EditorUi.enablePlantUml&&!O.isOffline()&&O.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var R=new ParseDialog(O,mxResources.get("plantUml")+"...","plantUml");O.showDialog(R.container,620,420,!0,!1);R.init()}));O.actions.put("mermaid",new Action(mxResources.get("mermaid")+"...",function(){var R=new ParseDialog(O,mxResources.get("mermaid")+"...","mermaid");O.showDialog(R.container,620,420,!0,!1);
-R.init()}));var ka=this.addPopupMenuCellEditItems;this.put("editCell",new Menu(mxUtils.bind(this,function(R,ia){var la=this.editorUi.editor.graph,ta=la.getSelectionCell();ka.call(this,R,ta,null,ia);this.addMenuItems(R,["editTooltip"],ia);la.model.isVertex(ta)&&this.addMenuItems(R,["editGeometry"],ia);this.addMenuItems(R,["-","edit"],ia)})));this.addPopupMenuCellEditItems=function(R,ia,la,ta){R.addSeparator();this.addSubmenu("editCell",R,ta,mxResources.get("edit"))};this.put("file",new Menu(mxUtils.bind(this,
-function(R,ia){var la=O.getCurrentFile();O.menus.addMenuItems(R,["new"],ia);O.menus.addSubmenu("openFrom",R,ia);isLocalStorage&&this.addSubmenu("openRecent",R,ia);R.addSeparator(ia);null!=la&&la.constructor==DriveFile?O.menus.addMenuItems(R,["save","rename","makeCopy","moveToFolder"],ia):(O.menus.addMenuItems(R,["save","saveAs","-","rename"],ia),O.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(R,["upload"],ia):O.menus.addMenuItems(R,["makeCopy"],
-ia));R.addSeparator(ia);null!=la&&(la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["revisionHistory"],ia),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile&&null==la.fileHandle||O.menus.addMenuItems(R,["synchronize"],ia));O.menus.addMenuItems(R,["autosave"],ia);if(null!=la&&(R.addSeparator(ia),la.constructor==DriveFile&&O.menus.addMenuItems(R,["share"],ia),null!=O.fileNode&&"1"!=urlParams.embedInline)){var ta=null!=la.getTitle()?la.getTitle():O.defaultFilename;(la.constructor==
-DriveFile&&null!=la.sync&&la.sync.isConnected()||!/(\.html)$/i.test(ta)&&!/(\.svg)$/i.test(ta))&&this.addMenuItems(R,["-","properties"],ia)}})));this.put("diagram",new Menu(mxUtils.bind(this,function(R,ia){var la=O.getCurrentFile();O.menus.addSubmenu("extras",R,ia,mxResources.get("preferences"));R.addSeparator(ia);if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)O.menus.addMenuItems(R,"new open - synchronize - save saveAs -".split(" "),ia);else if("1"==urlParams.embed||O.mode==App.MODE_ATLAS){"1"!=
-urlParams.noSaveBtn&&"1"!=urlParams.embedInline&&O.menus.addMenuItems(R,["-","save"],ia);if("1"==urlParams.saveAndExit||"1"==urlParams.noSaveBtn&&"0"!=urlParams.saveAndExit||O.mode==App.MODE_ATLAS)O.menus.addMenuItems(R,["saveAndExit"],ia),null!=la&&la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["revisionHistory"],ia);R.addSeparator(ia)}else O.mode==App.MODE_ATLAS?O.menus.addMenuItems(R,["save","synchronize","-"],ia):"1"!=urlParams.noFileMenu&&("1"!=urlParams.sketch?(O.menus.addMenuItems(R,
-["new"],ia),O.menus.addSubmenu("openFrom",R,ia),isLocalStorage&&this.addSubmenu("openRecent",R,ia),R.addSeparator(ia),null!=la&&(la.constructor==DriveFile&&O.menus.addMenuItems(R,["share"],ia),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile||O.menus.addMenuItems(R,["synchronize"],ia)),R.addSeparator(ia),O.menus.addSubmenu("save",R,ia)):O.menus.addSubmenu("file",R,ia));O.menus.addSubmenu("exportAs",R,ia);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?O.menus.addMenuItems(R,
-["import"],ia):"1"!=urlParams.noFileMenu&&O.menus.addSubmenu("importFrom",R,ia);O.commentsSupported()&&O.menus.addMenuItems(R,["-","comments"],ia);O.menus.addMenuItems(R,"- findReplace outline layers tags - pageSetup".split(" "),ia);"1"==urlParams.noFileMenu||mxClient.IS_IOS&&navigator.standalone||O.menus.addMenuItems(R,["print"],ia);"1"!=urlParams.sketch&&null!=la&&null!=O.fileNode&&"1"!=urlParams.embedInline&&(la=null!=la.getTitle()?la.getTitle():O.defaultFilename,/(\.html)$/i.test(la)||/(\.svg)$/i.test(la)||
-this.addMenuItems(R,["-","properties"]));R.addSeparator(ia);O.menus.addSubmenu("help",R,ia);"1"==urlParams.embed||O.mode==App.MODE_ATLAS?("1"!=urlParams.noExitBtn||O.mode==App.MODE_ATLAS)&&O.menus.addMenuItems(R,["-","exit"],ia):"1"!=urlParams.noFileMenu&&O.menus.addMenuItems(R,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(R,ia){var la=O.getCurrentFile();null!=la&&la.constructor==DriveFile?O.menus.addMenuItems(R,["save","makeCopy","-","rename","moveToFolder"],ia):(O.menus.addMenuItems(R,
-["save","saveAs","-","rename"],ia),O.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(R,["upload"],ia):O.menus.addMenuItems(R,["makeCopy"],ia));O.menus.addMenuItems(R,["-","autosave"],ia);null!=la&&la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["-","revisionHistory"],ia)})));var ja=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(R,ia){ja.funct(R,ia);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||O.menus.addMenuItems(R,
-["publishLink"],ia);O.mode!=App.MODE_ATLAS&&"1"!=urlParams.extAuth&&(R.addSeparator(ia),O.menus.addSubmenu("embed",R,ia))})));var U=this.get("language");this.put("table",new Menu(mxUtils.bind(this,function(R,ia){O.menus.addInsertTableCellItem(R,ia)})));if("1"==urlParams.sketch){var J=this.get("units");this.put("units",new Menu(mxUtils.bind(this,function(R,ia){J.funct(R,ia);this.addMenuItems(R,["-","pageScale","-","ruler"],ia)})))}this.put("extras",new Menu(mxUtils.bind(this,function(R,ia){null!=U&&
-O.menus.addSubmenu("language",R,ia);"1"!=urlParams.embed&&"1"!=urlParams.extAuth&&O.mode!=App.MODE_ATLAS&&O.menus.addSubmenu("theme",R,ia);O.menus.addSubmenu("units",R,ia);R.addSeparator(ia);"1"!=urlParams.sketch&&O.menus.addMenuItems(R,"pageScale ruler scrollbars - tooltips copyConnect collapseExpand".split(" "),ia);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&O.mode!=App.MODE_ATLAS&&O.menus.addMenuItems(R,["-","showStartScreen",
-"search","scratchpad"],ia);R.addSeparator(ia);"1"==urlParams.sketch?O.menus.addMenuItems(R,"configuration - copyConnect collapseExpand tooltips -".split(" "),ia):(O.mode!=App.MODE_ATLAS&&O.menus.addMenuItem(R,"configuration",ia),!O.isOfflineApp()&&isLocalStorage&&O.mode!=App.MODE_ATLAS&&O.menus.addMenuItem(R,"plugins",ia));var la=O.getCurrentFile();null!=la&&la.isRealtimeEnabled()&&la.isRealtimeSupported()&&this.addMenuItems(R,["-","showRemoteCursors","shareCursor","-"],ia);R.addSeparator(ia);O.mode!=
-App.MODE_ATLAS&&this.addMenuItems(R,["fullscreen"],ia);("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(R,["toggleDarkMode"],ia);R.addSeparator(ia)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(R,ia){O.menus.addMenuItems(R,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),ia)})));mxUtils.bind(this,function(){var R=this.get("insert"),ia=R.funct;R.funct=function(la,ta){"1"==urlParams.sketch?
-(O.insertTemplateEnabled&&!O.isOffline()&&O.menus.addMenuItems(la,["insertTemplate"],ta),O.menus.addMenuItems(la,["insertImage","insertLink","-"],ta),O.menus.addSubmenu("insertAdvanced",la,ta,mxResources.get("advanced")),O.menus.addSubmenu("layout",la,ta)):(ia.apply(this,arguments),O.menus.addSubmenu("table",la,ta))}})();var V="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),P=function(R,ia,la,ta){R.addItem(la,null,mxUtils.bind(this,function(){var u=
-new CreateGraphDialog(O,la,ta);O.showDialog(u.container,620,420,!0,!1);u.init()}),ia)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(R,ia){for(var la=0;la<V.length;la++)"-"==V[la]?R.addSeparator(ia):P(R,ia,mxResources.get(V[la])+"...",V[la])})))};EditorUi.prototype.installFormatToolbar=function(O){var X=this.editor.graph,ea=document.createElement("div");ea.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
+R.init()}));var ka=this.addPopupMenuCellEditItems;this.put("editCell",new Menu(mxUtils.bind(this,function(R,ha){var la=this.editorUi.editor.graph,ta=la.getSelectionCell();ka.call(this,R,ta,null,ha);this.addMenuItems(R,["editTooltip"],ha);la.model.isVertex(ta)&&this.addMenuItems(R,["editGeometry"],ha);this.addMenuItems(R,["-","edit"],ha)})));this.addPopupMenuCellEditItems=function(R,ha,la,ta){R.addSeparator();this.addSubmenu("editCell",R,ta,mxResources.get("edit"))};this.put("file",new Menu(mxUtils.bind(this,
+function(R,ha){var la=O.getCurrentFile();O.menus.addMenuItems(R,["new"],ha);O.menus.addSubmenu("openFrom",R,ha);isLocalStorage&&this.addSubmenu("openRecent",R,ha);R.addSeparator(ha);null!=la&&la.constructor==DriveFile?O.menus.addMenuItems(R,["save","rename","makeCopy","moveToFolder"],ha):(O.menus.addMenuItems(R,["save","saveAs","-","rename"],ha),O.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(R,["upload"],ha):O.menus.addMenuItems(R,["makeCopy"],
+ha));R.addSeparator(ha);null!=la&&(la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["revisionHistory"],ha),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile&&null==la.fileHandle||O.menus.addMenuItems(R,["synchronize"],ha));O.menus.addMenuItems(R,["autosave"],ha);if(null!=la&&(R.addSeparator(ha),la.constructor==DriveFile&&O.menus.addMenuItems(R,["share"],ha),null!=O.fileNode&&"1"!=urlParams.embedInline)){var ta=null!=la.getTitle()?la.getTitle():O.defaultFilename;(la.constructor==
+DriveFile&&null!=la.sync&&la.sync.isConnected()||!/(\.html)$/i.test(ta)&&!/(\.svg)$/i.test(ta))&&this.addMenuItems(R,["-","properties"],ha)}})));this.put("diagram",new Menu(mxUtils.bind(this,function(R,ha){var la=O.getCurrentFile();O.menus.addSubmenu("extras",R,ha,mxResources.get("preferences"));R.addSeparator(ha);if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)O.menus.addMenuItems(R,"new open - synchronize - save saveAs -".split(" "),ha);else if("1"==urlParams.embed||O.mode==App.MODE_ATLAS){"1"!=
+urlParams.noSaveBtn&&"1"!=urlParams.embedInline&&O.menus.addMenuItems(R,["-","save"],ha);if("1"==urlParams.saveAndExit||"1"==urlParams.noSaveBtn&&"0"!=urlParams.saveAndExit||O.mode==App.MODE_ATLAS)O.menus.addMenuItems(R,["saveAndExit"],ha),null!=la&&la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["revisionHistory"],ha);R.addSeparator(ha)}else O.mode==App.MODE_ATLAS?O.menus.addMenuItems(R,["save","synchronize","-"],ha):"1"!=urlParams.noFileMenu&&("1"!=urlParams.sketch?(O.menus.addMenuItems(R,
+["new"],ha),O.menus.addSubmenu("openFrom",R,ha),isLocalStorage&&this.addSubmenu("openRecent",R,ha),R.addSeparator(ha),null!=la&&(la.constructor==DriveFile&&O.menus.addMenuItems(R,["share"],ha),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile||O.menus.addMenuItems(R,["synchronize"],ha)),R.addSeparator(ha),O.menus.addSubmenu("save",R,ha)):O.menus.addSubmenu("file",R,ha));O.menus.addSubmenu("exportAs",R,ha);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?O.menus.addMenuItems(R,
+["import"],ha):"1"!=urlParams.noFileMenu&&O.menus.addSubmenu("importFrom",R,ha);O.commentsSupported()&&O.menus.addMenuItems(R,["-","comments"],ha);O.menus.addMenuItems(R,"- findReplace outline layers tags - pageSetup".split(" "),ha);"1"==urlParams.noFileMenu||mxClient.IS_IOS&&navigator.standalone||O.menus.addMenuItems(R,["print"],ha);"1"!=urlParams.sketch&&null!=la&&null!=O.fileNode&&"1"!=urlParams.embedInline&&(la=null!=la.getTitle()?la.getTitle():O.defaultFilename,/(\.html)$/i.test(la)||/(\.svg)$/i.test(la)||
+this.addMenuItems(R,["-","properties"]));R.addSeparator(ha);O.menus.addSubmenu("help",R,ha);"1"==urlParams.embed||O.mode==App.MODE_ATLAS?("1"!=urlParams.noExitBtn||O.mode==App.MODE_ATLAS)&&O.menus.addMenuItems(R,["-","exit"],ha):"1"!=urlParams.noFileMenu&&O.menus.addMenuItems(R,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(R,ha){var la=O.getCurrentFile();null!=la&&la.constructor==DriveFile?O.menus.addMenuItems(R,["save","makeCopy","-","rename","moveToFolder"],ha):(O.menus.addMenuItems(R,
+["save","saveAs","-","rename"],ha),O.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(R,["upload"],ha):O.menus.addMenuItems(R,["makeCopy"],ha));O.menus.addMenuItems(R,["-","autosave"],ha);null!=la&&la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["-","revisionHistory"],ha)})));var ja=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(R,ha){ja.funct(R,ha);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||O.menus.addMenuItems(R,
+["publishLink"],ha);O.mode!=App.MODE_ATLAS&&"1"!=urlParams.extAuth&&(R.addSeparator(ha),O.menus.addSubmenu("embed",R,ha))})));var U=this.get("language");this.put("table",new Menu(mxUtils.bind(this,function(R,ha){O.menus.addInsertTableCellItem(R,ha)})));if("1"==urlParams.sketch){var J=this.get("units");this.put("units",new Menu(mxUtils.bind(this,function(R,ha){J.funct(R,ha);this.addMenuItems(R,["-","pageScale","-","ruler"],ha)})))}this.put("extras",new Menu(mxUtils.bind(this,function(R,ha){null!=U&&
+O.menus.addSubmenu("language",R,ha);"1"!=urlParams.embed&&"1"!=urlParams.extAuth&&O.mode!=App.MODE_ATLAS&&O.menus.addSubmenu("theme",R,ha);O.menus.addSubmenu("units",R,ha);R.addSeparator(ha);"1"!=urlParams.sketch&&O.menus.addMenuItems(R,"pageScale ruler scrollbars - tooltips copyConnect collapseExpand".split(" "),ha);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&O.mode!=App.MODE_ATLAS&&O.menus.addMenuItems(R,["-","showStartScreen",
+"search","scratchpad"],ha);R.addSeparator(ha);"1"==urlParams.sketch?O.menus.addMenuItems(R,"configuration - copyConnect collapseExpand tooltips -".split(" "),ha):(O.mode!=App.MODE_ATLAS&&O.menus.addMenuItem(R,"configuration",ha),!O.isOfflineApp()&&isLocalStorage&&O.mode!=App.MODE_ATLAS&&O.menus.addMenuItem(R,"plugins",ha));EditorUi.isElectronApp&&O.menus.addMenuItems(R,["-","spellCheck","autoBkp","drafts","-"],ha);var la=O.getCurrentFile();null!=la&&la.isRealtimeEnabled()&&la.isRealtimeSupported()&&
+this.addMenuItems(R,["-","showRemoteCursors","shareCursor","-"],ha);R.addSeparator(ha);O.mode!=App.MODE_ATLAS&&this.addMenuItems(R,["fullscreen"],ha);("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(R,["toggleDarkMode"],ha);R.addSeparator(ha)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(R,ha){O.menus.addMenuItems(R,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),ha)})));mxUtils.bind(this,
+function(){var R=this.get("insert"),ha=R.funct;R.funct=function(la,ta){"1"==urlParams.sketch?(O.insertTemplateEnabled&&!O.isOffline()&&O.menus.addMenuItems(la,["insertTemplate"],ta),O.menus.addMenuItems(la,["insertImage","insertLink","-"],ta),O.menus.addSubmenu("insertAdvanced",la,ta,mxResources.get("advanced")),O.menus.addSubmenu("layout",la,ta)):(ha.apply(this,arguments),O.menus.addSubmenu("table",la,ta))}})();var V="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),
+P=function(R,ha,la,ta){R.addItem(la,null,mxUtils.bind(this,function(){var u=new CreateGraphDialog(O,la,ta);O.showDialog(u.container,620,420,!0,!1);u.init()}),ha)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(R,ha){for(var la=0;la<V.length;la++)"-"==V[la]?R.addSeparator(ha):P(R,ha,mxResources.get(V[la])+"...",V[la])})))};EditorUi.prototype.installFormatToolbar=function(O){var X=this.editor.graph,ea=document.createElement("div");ea.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
X.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(ka,ja){0<X.getSelectionCount()?(O.appendChild(ea),ea.innerHTML="Selected: "+X.getSelectionCount()):null!=ea.parentNode&&ea.parentNode.removeChild(ea)}))};var Y=!1;EditorUi.prototype.initFormatWindow=function(){if(!Y&&null!=this.formatWindow){Y=!0;this.formatWindow.window.setClosable(!1);var O=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){O.apply(this,arguments);this.minimized?
(this.div.style.width="90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(X){mxEvent.getSource(X)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var pa=EditorUi.prototype.init;EditorUi.prototype.init=
function(){function O(ua,ya,Na){var Fa=U.menus.get(ua),Ra=R.addMenu(mxResources.get(ua),mxUtils.bind(this,function(){Fa.funct.apply(this,arguments)}),P);Ra.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";Ra.style.display="inline-block";Ra.style.boxSizing="border-box";Ra.style.top="6px";Ra.style.marginRight="6px";Ra.style.height="30px";Ra.style.paddingTop="6px";Ra.style.paddingBottom="6px";Ra.style.cursor="pointer";Ra.setAttribute("title",mxResources.get(ua));U.menus.menuCreated(Fa,
@@ -4002,7 +4003,7 @@ n&&"1"!=urlParams.sketch?(null==La&&(ya=R.addMenu("",ya.funct),ya.setAttribute("
urlParams.sketch&&1E3<=n||null!=urlParams.clibs||null!=urlParams.libs||null!=urlParams["search-shapes"])k(this,!0),null!=this.sidebar&&null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes&&(this.sidebar.searchShapes(urlParams["search-shapes"]),this.sidebar.showEntries("search"));var U=this;mxWindow.prototype.fit=function(){if(Editor.inlineFullscreen||null==U.embedViewport)mxUtils.fit(this.div);else{var ua=parseInt(this.div.offsetLeft),ya=parseInt(this.div.offsetWidth),Na=U.embedViewport.x+
U.embedViewport.width,Fa=parseInt(this.div.offsetTop),Ra=parseInt(this.div.offsetHeight),db=U.embedViewport.y+U.embedViewport.height;this.div.style.left=Math.max(U.embedViewport.x,Math.min(ua,Na-ya))+"px";this.div.style.top=Math.max(U.embedViewport.y,Math.min(Fa,db-Ra))+"px";this.div.style.height=Math.min(U.embedViewport.height,parseInt(this.div.style.height))+"px";this.div.style.width=Math.min(U.embedViewport.width,parseInt(this.div.style.width))+"px"}};this.keyHandler.bindAction(75,!0,"toggleShapes",
!0);EditorUi.windowed&&("1"==urlParams.sketch||1E3<=n)&&"1"!=urlParams.embedInline&&(b(this,!0),"1"==urlParams.sketch?(this.initFormatWindow(),ja=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,null!=this.formatWindow&&(1200>n||708>ja)?this.formatWindow.window.toggleMinimized():this.formatWindow.window.setVisible(!0)):this.formatWindow.window.setVisible(!0));U=this;var J=U.editor.graph;U.toolbar=this.createToolbar(U.createDiv("geToolbar"));U.defaultLibraryName=
-mxResources.get("untitledLibrary");var V=document.createElement("div");V.className="geMenubarContainer";var P=null,R=new Menubar(U,V);U.statusContainer=U.createStatusContainer();U.statusContainer.style.position="relative";U.statusContainer.style.maxWidth="";U.statusContainer.style.marginTop="7px";U.statusContainer.style.marginLeft="6px";U.statusContainer.style.color="gray";U.statusContainer.style.cursor="default";var ia=U.hideCurrentMenu;U.hideCurrentMenu=function(){ia.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};
+mxResources.get("untitledLibrary");var V=document.createElement("div");V.className="geMenubarContainer";var P=null,R=new Menubar(U,V);U.statusContainer=U.createStatusContainer();U.statusContainer.style.position="relative";U.statusContainer.style.maxWidth="";U.statusContainer.style.marginTop="7px";U.statusContainer.style.marginLeft="6px";U.statusContainer.style.color="gray";U.statusContainer.style.cursor="default";var ha=U.hideCurrentMenu;U.hideCurrentMenu=function(){ha.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};
var la=U.descriptorChanged;U.descriptorChanged=function(){la.apply(this,arguments);var ua=U.getCurrentFile();if(null!=ua&&null!=ua.getTitle()){var ya=ua.getMode();"google"==ya?ya="googleDrive":"github"==ya?ya="gitHub":"gitlab"==ya?ya="gitLab":"onedrive"==ya&&(ya="oneDrive");ya=mxResources.get(ya);V.setAttribute("title",ua.getTitle()+(null!=ya?" ("+ya+")":""))}else V.removeAttribute("title")};U.setStatusText(U.editor.getStatus());V.appendChild(U.statusContainer);U.buttonContainer=document.createElement("div");
U.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";V.appendChild(U.buttonContainer);U.menubarContainer=U.buttonContainer;U.tabContainer=document.createElement("div");U.tabContainer.className="geTabContainer";U.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";ja=U.diagramContainer.parentNode;var ta=document.createElement("div");
ta.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";U.diagramContainer.style.top="1"==urlParams.sketch?"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){ta.style.top="20px";U.titlebar=document.createElement("div");U.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var u=document.createElement("div");u.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";
@@ -4028,8 +4029,8 @@ Fa.geometry.setTerminalPoint(new mxPoint(0,0),!0);Fa.geometry.setTerminalPoint(n
"transform","translate(0, -50%)"),W.style.padding="8px 6px 4px",W.style.top="50%",W.style.bottom="",W.style.height="",Aa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Aa.style.width="40px",Aa.style.height="12px",Aa.setAttribute("title","Minimize"),za=!1,Ca()):(W.innerText="",W.appendChild(Aa),mxUtils.setPrefixedStyle(W.style,"transform","translate(0, 0)"),W.style.top="",W.style.bottom="12px",W.style.padding="0px",W.style.height="24px",Aa.style.height="24px",Aa.style.backgroundImage=
"url("+Editor.plusImage+")",Aa.setAttribute("title",mxResources.get("insert")),Aa.style.width="24px",za=!0)}));Ca();U.addListener("darkModeChanged",Ca);U.addListener("sketchModeChanged",Ca)}else U.editor.addListener("statusChanged",mxUtils.bind(this,function(){U.setStatusText(U.editor.getStatus())}));if(null!=u){var Qa=function(ua){mxEvent.isShiftDown(ua)?(U.hideCurrentMenu(),U.actions.get("smartFit").funct(),mxEvent.consume(ua)):mxEvent.isAltDown(ua)&&(U.hideCurrentMenu(),U.actions.get("customZoom").funct(),
mxEvent.consume(ua))},Za=U.actions.get("zoomIn"),cb=U.actions.get("zoomOut"),Ja=U.actions.get("resetView");Q=U.actions.get("fullscreen");var Ua=U.actions.get("undo"),$a=U.actions.get("redo"),z=X("",Ua.funct,null,mxResources.get("undo")+" ("+Ua.shortcut+")",Ua,Editor.undoImage),L=X("",$a.funct,null,mxResources.get("redo")+" ("+$a.shortcut+")",$a,Editor.redoImage),M=X("",Q.funct,null,mxResources.get("fullscreen"),Q,Editor.fullscreenImage);if(null!=N){Ja=function(){ra.style.display=null!=U.pages&&("0"!=
-urlParams.pages||1<U.pages.length||Editor.pagesVisible)?"inline-block":"none"};var S=function(){ra.innerText="";if(null!=U.currentPage){mxUtils.write(ra,U.currentPage.getName());var ua=null!=U.pages?U.pages.length:1,ya=U.getPageIndex(U.currentPage);ya=null!=ya?ya+1:1;var Na=U.currentPage.getId();ra.setAttribute("title",U.currentPage.getName()+" ("+ya+"/"+ua+")"+(null!=Na?" ["+Na+"]":""))}};M.parentNode.removeChild(M);var ca=U.actions.get("delete"),ha=X("",ca.funct,null,mxResources.get("delete"),ca,
-Editor.trashImage);ha.style.opacity="0.1";T.appendChild(ha);ca.addListener("stateChanged",function(){ha.style.opacity=ca.enabled?"":"0.1"});var oa=function(){z.style.display=0<U.editor.undoManager.history.length||J.isEditing()?"inline-block":"none";L.style.display=z.style.display;z.style.opacity=Ua.enabled?"":"0.1";L.style.opacity=$a.enabled?"":"0.1"};T.appendChild(z);T.appendChild(L);Ua.addListener("stateChanged",oa);$a.addListener("stateChanged",oa);oa();var ra=this.createPageMenuTab(!1,!0);ra.style.display=
+urlParams.pages||1<U.pages.length||Editor.pagesVisible)?"inline-block":"none"};var S=function(){ra.innerText="";if(null!=U.currentPage){mxUtils.write(ra,U.currentPage.getName());var ua=null!=U.pages?U.pages.length:1,ya=U.getPageIndex(U.currentPage);ya=null!=ya?ya+1:1;var Na=U.currentPage.getId();ra.setAttribute("title",U.currentPage.getName()+" ("+ya+"/"+ua+")"+(null!=Na?" ["+Na+"]":""))}};M.parentNode.removeChild(M);var ca=U.actions.get("delete"),ia=X("",ca.funct,null,mxResources.get("delete"),ca,
+Editor.trashImage);ia.style.opacity="0.1";T.appendChild(ia);ca.addListener("stateChanged",function(){ia.style.opacity=ca.enabled?"":"0.1"});var oa=function(){z.style.display=0<U.editor.undoManager.history.length||J.isEditing()?"inline-block":"none";L.style.display=z.style.display;z.style.opacity=Ua.enabled?"":"0.1";L.style.opacity=$a.enabled?"":"0.1"};T.appendChild(z);T.appendChild(L);Ua.addListener("stateChanged",oa);$a.addListener("stateChanged",oa);oa();var ra=this.createPageMenuTab(!1,!0);ra.style.display=
"none";ra.style.position="";ra.style.marginLeft="";ra.style.top="";ra.style.left="";ra.style.height="100%";ra.style.lineHeight="";ra.style.borderStyle="none";ra.style.padding="3px 0";ra.style.margin="0px";ra.style.background="";ra.style.border="";ra.style.boxShadow="none";ra.style.verticalAlign="top";ra.style.width="auto";ra.style.maxWidth="160px";ra.style.position="relative";ra.style.padding="6px";ra.style.textOverflow="ellipsis";ra.style.opacity="0.8";N.appendChild(ra);U.editor.addListener("pagesPatched",
S);U.editor.addListener("pageSelected",S);U.editor.addListener("pageRenamed",S);U.editor.addListener("fileLoaded",S);S();U.addListener("fileDescriptorChanged",Ja);U.addListener("pagesVisibleChanged",Ja);U.editor.addListener("pagesPatched",Ja);Ja();Ja=X("",cb.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",cb,Editor.zoomOutImage);N.appendChild(Ja);var qa=R.addMenu("100%",u.funct);qa.setAttribute("title",mxResources.get("zoom"));qa.innerHTML="100%";qa.style.display="inline-block";
qa.style.color="inherit";qa.style.cursor="pointer";qa.style.textAlign="center";qa.style.whiteSpace="nowrap";qa.style.paddingRight="10px";qa.style.textDecoration="none";qa.style.verticalAlign="top";qa.style.padding="6px 0";qa.style.fontSize="14px";qa.style.width="40px";qa.style.opacity="0.4";N.appendChild(qa);u=X("",Za.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",Za,Editor.zoomInImage);N.appendChild(u);Q.visible&&(N.appendChild(M),mxEvent.addListener(document,"fullscreenchange",
@@ -4044,7 +4045,7 @@ urlParams.embedInline){document.body.style.cursor="text";W.style.transform="";mx
ja.style.cursor="row-resize";U.diagramContainer.parentNode.appendChild(ja);U.bottomResizer=ja;var Pa=null,Oa=null,Ta=null,Ma=null;mxEvent.addGestureListeners(ja,function(ua){Ma=parseInt(U.diagramContainer.style.height);Oa=mxEvent.getClientY(ua);J.popupMenuHandler.hideMenu();mxEvent.consume(ua)});ja=ja.cloneNode(!1);ja.style.cursor="col-resize";U.diagramContainer.parentNode.appendChild(ja);U.rightResizer=ja;mxEvent.addGestureListeners(ja,function(ua){Ta=parseInt(U.diagramContainer.style.width);Pa=
mxEvent.getClientX(ua);J.popupMenuHandler.hideMenu();mxEvent.consume(ua)});mxEvent.addGestureListeners(document.body,null,function(ua){var ya=!1;null!=Pa&&(U.diagramContainer.style.width=Math.max(20,Ta+mxEvent.getClientX(ua)-Pa)+"px",ya=!0);null!=Oa&&(U.diagramContainer.style.height=Math.max(20,Ma+mxEvent.getClientY(ua)-Oa)+"px",ya=!0);ya&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:U.diagramContainer.getBoundingClientRect()}),
"*"),Z(),U.refresh())},function(ua){null==Pa&&null==Oa||mxEvent.consume(ua);Oa=Pa=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";U.bottomResizer.style.visibility="hidden";U.rightResizer.style.visibility="hidden";T.style.visibility="hidden";N.style.visibility="hidden";W.style.display="none"}"1"==urlParams.prefetchFonts&&U.editor.loadFonts()}}};
-(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var e=EditorUi.initTheme;EditorUi.initTheme=function(){e.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,e,k,n,D,t,E){this.file=b;this.id=e;this.content=k;this.modifiedDate=n;this.createdDate=D;this.isResolved=t;this.user=E;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,e,k,n,D){e()};DrawioComment.prototype.editComment=function(b,e,k){e()};DrawioComment.prototype.deleteComment=function(b,e){b()};DrawioUser=function(b,e,k,n,D){this.id=b;this.email=e;this.displayName=k;this.pictureUrl=n;this.locale=D};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nbeta=beta\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\nrealtimeCollaboration=Real-Time Collaboration\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlabels=Labels\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareCursor=Share Mouse Cursor\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowRemoteCursors=Show Remote Mouse Cursors\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsnapToGrid=Snap to Grid\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunmerge=Unmerge\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\ncreateODFile=Create OneDrive File\npickGDriveFile=Pick Google Drive File\ncreateGDriveFile=Create Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\nspellCheck=Spell checker\nnoChange=No Change\nlblToSvg=Convert labels to SVG\ntxtSettings=Text Settings\nLinksLost=Links will be lost\narcSize=Arc Size\neditConnectionPoints=Edit Connection Points\nnotInOffline=Not supported while offline\nnotInDesktop=Not supported in Desktop App\nconfConfigSpaceArchived=draw.io Configuration space (DRAWIOCONFIG) is archived. Please restore it first.\nconfACleanOldVerStarted=Cleaning old diagram draft versions started\nconfACleanOldVerDone=Cleaning old diagram draft versions finished\nconfACleaningFile=Cleaning diagram draft "{1}" old versions\nconfAFileCleaned=Cleaning diagram draft "{1}" done\nconfAFileCleanFailed=Cleaning diagram draft "{1}" failed\nconfACleanOnly=Clean Diagram Drafts Only\nbrush=Brush\nopenDevTools=Open Developer Tools\nautoBkp=Automatic Backup\nconfAIgnoreCollectErr=Ignore collecting current pages errors\ndrafts=Drafts\ndraftSaveInt=Draft save interval [sec] (0 to disable)\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
+(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var e=EditorUi.initTheme;EditorUi.initTheme=function(){e.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,e,k,n,D,t,E){this.file=b;this.id=e;this.content=k;this.modifiedDate=n;this.createdDate=D;this.isResolved=t;this.user=E;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,e,k,n,D){e()};DrawioComment.prototype.editComment=function(b,e,k){e()};DrawioComment.prototype.deleteComment=function(b,e){b()};DrawioUser=function(b,e,k,n,D){this.id=b;this.email=e;this.displayName=k;this.pictureUrl=n;this.locale=D};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nbeta=beta\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\nrealtimeCollaboration=Real-Time Collaboration\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlabels=Labels\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareCursor=Share Mouse Cursor\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowRemoteCursors=Show Remote Mouse Cursors\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsnapToGrid=Snap to Grid\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunmerge=Unmerge\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\ncreateODFile=Create OneDrive File\npickGDriveFile=Pick Google Drive File\ncreateGDriveFile=Create Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\nspellCheck=Spell checker\nnoChange=No Change\nlblToSvg=Convert labels to SVG\ntxtSettings=Text Settings\nLinksLost=Links will be lost\narcSize=Arc Size\neditConnectionPoints=Edit Connection Points\nnotInOffline=Not supported while offline\nnotInDesktop=Not supported in Desktop App\nconfConfigSpaceArchived=draw.io Configuration space (DRAWIOCONFIG) is archived. Please restore it first.\nconfACleanOldVerStarted=Cleaning old diagram draft versions started\nconfACleanOldVerDone=Cleaning old diagram draft versions finished\nconfACleaningFile=Cleaning diagram draft "{1}" old versions\nconfAFileCleaned=Cleaning diagram draft "{1}" done\nconfAFileCleanFailed=Cleaning diagram draft "{1}" failed\nconfACleanOnly=Clean Diagram Drafts Only\nbrush=Brush\nopenDevTools=Open Developer Tools\nautoBkp=Automatic Backup\nconfAIgnoreCollectErr=Ignore collecting current pages errors\ndrafts=Drafts\ndraftSaveInt=Draft save interval [sec] (0 to disable)\npluginsDisabled=External plugins disabled.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=Graph.prototype.defaultThemes["default-style2"];GraphViewer=function(b,e,k){this.init(b,e,k)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://viewer.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?24:26;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!1;GraphViewer.prototype.autoCrop=!1;
GraphViewer.prototype.autoOrigin=!0;GraphViewer.prototype.center=!1;GraphViewer.prototype.forceCenter=!1;GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.allowZoomOut=!0;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;GraphViewer.prototype.responsive=!1;
GraphViewer.prototype.init=function(b,e,k){this.graphConfig=null!=k?k:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.autoCrop=null!=this.graphConfig["auto-crop"]?this.graphConfig["auto-crop"]:this.autoCrop;this.autoOrigin=null!=this.graphConfig["auto-origin"]?this.graphConfig["auto-origin"]:this.autoOrigin;this.allowZoomOut=null!=this.graphConfig["allow-zoom-out"]?this.graphConfig["allow-zoom-out"]:this.allowZoomOut;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?
diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js
index 66deaa72..97107b7c 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -110,7 +110,7 @@ if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==url
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content"]};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||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
-window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"19.0.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"19.0.3",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&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:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2<navigator.maxTouchPoints,IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,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:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==
@@ -215,10 +215,10 @@ STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",STYLE_LABEL_
STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",
STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_SWIMLANE_HEAD:"swimlaneHead",STYLE_SWIMLANE_BODY:"swimlaneBody",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",
STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",
-STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",
-STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",STYLE_CLIP_PATH:"clipPath",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",
-SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",
-ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",
+STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FIXED_WIDTH:"fixedWidth",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",
+STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",STYLE_CLIP_PATH:"clipPath",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",
+SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",
+ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",
EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};
function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};
mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};
@@ -1271,9 +1271,9 @@ mxGraph.prototype.swapBounds=function(a,b){if(null!=a){var c=this.model.getGeome
mxGraph.prototype.updateAlternateBounds=function(a,b,c){if(null!=a&&null!=b){c=this.getCurrentCellStyle(a);if(null==b.alternateBounds){var d=b;this.collapseToPreferredSize&&(a=this.getPreferredSizeForCell(a),null!=a&&(d=a,a=mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE),0<a&&(d.height=Math.max(d.height,a))));b.alternateBounds=new mxRectangle(0,0,d.width,d.height)}if(null!=b.alternateBounds){b.alternateBounds.x=b.x;b.alternateBounds.y=b.y;var e=mxUtils.toRadians(c[mxConstants.STYLE_ROTATION]||0);
0!=e&&(c=b.alternateBounds.getCenterX()-b.getCenterX(),d=b.alternateBounds.getCenterY()-b.getCenterY(),a=Math.cos(e),e=Math.sin(e),b.alternateBounds.x+=a*c-e*d-c,b.alternateBounds.y+=e*c+a*d-d)}}};mxGraph.prototype.addAllEdges=function(a){var b=a.slice();return mxUtils.removeDuplicates(b.concat(this.getAllEdges(a)))};
mxGraph.prototype.getAllEdges=function(a){var b=[];if(null!=a)for(var c=0;c<a.length;c++){for(var d=this.model.getEdgeCount(a[c]),e=0;e<d;e++)b.push(this.model.getEdgeAt(a[c],e));d=this.model.getChildren(a[c]);b=b.concat(this.getAllEdges(d))}return b};mxGraph.prototype.updateCellSize=function(a,b){b=null!=b?b:!1;this.model.beginUpdate();try{this.cellSizeUpdated(a,b),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",a,"ignoreChildren",b))}finally{this.model.endUpdate()}return a};
-mxGraph.prototype.cellSizeUpdated=function(a,b){if(null!=a){this.model.beginUpdate();try{var c=this.getPreferredSizeForCell(a),d=this.model.getGeometry(a);if(null!=c&&null!=d){var e=this.isCellCollapsed(a);d=d.clone();if(this.isSwimlane(a)){var f=this.getCellStyle(a),g=this.model.getStyle(a);null==g&&(g="");mxUtils.getValue(f,mxConstants.STYLE_HORIZONTAL,!0)?(g=mxUtils.setStyle(g,mxConstants.STYLE_STARTSIZE,c.height+8),e&&(d.height=c.height+8),d.width=c.width):(g=mxUtils.setStyle(g,mxConstants.STYLE_STARTSIZE,
-c.width+8),e&&(d.width=c.width+8),d.height=c.height);this.model.setStyle(a,g)}else{var k=this.view.createState(a),l=k.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,m=this.getVerticalAlign(k);"fixed"==k.style[mxConstants.STYLE_ASPECT]&&(c.height=Math.round(d.height*c.width*100/d.width)/100);l==mxConstants.ALIGN_RIGHT?d.x+=d.width-c.width:l==mxConstants.ALIGN_CENTER&&(d.x+=Math.round((d.width-c.width)/2));m==mxConstants.ALIGN_BOTTOM?d.y+=d.height-c.height:m==mxConstants.ALIGN_MIDDLE&&(d.y+=
-Math.round((d.height-c.height)/2));d.width=c.width;d.height=c.height}if(!b&&!e){var n=this.view.getBounds(this.model.getChildren(a));if(null!=n){var p=this.view.translate,r=this.view.scale,q=(n.y+n.height)/r-d.y-p.y;d.width=Math.max(d.width,(n.x+n.width)/r-d.x-p.x);d.height=Math.max(d.height,q)}}this.cellsResized([a],[d],!1)}}finally{this.model.endUpdate()}}};
+mxGraph.prototype.cellSizeUpdated=function(a,b){if(null!=a){this.model.beginUpdate();try{var c=this.getCellStyle(a),d=this.model.getGeometry(a);if(null!=d){var e=mxUtils.getValue(c,mxConstants.STYLE_FIXED_WIDTH,!1),f=this.getPreferredSizeForCell(a,e?d.width:null);if(null!=f){var g=this.isCellCollapsed(a);d=d.clone();if(this.isSwimlane(a)){var k=this.model.getStyle(a);null==k&&(k="");mxUtils.getValue(c,mxConstants.STYLE_HORIZONTAL,!0)?(k=mxUtils.setStyle(k,mxConstants.STYLE_STARTSIZE,f.height+8),g&&
+(d.height=f.height+8),e||(d.width=f.width)):(k=mxUtils.setStyle(k,mxConstants.STYLE_STARTSIZE,f.width+8),g&&!e&&(d.width=f.width+8),d.height=f.height);this.model.setStyle(a,k)}else{var l=this.view.createState(a),m=l.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,n=this.getVerticalAlign(l);"fixed"==l.style[mxConstants.STYLE_ASPECT]&&(f.height=Math.round(d.height*f.width*100/d.width)/100);n==mxConstants.ALIGN_BOTTOM?d.y+=d.height-f.height:n==mxConstants.ALIGN_MIDDLE&&(d.y+=Math.round((d.height-
+f.height)/2));d.height=f.height;e||(m==mxConstants.ALIGN_RIGHT?d.x+=d.width-f.width:m==mxConstants.ALIGN_CENTER&&(d.x+=Math.round((d.width-f.width)/2)),d.width=f.width)}if(!b&&!g){var p=this.view.getBounds(this.model.getChildren(a));if(null!=p){var r=this.view.translate,q=this.view.scale,t=(p.x+p.width)/q-d.x-r.x;d.height=Math.max(d.height,(p.y+p.height)/q-d.y-r.y);e||(d.width=Math.max(d.width,t))}}this.cellsResized([a],[d],!1)}}}finally{this.model.endUpdate()}}};
mxGraph.prototype.getPreferredSizeForCell=function(a,b){var c=null;if(null!=a){var d=this.view.createState(a),e=d.style;if(!this.model.isEdge(a)){var f=e[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE;a=c=0;null==this.getImage(d)&&null==e[mxConstants.STYLE_IMAGE]||e[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(e[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(c+=parseFloat(e[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),e[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&
(a+=parseFloat(e[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize));c+=2*(e[mxConstants.STYLE_SPACING]||0);c+=e[mxConstants.STYLE_SPACING_LEFT]||0;c+=e[mxConstants.STYLE_SPACING_RIGHT]||0;a+=2*(e[mxConstants.STYLE_SPACING]||0);a+=e[mxConstants.STYLE_SPACING_TOP]||0;a+=e[mxConstants.STYLE_SPACING_BOTTOM]||0;var g=this.getFoldingImage(d);null!=g&&(c+=g.width+8);g=this.cellRenderer.getLabelValue(d);null!=g&&0<g.length?(this.isHtmlLabel(d.cell)||(g=mxUtils.htmlEntities(g,!1)),g=g.replace(/\n/g,
"<br>"),d=mxUtils.getSizeForString(g,f,e[mxConstants.STYLE_FONTFAMILY],b,e[mxConstants.STYLE_FONTSTYLE]),b=d.width+c,d=d.height+a,mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)||(e=d,d=b,b=e),this.gridEnabled&&(b=this.snap(b+this.gridSize/2),d=this.snap(d+this.gridSize/2)),c=new mxRectangle(0,0,b,d)):(e=4*this.gridSize,c=new mxRectangle(0,0,e,e))}}return c};mxGraph.prototype.resizeCell=function(a,b,c){return this.resizeCells([a],[b],c)[0]};
@@ -1858,12 +1858,13 @@ mxCellHighlight.prototype.repaint=function(){null!=this.state&&null!=this.shape&
"0"),this.shape.strokewidth=this.getStrokeWidth()/this.state.view.scale,this.shape.outline=!0),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),this.shape.redraw())};mxCellHighlight.prototype.hide=function(){this.highlight(null)};mxCellHighlight.prototype.highlight=function(a){this.state!=a&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=a,null!=this.state&&this.drawHighlight())};
mxCellHighlight.prototype.isHighlightAt=function(a,b){var c=!1;if(null!=this.shape&&null!=document.elementFromPoint)for(a=document.elementFromPoint(a,b);null!=a;){if(a==this.shape.node){c=!0;break}a=a.parentNode}return c};mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler);this.graph.getView().removeListener(this.repaintHandler);this.graph.getModel().removeListener(this.repaintHandler);null!=this.shape&&(this.shape.destroy(),this.shape=null)};
var mxCodecRegistry={codecs:[],aliases:[],register:function(a){if(null!=a){var b=a.getName();mxCodecRegistry.codecs[b]=a;var c=mxUtils.getFunctionName(a.template.constructor);c!=b&&mxCodecRegistry.addAlias(c,b)}return a},addAlias:function(a,b){mxCodecRegistry.aliases[a]=b},getCodec:function(a){var b=null;if(null!=a){b=mxUtils.getFunctionName(a);var c=mxCodecRegistry.aliases[b];null!=c&&(b=c);b=mxCodecRegistry.codecs[b];if(null==b)try{b=new mxObjectCodec(new a),mxCodecRegistry.register(b)}catch(d){}}return b}};
-function mxCodec(a){this.document=a||mxUtils.createXmlDocument();this.objects=[]}mxCodec.prototype.document=null;mxCodec.prototype.objects=null;mxCodec.prototype.elements=null;mxCodec.prototype.encodeDefaults=!1;mxCodec.prototype.putObject=function(a,b){return this.objects[a]=b};mxCodec.prototype.getObject=function(a){var b=null;null!=a&&(b=this.objects[a],null==b&&(b=this.lookup(a),null==b&&(a=this.getElementById(a),null!=a&&(b=this.decode(a)))));return b};mxCodec.prototype.lookup=function(a){return null};
-mxCodec.prototype.getElementById=function(a){this.updateElements();return this.elements[a]};mxCodec.prototype.updateElements=function(){null==this.elements&&(this.elements={},null!=this.document.documentElement&&this.addElement(this.document.documentElement))};
+function mxCodec(a){this.document=a||mxUtils.createXmlDocument();this.objects=[]}mxCodec.allowlist=null;mxCodec.prototype.document=null;mxCodec.prototype.objects=null;mxCodec.prototype.elements=null;mxCodec.prototype.encodeDefaults=!1;mxCodec.prototype.putObject=function(a,b){return this.objects[a]=b};mxCodec.prototype.getObject=function(a){var b=null;null!=a&&(b=this.objects[a],null==b&&(b=this.lookup(a),null==b&&(a=this.getElementById(a),null!=a&&(b=this.decode(a)))));return b};
+mxCodec.prototype.lookup=function(a){return null};mxCodec.prototype.getElementById=function(a){this.updateElements();return this.elements[a]};mxCodec.prototype.updateElements=function(){null==this.elements&&(this.elements={},null!=this.document.documentElement&&this.addElement(this.document.documentElement))};
mxCodec.prototype.addElement=function(a){if(a.nodeType==mxConstants.NODETYPE_ELEMENT){var b=a.getAttribute("id");if(null!=b)if(null==this.elements[b])this.elements[b]=a;else if(this.elements[b]!=a)throw Error(b+": Duplicate ID");}for(a=a.firstChild;null!=a;)this.addElement(a),a=a.nextSibling};mxCodec.prototype.getId=function(a){var b=null;null!=a&&(b=this.reference(a),null==b&&a instanceof mxCell&&(b=a.getId(),null==b&&(b=mxCellPath.create(a),0==b.length&&(b="root"))));return b};
mxCodec.prototype.reference=function(a){return null};mxCodec.prototype.encode=function(a){var b=null;if(null!=a&&null!=a.constructor){var c=mxCodecRegistry.getCodec(a.constructor);null!=c?b=c.encode(this,a):mxUtils.isNode(a)?b=mxUtils.importNode(this.document,a,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(a.constructor))}return b};
-mxCodec.prototype.decode=function(a,b){this.updateElements();var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=null;try{c=window[a.nodeName]}catch(d){}c=mxCodecRegistry.getCodec(c);null!=c?c=c.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}return c};mxCodec.prototype.encodeCell=function(a,b,c){b.appendChild(this.encode(a));if(null==c||c){c=a.getChildCount();for(var d=0;d<c;d++)this.encodeCell(a.getChildAt(d),b)}};
-mxCodec.prototype.isCellCodec=function(a){return null!=a&&"function"==typeof a.isCellCodec?a.isCellCodec():!1};mxCodec.prototype.decodeCell=function(a,b){b=null!=b?b:!0;var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=mxCodecRegistry.getCodec(a.nodeName);if(!this.isCellCodec(c))for(var d=a.firstChild;null!=d&&!this.isCellCodec(c);)c=mxCodecRegistry.getCodec(d.nodeName),d=d.nextSibling;this.isCellCodec(c)||(c=mxCodecRegistry.getCodec(mxCell));c=c.decode(this,a);b&&this.insertIntoGraph(c)}return c};
+mxCodec.prototype.decode=function(a,b){this.updateElements();var c=null;null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT&&(c=this.getConstructor(a.nodeName),c=mxCodecRegistry.getCodec(c),null!=c?c=c.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as")));return c};mxCodec.prototype.getConstructor=function(a){var b=null;try{null==mxCodec.allowlist||0<=mxUtils.indexOf(mxCodec.allowlist,a)?b=window[a]:null!=window.console&&console.error("mxCodec.getConstructor: "+a+" not allowed in mxCodec.allowlist")}catch(c){}return b};
+mxCodec.prototype.encodeCell=function(a,b,c){b.appendChild(this.encode(a));if(null==c||c){c=a.getChildCount();for(var d=0;d<c;d++)this.encodeCell(a.getChildAt(d),b)}};mxCodec.prototype.isCellCodec=function(a){return null!=a&&"function"==typeof a.isCellCodec?a.isCellCodec():!1};
+mxCodec.prototype.decodeCell=function(a,b){b=null!=b?b:!0;var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=mxCodecRegistry.getCodec(a.nodeName);if(!this.isCellCodec(c))for(var d=a.firstChild;null!=d&&!this.isCellCodec(c);)c=mxCodecRegistry.getCodec(d.nodeName),d=d.nextSibling;this.isCellCodec(c)||(c=mxCodecRegistry.getCodec(mxCell));c=c.decode(this,a);b&&this.insertIntoGraph(c)}return c};
mxCodec.prototype.insertIntoGraph=function(a){var b=a.parent,c=a.getTerminal(!0),d=a.getTerminal(!1);a.setTerminal(null,!1);a.setTerminal(null,!0);a.parent=null;if(null!=b){if(b==a)throw Error(b.id+": Self Reference");b.insert(a)}null!=c&&c.insertEdge(a,!0);null!=d&&d.insertEdge(a,!1)};mxCodec.prototype.setAttribute=function(a,b,c){null!=b&&null!=c&&a.setAttribute(b,c)};
function mxObjectCodec(a,b,c,d){this.template=a;this.exclude=null!=b?b:[];this.idrefs=null!=c?c:[];this.mapping=null!=d?d:[];this.reverse={};for(var e in this.mapping)this.reverse[this.mapping[e]]=e}mxObjectCodec.allowEval=!1;mxObjectCodec.prototype.template=null;mxObjectCodec.prototype.exclude=null;mxObjectCodec.prototype.idrefs=null;mxObjectCodec.prototype.mapping=null;mxObjectCodec.prototype.reverse=null;mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)};
mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor};mxObjectCodec.prototype.getFieldName=function(a){if(null!=a){var b=this.reverse[a];null!=b&&(a=b)}return a};mxObjectCodec.prototype.getAttributeName=function(a){if(null!=a){var b=this.mapping[a];null!=b&&(a=b)}return a};mxObjectCodec.prototype.isExcluded=function(a,b,c,d){return b==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,b)};
@@ -2061,10 +2062,10 @@ this.graph.isCellSelected(E)&&!this.graph.isToggleEvent(f.getEvent())||this.grap
0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(J,V){this.clearSelectionState()});n.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionStateListener);
n.getModel().addListener(mxEvent.CHANGE,this.selectionStateListener);n.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);n.addListener(mxEvent.EDITING_STOPPED,this.selectionStateListener);n.getView().addListener("unitChanged",this.selectionStateListener);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,n.isEnabled=function(){return!1},n.panningHandler.isForcePanningEvent=function(J){return!mxEvent.isPopupTrigger(J.getEvent())});this.actions=new Actions(this);this.menus=
this.createMenus();if(!n.standalone){var t="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),E="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),
-d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(J){try{var V=n.getCellStyle(J,!1),P=[],R=[],ia;for(ia in V)P.push(V[ia]),R.push(ia);n.getModel().isEdge(J)?n.currentEdgeStyle={}:n.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",R,"values",P,"cells",[J]))}catch(la){this.handleError(la)}};this.clearDefaultStyle=function(){n.currentEdgeStyle=mxUtils.clone(n.defaultEdgeStyle);
+d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(J){try{var V=n.getCellStyle(J,!1),P=[],R=[],ha;for(ha in V)P.push(V[ha]),R.push(ha);n.getModel().isEdge(J)?n.currentEdgeStyle={}:n.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",R,"values",P,"cells",[J]))}catch(la){this.handleError(la)}};this.clearDefaultStyle=function(){n.currentEdgeStyle=mxUtils.clone(n.defaultEdgeStyle);
n.currentVertexStyle=mxUtils.clone(n.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var f=["fontFamily","fontSource","fontSize","fontColor"];for(e=0;e<f.length;e++)0>mxUtils.indexOf(t,f[e])&&t.push(f[e]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),m=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
-["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<m.length;e++)for(k=0;k<m[e].length;k++)t.push(m[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var q=function(J,V,P,R,ia,la,ta){R=null!=R?R:n.currentVertexStyle;ia=null!=ia?ia:n.currentEdgeStyle;la=null!=la?la:!0;P=null!=P?P:n.getModel();if(ta){ta=[];for(var u=0;u<J.length;u++)ta=ta.concat(P.getDescendants(J[u]));J=ta}P.beginUpdate();try{for(u=0;u<J.length;u++){var I=J[u];if(V)var N=["fontSize",
-"fontFamily","fontColor"];else{var W=P.getStyle(I),T=null!=W?W.split(";"):[];N=t.slice();for(var Q=0;Q<T.length;Q++){var Z=T[Q],na=Z.indexOf("=");if(0<=na){var va=Z.substring(0,na),Ba=mxUtils.indexOf(N,va);0<=Ba&&N.splice(Ba,1);for(ta=0;ta<m.length;ta++){var sa=m[ta];if(0<=mxUtils.indexOf(sa,va))for(var Da=0;Da<sa.length;Da++){var Aa=mxUtils.indexOf(N,sa[Da]);0<=Aa&&N.splice(Aa,1)}}}}}var za=P.isEdge(I);ta=za?ia:R;var Ca=P.getStyle(I);for(Q=0;Q<N.length;Q++){va=N[Q];var Qa=ta[va];null!=Qa&&"edgeStyle"!=
+["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<m.length;e++)for(k=0;k<m[e].length;k++)t.push(m[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var q=function(J,V,P,R,ha,la,ta){R=null!=R?R:n.currentVertexStyle;ha=null!=ha?ha:n.currentEdgeStyle;la=null!=la?la:!0;P=null!=P?P:n.getModel();if(ta){ta=[];for(var u=0;u<J.length;u++)ta=ta.concat(P.getDescendants(J[u]));J=ta}P.beginUpdate();try{for(u=0;u<J.length;u++){var I=J[u];if(V)var N=["fontSize",
+"fontFamily","fontColor"];else{var W=P.getStyle(I),T=null!=W?W.split(";"):[];N=t.slice();for(var Q=0;Q<T.length;Q++){var Z=T[Q],na=Z.indexOf("=");if(0<=na){var va=Z.substring(0,na),Ba=mxUtils.indexOf(N,va);0<=Ba&&N.splice(Ba,1);for(ta=0;ta<m.length;ta++){var sa=m[ta];if(0<=mxUtils.indexOf(sa,va))for(var Da=0;Da<sa.length;Da++){var Aa=mxUtils.indexOf(N,sa[Da]);0<=Aa&&N.splice(Aa,1)}}}}}var za=P.isEdge(I);ta=za?ha:R;var Ca=P.getStyle(I);for(Q=0;Q<N.length;Q++){va=N[Q];var Qa=ta[va];null!=Qa&&"edgeStyle"!=
va&&("shape"!=va||za)&&(!za||la||0>mxUtils.indexOf(d,va))&&(Ca=mxUtils.setStyle(Ca,va,Qa))}Editor.simpleLabels&&(Ca=mxUtils.setStyle(mxUtils.setStyle(Ca,"html",null),"whiteSpace",null));P.setStyle(I,Ca)}}finally{P.endUpdate()}return J};n.addListener("cellsInserted",function(J,V){q(V.getProperty("cells"),null,null,null,null,!0,!0)});n.addListener("textInserted",function(J,V){q(V.getProperty("cells"),!0)});this.insertHandler=q;this.createDivs();this.createUi();this.refresh();var y=mxUtils.bind(this,
function(J){null==J&&(J=window.event);return n.isEditing()||null!=J&&this.isSelectionAllowed(J)});this.container==document.body&&(this.menubarContainer.onselectstart=y,this.menubarContainer.onmousedown=y,this.toolbarContainer.onselectstart=y,this.toolbarContainer.onmousedown=y,this.diagramContainer.onselectstart=y,this.diagramContainer.onmousedown=y,this.sidebarContainer.onselectstart=y,this.sidebarContainer.onmousedown=y,this.formatContainer.onselectstart=y,this.formatContainer.onmousedown=y,this.footerContainer.onselectstart=
y,this.footerContainer.onmousedown=y,null!=this.tabContainer&&(this.tabContainer.onselectstart=y));!this.editor.chromeless||this.editor.editable?(e=function(J){if(null!=J){var V=mxEvent.getSource(J);if("A"==V.nodeName)for(;null!=V;){if("geHint"==V.className)return!0;V=V.parentNode}}return y(J)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",e):this.diagramContainer.oncontextmenu=e):n.panningHandler.usePopupTrigger=
@@ -2076,9 +2077,9 @@ X=mxUtils.bind(this,function(){if(null!=this.toolbar&&ba!=n.cellEditor.isContent
Y=J;pa=P;O=V}}),ea=this,ka=n.cellEditor.startEditing;n.cellEditor.startEditing=function(){ka.apply(this,arguments);X();if(n.cellEditor.isContentEditing()){var J=!1,V=function(){J||(J=!0,window.setTimeout(function(){var P=n.getSelectedEditingElement();null!=P&&(P=mxUtils.getCurrentStyle(P),null!=P&&null!=ea.toolbar&&(ea.toolbar.setFontName(Graph.stripQuotes(P.fontFamily)),ea.toolbar.setFontSize(parseInt(P.fontSize))));J=!1},0))};mxEvent.addListener(n.cellEditor.textarea,"input",V);mxEvent.addListener(n.cellEditor.textarea,
"touchend",V);mxEvent.addListener(n.cellEditor.textarea,"mouseup",V);mxEvent.addListener(n.cellEditor.textarea,"keyup",V);V()}};var ja=n.cellEditor.stopEditing;n.cellEditor.stopEditing=function(J,V){try{ja.apply(this,arguments),X()}catch(P){ea.handleError(P)}};n.container.setAttribute("tabindex","0");n.container.style.cursor="default";if(window.self===window.top&&null!=n.container.parentNode)try{n.container.focus()}catch(J){}var U=n.fireMouseEvent;n.fireMouseEvent=function(J,V,P){J==mxEvent.MOUSE_DOWN&&
this.container.focus();U.apply(this,arguments)};n.popupMenuHandler.autoExpand=!0;null!=this.menus&&(n.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(J,V,P){this.menus.createPopupMenu(J,V,P)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(J){n.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};n.connectionHandler.addListener(mxEvent.CONNECT,function(J,V){var P=[V.getProperty("cell")];V.getProperty("terminalInserted")&&
-(P.push(V.getProperty("terminal")),window.setTimeout(function(){null!=ea.hoverIcons&&ea.hoverIcons.update(n.view.getState(P[P.length-1]))},0));q(P)});this.addListener("styleChanged",mxUtils.bind(this,function(J,V){var P=V.getProperty("cells"),R=J=!1;if(0<P.length)for(var ia=0;ia<P.length&&(J=n.getModel().isVertex(P[ia])||J,!(R=n.getModel().isEdge(P[ia])||R)||!J);ia++);else R=J=!0;P=V.getProperty("keys");V=V.getProperty("values");for(ia=0;ia<P.length;ia++){var la=0<=mxUtils.indexOf(f,P[ia]);if("strokeColor"!=
-P[ia]||null!=V[ia]&&"none"!=V[ia])if(0<=mxUtils.indexOf(E,P[ia]))R||0<=mxUtils.indexOf(g,P[ia])?null==V[ia]?delete n.currentEdgeStyle[P[ia]]:n.currentEdgeStyle[P[ia]]=V[ia]:J&&0<=mxUtils.indexOf(t,P[ia])&&(null==V[ia]?delete n.currentVertexStyle[P[ia]]:n.currentVertexStyle[P[ia]]=V[ia]);else if(0<=mxUtils.indexOf(t,P[ia])){if(J||la)null==V[ia]?delete n.currentVertexStyle[P[ia]]:n.currentVertexStyle[P[ia]]=V[ia];if(R||la||0<=mxUtils.indexOf(g,P[ia]))null==V[ia]?delete n.currentEdgeStyle[P[ia]]:n.currentEdgeStyle[P[ia]]=
-V[ia]}}null!=this.toolbar&&(this.toolbar.setFontName(n.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(n.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==n.currentEdgeStyle.edgeStyle&&"1"==n.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==n.currentEdgeStyle.edgeStyle||"none"==n.currentEdgeStyle.edgeStyle||null==
+(P.push(V.getProperty("terminal")),window.setTimeout(function(){null!=ea.hoverIcons&&ea.hoverIcons.update(n.view.getState(P[P.length-1]))},0));q(P)});this.addListener("styleChanged",mxUtils.bind(this,function(J,V){var P=V.getProperty("cells"),R=J=!1;if(0<P.length)for(var ha=0;ha<P.length&&(J=n.getModel().isVertex(P[ha])||J,!(R=n.getModel().isEdge(P[ha])||R)||!J);ha++);else R=J=!0;P=V.getProperty("keys");V=V.getProperty("values");for(ha=0;ha<P.length;ha++){var la=0<=mxUtils.indexOf(f,P[ha]);if("strokeColor"!=
+P[ha]||null!=V[ha]&&"none"!=V[ha])if(0<=mxUtils.indexOf(E,P[ha]))R||0<=mxUtils.indexOf(g,P[ha])?null==V[ha]?delete n.currentEdgeStyle[P[ha]]:n.currentEdgeStyle[P[ha]]=V[ha]:J&&0<=mxUtils.indexOf(t,P[ha])&&(null==V[ha]?delete n.currentVertexStyle[P[ha]]:n.currentVertexStyle[P[ha]]=V[ha]);else if(0<=mxUtils.indexOf(t,P[ha])){if(J||la)null==V[ha]?delete n.currentVertexStyle[P[ha]]:n.currentVertexStyle[P[ha]]=V[ha];if(R||la||0<=mxUtils.indexOf(g,P[ha]))null==V[ha]?delete n.currentEdgeStyle[P[ha]]:n.currentEdgeStyle[P[ha]]=
+V[ha]}}null!=this.toolbar&&(this.toolbar.setFontName(n.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(n.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==n.currentEdgeStyle.edgeStyle&&"1"==n.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==n.currentEdgeStyle.edgeStyle||"none"==n.currentEdgeStyle.edgeStyle||null==
n.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&
(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==n.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==n.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==n.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"))}));null!=this.toolbar&&(b=mxUtils.bind(this,function(){var J=n.currentVertexStyle.fontFamily||"Helvetica",V=String(n.currentVertexStyle.fontSize||"12"),P=n.getView().getState(n.getSelectionCell());null!=P&&(J=
P.style[mxConstants.STYLE_FONTFAMILY]||J,V=P.style[mxConstants.STYLE_FONTSIZE]||V,10<J.length&&(J=J.substring(0,8)+"..."));this.toolbar.setFontName(J);this.toolbar.setFontSize(V)}),n.getSelectionModel().addListener(mxEvent.CHANGE,b),n.getModel().addListener(mxEvent.CHANGE,b));n.addListener(mxEvent.CELLS_ADDED,function(J,V){J=V.getProperty("cells");V=V.getProperty("parent");null!=V&&n.getModel().isLayer(V)&&!n.isCellVisible(V)&&null!=J&&0<J.length&&n.getModel().setVisible(V,!0)});this.gestureHandler=
@@ -2129,13 +2130,13 @@ EditorUi.prototype.initClipboard=function(){var b=this,e=mxClipboard.cut;mxClipb
null;t.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):E=k.apply(this,arguments);b.updatePasteActionStates();return E};var n=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){n.apply(this,arguments);b.updatePasteActionStates()};var D=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(t,E){D.apply(this,arguments);b.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
EditorUi.prototype.initCanvas=function(){var b=this.editor.graph;b.timerAutoScroll=!0;b.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((b.container.offsetWidth-34)/b.view.scale)),Math.max(0,Math.round((b.container.offsetHeight-34)/b.view.scale)))};b.view.getBackgroundPageBounds=function(){var P=this.graph.getPageLayout(),R=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+P.x*R.width),this.scale*(this.translate.y+P.y*R.height),this.scale*P.width*R.width,
-this.scale*P.height*R.height)};b.getPreferredPageSize=function(P,R,ia){P=this.getPageLayout();R=this.getPageSize();return new mxRectangle(0,0,P.width*R.width,P.height*R.height)};var e=null,k=this;if(this.editor.isChromelessView()){this.chromelessResize=e=mxUtils.bind(this,function(P,R,ia,la){if(null!=b.container&&!b.isViewer()){ia=null!=ia?ia:0;la=null!=la?la:0;var ta=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),u=mxUtils.hasScrollbars(b.container),I=b.view.translate,N=b.view.scale,
+this.scale*P.height*R.height)};b.getPreferredPageSize=function(P,R,ha){P=this.getPageLayout();R=this.getPageSize();return new mxRectangle(0,0,P.width*R.width,P.height*R.height)};var e=null,k=this;if(this.editor.isChromelessView()){this.chromelessResize=e=mxUtils.bind(this,function(P,R,ha,la){if(null!=b.container&&!b.isViewer()){ha=null!=ha?ha:0;la=null!=la?la:0;var ta=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),u=mxUtils.hasScrollbars(b.container),I=b.view.translate,N=b.view.scale,
W=mxRectangle.fromRectangle(ta);W.x=W.x/N-I.x;W.y=W.y/N-I.y;W.width/=N;W.height/=N;I=b.container.scrollTop;var T=b.container.scrollLeft,Q=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)Q+=3;var Z=b.container.offsetWidth-Q;Q=b.container.offsetHeight-Q;P=P?Math.max(.3,Math.min(R||1,Z/W.width)):N;R=(Z-P*W.width)/2/P;var na=0==this.lightboxVerticalDivider?0:(Q-P*W.height)/this.lightboxVerticalDivider/P;u&&(R=Math.max(R,0),na=Math.max(na,0));if(u||ta.width<Z||ta.height<
-Q)b.view.scaleAndTranslate(P,Math.floor(R-W.x),Math.floor(na-W.y)),b.container.scrollTop=I*P/N,b.container.scrollLeft=T*P/N;else if(0!=ia||0!=la)ta=b.view.translate,b.view.setTranslate(Math.floor(ta.x+ia/N),Math.floor(ta.y+la/N))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var n=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",n);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",
+Q)b.view.scaleAndTranslate(P,Math.floor(R-W.x),Math.floor(na-W.y)),b.container.scrollTop=I*P/N,b.container.scrollLeft=T*P/N;else if(0!=ha||0!=la)ta=b.view.translate,b.view.setTranslate(Math.floor(ta.x+ha/N),Math.floor(ta.y+la/N))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var n=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",n);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",
n)});this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(P){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(P){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var D=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";
this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=b.isViewer()?"0":"50%";mxClient.IS_IE||mxClient.IS_IE11?(this.chromelessToolbar.style.backgroundColor="#ffffff",this.chromelessToolbar.style.border="3px solid black"):this.chromelessToolbar.style.backgroundColor="#000000";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,
-"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out");var t=mxUtils.bind(this,function(){var P=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=P?parseInt(P["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",t);t();var E=0;t=mxUtils.bind(this,function(P,R,ia){E++;
-var la=document.createElement("span");la.style.paddingLeft="8px";la.style.paddingRight="8px";la.style.cursor="pointer";mxEvent.addListener(la,"click",P);null!=ia&&la.setAttribute("title",ia);P=document.createElement("img");P.setAttribute("border","0");P.setAttribute("src",R);P.style.width="36px";P.style.filter="invert(100%)";la.appendChild(P);this.chromelessToolbar.appendChild(la);return la});null!=D.backBtn&&t(mxUtils.bind(this,function(P){window.location.href=D.backBtn.url;mxEvent.consume(P)}),
+"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out");var t=mxUtils.bind(this,function(){var P=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=P?parseInt(P["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",t);t();var E=0;t=mxUtils.bind(this,function(P,R,ha){E++;
+var la=document.createElement("span");la.style.paddingLeft="8px";la.style.paddingRight="8px";la.style.cursor="pointer";mxEvent.addListener(la,"click",P);null!=ha&&la.setAttribute("title",ha);P=document.createElement("img");P.setAttribute("border","0");P.setAttribute("src",R);P.style.width="36px";P.style.filter="invert(100%)";la.appendChild(P);this.chromelessToolbar.appendChild(la);return la});null!=D.backBtn&&t(mxUtils.bind(this,function(P){window.location.href=D.backBtn.url;mxEvent.consume(P)}),
Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var d=t(mxUtils.bind(this,function(P){this.actions.get("previousPage").funct();mxEvent.consume(P)}),Editor.previousImage,mxResources.get("previousPage")),f=document.createElement("div");f.style.fontFamily=Editor.defaultHtmlFont;f.style.display="inline-block";f.style.verticalAlign="top";f.style.fontWeight="bold";f.style.marginTop="8px";f.style.fontSize="14px";f.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";
this.chromelessToolbar.appendChild(f);var g=t(mxUtils.bind(this,function(P){this.actions.get("nextPage").funct();mxEvent.consume(P)}),Editor.nextImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerText="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var q=mxUtils.bind(this,
function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",d.style.display="",f.style.display="inline-block"):(g.style.display="none",d.style.display="none",f.style.display="none");m()});this.editor.addListener("resetGraphView",q);this.editor.addListener("pageSelected",m)}t(mxUtils.bind(this,function(P){this.actions.get("zoomOut").funct();mxEvent.consume(P)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(P){this.actions.get("zoomIn").funct();
@@ -2150,18 +2151,18 @@ document.body))&&t(mxUtils.bind(this,function(P){"1"==urlParams.close||D.closeBt
(mxEvent.isShiftDown(P)||H(30),C())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(P){mxEvent.consume(P)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(P){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(P)?C():H(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(P){mxEvent.isShiftDown(P)?C():H(100);mxEvent.consume(P)}));mxEvent.addListener(this.chromelessToolbar,
"mouseleave",mxUtils.bind(this,function(P){mxEvent.isTouchEvent(P)||H(30)}));var ba=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(P,R){this.startX=R.getGraphX();this.startY=R.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(P,R){},mouseUp:function(P,R){mxEvent.isTouchEvent(R.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<ba&&Math.abs(this.scrollTop-b.container.scrollTop)<
ba&&Math.abs(this.startX-R.getGraphX())<ba&&Math.abs(this.startY-R.getGraphY())<ba&&(0<parseFloat(k.chromelessToolbar.style.opacity||0)?C():H(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var Y=b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var P=this.graph.getPagePadding(),R=this.graph.getPageSize();this.translate.x=P.x-(this.x0||0)*R.width;this.translate.y=P.y-(this.y0||0)*
-R.height}Y.apply(this,arguments)};if(!b.isViewer()){var pa=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var P=this.getPageLayout(),R=this.getPagePadding(),ia=this.getPageSize(),la=Math.ceil(2*R.x+P.width*ia.width),ta=Math.ceil(2*R.y+P.height*ia.height),u=b.minimumGraphSize;if(null==u||u.width!=la||u.height!=ta)b.minimumGraphSize=new mxRectangle(0,0,la,ta);la=R.x-P.x*ia.width;R=R.y-P.y*ia.height;this.autoTranslate||this.view.translate.x==
-la&&this.view.translate.y==R?pa.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=P.x,this.view.y0=P.y,P=b.view.translate.x,ia=b.view.translate.y,b.view.setTranslate(la,R),b.container.scrollLeft+=Math.round((la-P)*b.view.scale),b.container.scrollTop+=Math.round((R-ia)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var O=b.view.getBackgroundPane(),X=b.view.getDrawPane();b.cumulativeZoomFactor=1;var ea=null,ka=null,
+R.height}Y.apply(this,arguments)};if(!b.isViewer()){var pa=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var P=this.getPageLayout(),R=this.getPagePadding(),ha=this.getPageSize(),la=Math.ceil(2*R.x+P.width*ha.width),ta=Math.ceil(2*R.y+P.height*ha.height),u=b.minimumGraphSize;if(null==u||u.width!=la||u.height!=ta)b.minimumGraphSize=new mxRectangle(0,0,la,ta);la=R.x-P.x*ha.width;R=R.y-P.y*ha.height;this.autoTranslate||this.view.translate.x==
+la&&this.view.translate.y==R?pa.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=P.x,this.view.y0=P.y,P=b.view.translate.x,ha=b.view.translate.y,b.view.setTranslate(la,R),b.container.scrollLeft+=Math.round((la-P)*b.view.scale),b.container.scrollTop+=Math.round((R-ha)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var O=b.view.getBackgroundPane(),X=b.view.getDrawPane();b.cumulativeZoomFactor=1;var ea=null,ka=null,
ja=null,U=null,J=null,V=function(P){null!=ea&&window.clearTimeout(ea);0<=P&&window.setTimeout(function(){if(!b.isMouseDown||U)ea=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),X.style.transformOrigin="",O.style.transformOrigin="",mxClient.IS_SF?
-(X.style.transform="scale(1)",O.style.transform="scale(1)",window.setTimeout(function(){X.style.transform="";O.style.transform=""},0)):(X.style.transform="",O.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var R=new mxPoint(b.container.scrollLeft,b.container.scrollTop),ia=mxUtils.getOffset(b.container),la=b.view.scale,ta=0,u=0;null!=ka&&(ta=b.container.offsetWidth/2-ka.x+ia.x,u=b.container.offsetHeight/2-ka.y+ia.y);b.zoom(b.cumulativeZoomFactor,
+(X.style.transform="scale(1)",O.style.transform="scale(1)",window.setTimeout(function(){X.style.transform="";O.style.transform=""},0)):(X.style.transform="",O.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var R=new mxPoint(b.container.scrollLeft,b.container.scrollTop),ha=mxUtils.getOffset(b.container),la=b.view.scale,ta=0,u=0;null!=ka&&(ta=b.container.offsetWidth/2-ka.x+ha.x,u=b.container.offsetHeight/2-ka.y+ha.y);b.zoom(b.cumulativeZoomFactor,
null,b.isFastZoomEnabled()?20:null);b.view.scale!=la&&(null!=ja&&(ta+=R.x-ja.x,u+=R.y-ja.y),null!=e&&k.chromelessResize(!1,null,ta*(b.cumulativeZoomFactor-1),u*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==ta&&0==u||(b.container.scrollLeft-=ta*(b.cumulativeZoomFactor-1),b.container.scrollTop-=u*(b.cumulativeZoomFactor-1)));null!=J&&X.setAttribute("filter",J);b.cumulativeZoomFactor=1;J=U=ka=ja=ea=null}),null!=P?P:b.isFastZoomEnabled()?k.wheelZoomDelay:k.lazyZoomDelay)},0)};b.lazyZoom=
-function(P,R,ia,la){la=null!=la?la:this.zoomFactor;(R=R||!b.scrollbars)&&(ka=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));P?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
+function(P,R,ha,la){la=null!=la?la:this.zoomFactor;(R=R||!b.scrollbars)&&(ka=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));P?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==J&&""!=X.getAttribute("filter")&&(J=X.getAttribute("filter"),X.removeAttribute("filter")),ja=new mxPoint(b.container.scrollLeft,b.container.scrollTop),P=R||null==ka?b.container.scrollLeft+
b.container.clientWidth/2:ka.x+b.container.scrollLeft-b.container.offsetLeft,la=R||null==ka?b.container.scrollTop+b.container.clientHeight/2:ka.y+b.container.scrollTop-b.container.offsetTop,X.style.transformOrigin=P+"px "+la+"px",X.style.transform="scale("+this.cumulativeZoomFactor+")",O.style.transformOrigin=P+"px "+la+"px",O.style.transform="scale("+this.cumulativeZoomFactor+")",null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(P=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(P.style,
"transform-origin",(R||null==ka?b.container.clientWidth/2+b.container.scrollLeft-P.offsetLeft+"px":ka.x+b.container.scrollLeft-P.offsetLeft-b.container.offsetLeft+"px")+" "+(R||null==ka?b.container.clientHeight/2+b.container.scrollTop-P.offsetTop+"px":ka.y+b.container.scrollTop-P.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(P.style,"transform","scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=k.hoverIcons&&
-k.hoverIcons.reset());V(b.isFastZoomEnabled()?ia:0)};mxEvent.addGestureListeners(b.container,function(P){null!=ea&&window.clearTimeout(ea)},null,function(P){1!=b.cumulativeZoomFactor&&V(0)});mxEvent.addListener(b.container,"scroll",function(P){null==ea||b.isMouseDown||1==b.cumulativeZoomFactor||V(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(P,R,ia,la,ta){b.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!ia&&b.isScrollWheelEvent(P))ia=
-b.view.getTranslate(),la=40/b.view.scale,mxEvent.isShiftDown(P)?b.view.setTranslate(ia.x+(R?-la:la),ia.y):b.view.setTranslate(ia.x,ia.y+(R?la:-la));else if(ia||b.isZoomWheelEvent(P))for(var u=mxEvent.getSource(P);null!=u;){if(u==b.container)return b.tooltipHandler.hideTooltip(),ka=null!=la&&null!=ta?new mxPoint(la,ta):new mxPoint(mxEvent.getClientX(P),mxEvent.getClientY(P)),U=ia,ia=b.zoomFactor,la=null,P.ctrlKey&&null!=P.deltaY&&40>Math.abs(P.deltaY)&&Math.round(P.deltaY)!=P.deltaY?ia=1+Math.abs(P.deltaY)/
-20*(ia-1):null!=P.movementY&&"pointermove"==P.type&&(ia=1+Math.max(1,Math.abs(P.movementY))/20*(ia-1),la=-1),b.lazyZoom(R,null,la,ia),mxEvent.consume(P),!1;u=u.parentNode}}),b.container);b.panningHandler.zoomGraph=function(P){b.cumulativeZoomFactor=P.scale;b.lazyZoom(0<P.scale,!0);mxEvent.consume(P)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(e){this.actions.get("print").funct();mxEvent.consume(e)}),Editor.printImage,mxResources.get("print"))};
+k.hoverIcons.reset());V(b.isFastZoomEnabled()?ha:0)};mxEvent.addGestureListeners(b.container,function(P){null!=ea&&window.clearTimeout(ea)},null,function(P){1!=b.cumulativeZoomFactor&&V(0)});mxEvent.addListener(b.container,"scroll",function(P){null==ea||b.isMouseDown||1==b.cumulativeZoomFactor||V(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(P,R,ha,la,ta){b.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!ha&&b.isScrollWheelEvent(P))ha=
+b.view.getTranslate(),la=40/b.view.scale,mxEvent.isShiftDown(P)?b.view.setTranslate(ha.x+(R?-la:la),ha.y):b.view.setTranslate(ha.x,ha.y+(R?la:-la));else if(ha||b.isZoomWheelEvent(P))for(var u=mxEvent.getSource(P);null!=u;){if(u==b.container)return b.tooltipHandler.hideTooltip(),ka=null!=la&&null!=ta?new mxPoint(la,ta):new mxPoint(mxEvent.getClientX(P),mxEvent.getClientY(P)),U=ha,ha=b.zoomFactor,la=null,P.ctrlKey&&null!=P.deltaY&&40>Math.abs(P.deltaY)&&Math.round(P.deltaY)!=P.deltaY?ha=1+Math.abs(P.deltaY)/
+20*(ha-1):null!=P.movementY&&"pointermove"==P.type&&(ha=1+Math.max(1,Math.abs(P.movementY))/20*(ha-1),la=-1),b.lazyZoom(R,null,la,ha),mxEvent.consume(P),!1;u=u.parentNode}}),b.container);b.panningHandler.zoomGraph=function(P){b.cumulativeZoomFactor=P.scale;b.lazyZoom(0<P.scale,!0);mxEvent.consume(P)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(e){this.actions.get("print").funct();mxEvent.consume(e)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.isPagesEnabled=function(){return this.editor.editable||"1"!=urlParams["hide-pages"]};EditorUi.prototype.createTemporaryGraph=function(b){return Graph.createOffscreenGraph(b)};EditorUi.prototype.addChromelessClickHandler=function(){var b=urlParams.highlight;null!=b&&0<b.length&&(b="#"+b);this.editor.graph.addClickHandler(b)};
EditorUi.prototype.toggleFormatPanel=function(b){b=null!=b?b:0==this.formatWidth;null!=this.format&&(this.formatWidth=b?240:0,this.formatContainer.style.display=b?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
EditorUi.prototype.lightboxFit=function(b){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var e=urlParams.border,k=60;null!=e&&(k=parseInt(e));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(k,null,null,null,null,null,b);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var b=this.editor.graph.getModel();return 1==b.getChildCount(b.root)&&0==b.getChildCount(b.getChildAt(b.root,0))};
@@ -2253,29 +2254,29 @@ this.scrollHandler=null);if(null!=this.destroyFunctions){for(b=0;b<this.destroyF
Date.prototype.toISOString||function(){function b(e){e=String(e);1===e.length&&(e="0"+e);return e}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+b(this.getUTCMonth()+1)+"-"+b(this.getUTCDate())+"T"+b(this.getUTCHours())+":"+b(this.getUTCMinutes())+":"+b(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
Uint8Array.from||(Uint8Array.from=function(){var b=Object.prototype.toString,e=function(n){return"function"===typeof n||"[object Function]"===b.call(n)},k=Math.pow(2,53)-1;return function(n){var D=Object(n);if(null==n)throw new TypeError("Array.from requires an array-like object - not null or undefined");var t=1<arguments.length?arguments[1]:void 0,E;if("undefined"!==typeof t){if(!e(t))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(E=
arguments[2])}var d=Number(D.length);d=isNaN(d)?0:0!==d&&isFinite(d)?(0<d?1:-1)*Math.floor(Math.abs(d)):d;d=Math.min(Math.max(d,0),k);for(var f=e(this)?Object(new this(d)):Array(d),g=0,m;g<d;)m=D[g],f[g]=t?"undefined"===typeof E?t(m,g):t.call(E,m,g):m,g+=1;f.length=d;return f}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
-mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var b=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===b||"en-ca"===b||"es-mx"===b?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
-mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
-mxGraphView.prototype.setUnit=function(b){this.unit!=b&&(this.unit=b,this.fireEvent(new mxEventObject("unitChanged","unit",b)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(b,e,k){return null};
+mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxCodec.allowlist="mxStylesheet Array mxGraphModel mxCell mxGeometry mxRectangle mxPoint".split(" ");mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var b=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===b||"en-ca"===b||"es-mx"===b?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}})();
+mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;
+mxGraphView.prototype.unit=mxConstants.POINTS;mxGraphView.prototype.setUnit=function(b){this.unit!=b&&(this.unit=b,this.fireEvent(new mxEventObject("unitChanged","unit",b)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(b,e,k){return null};
mxImageShape.prototype.getImageDataUri=function(){var b=this.image;if("data:image/svg+xml;base64,"==b.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=b)this.clippedSvg=Graph.clipSvgDataUri(b,!0),this.clippedImage=b;b=this.clippedSvg}return b};
Graph=function(b,e,k,n,D,t){mxGraph.call(this,b,e,k,n);this.themes=D||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=t?t:!1;b=this.baseUrl;e=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<e&&(e=b.indexOf("/",e+2),0<e&&(this.domainUrl=b.substring(0,e)),e=b.lastIndexOf("/"),0<e&&(this.domainPathUrl=b.substring(0,e+1)));this.isHtmlLabel=function(J){J=this.getCurrentCellStyle(J);
return null!=J?"1"==J.html||"wrap"==J[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var E=null,d=null,f=null,g=null,m=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(J,V){if("mouseDown"==V.getProperty("eventName")&&this.isEnabled()){J=V.getProperty("event");var P=J.getState();V=this.view.scale;if(!mxEvent.isAltDown(J.getEvent())&&null!=P)if(this.model.isEdge(P.cell))if(E=new mxPoint(J.getGraphX(),J.getGraphY()),m=this.isCellSelected(P.cell),f=P,d=J,null!=P.text&&null!=
-P.text.boundingBox&&mxUtils.contains(P.text.boundingBox,J.getGraphX(),J.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var R=this.selectionCellsHandler.getHandler(P.cell);null!=R&&null!=R.bends&&0<R.bends.length&&(g=R.getHandleForEvent(J))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(J.getEvent())&&(R=this.selectionCellsHandler.getHandler(P.cell),null==R||null==R.getHandleForEvent(J))){var ia=new mxRectangle(J.getGraphX()-1,J.getGraphY()-1),la=mxEvent.isTouchEvent(J.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+2)/2;R=la+2;ia.grow(la);if(this.isTableCell(P.cell)&&!this.isCellSelected(P.cell)&&!(mxUtils.contains(P,J.getGraphX()-R,J.getGraphY()-R)&&mxUtils.contains(P,J.getGraphX()-R,J.getGraphY()+R)&&mxUtils.contains(P,J.getGraphX()+R,J.getGraphY()+R)&&mxUtils.contains(P,J.getGraphX()+R,J.getGraphY()-R))){var ta=this.model.getParent(P.cell);R=this.model.getParent(ta);if(!this.isCellSelected(R)){la*=V;var u=2*la;if(this.model.getChildAt(R,0)!=ta&&mxUtils.intersects(ia,
-new mxRectangle(P.x,P.y-la,P.width,u))||this.model.getChildAt(ta,0)!=P.cell&&mxUtils.intersects(ia,new mxRectangle(P.x-la,P.y,u,P.height))||mxUtils.intersects(ia,new mxRectangle(P.x,P.y+P.height-la,P.width,u))||mxUtils.intersects(ia,new mxRectangle(P.x+P.width-la,P.y,u,P.height)))ta=this.selectionCellsHandler.isHandled(R),this.selectCellForEvent(R,J.getEvent()),R=this.selectionCellsHandler.getHandler(R),null!=R&&(la=R.getHandleForEvent(J),null!=la&&(R.start(J.getGraphX(),J.getGraphY(),la),R.blockDelayedSelection=
-!ta,J.consume()))}}for(;!J.isConsumed()&&null!=P&&(this.isTableCell(P.cell)||this.isTableRow(P.cell)||this.isTable(P.cell));)this.isSwimlane(P.cell)&&(R=this.getActualStartSize(P.cell),(0<R.x||0<R.width)&&mxUtils.intersects(ia,new mxRectangle(P.x+(R.x-R.width-1)*V+(0==R.x?P.width:0),P.y,1,P.height))||(0<R.y||0<R.height)&&mxUtils.intersects(ia,new mxRectangle(P.x,P.y+(R.y-R.height-1)*V+(0==R.y?P.height:0),P.width,1)))&&(this.selectCellForEvent(P.cell,J.getEvent()),R=this.selectionCellsHandler.getHandler(P.cell),
+P.text.boundingBox&&mxUtils.contains(P.text.boundingBox,J.getGraphX(),J.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var R=this.selectionCellsHandler.getHandler(P.cell);null!=R&&null!=R.bends&&0<R.bends.length&&(g=R.getHandleForEvent(J))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(J.getEvent())&&(R=this.selectionCellsHandler.getHandler(P.cell),null==R||null==R.getHandleForEvent(J))){var ha=new mxRectangle(J.getGraphX()-1,J.getGraphY()-1),la=mxEvent.isTouchEvent(J.getEvent())?mxShape.prototype.svgStrokeTolerance-
+1:(mxShape.prototype.svgStrokeTolerance+2)/2;R=la+2;ha.grow(la);if(this.isTableCell(P.cell)&&!this.isCellSelected(P.cell)&&!(mxUtils.contains(P,J.getGraphX()-R,J.getGraphY()-R)&&mxUtils.contains(P,J.getGraphX()-R,J.getGraphY()+R)&&mxUtils.contains(P,J.getGraphX()+R,J.getGraphY()+R)&&mxUtils.contains(P,J.getGraphX()+R,J.getGraphY()-R))){var ta=this.model.getParent(P.cell);R=this.model.getParent(ta);if(!this.isCellSelected(R)){la*=V;var u=2*la;if(this.model.getChildAt(R,0)!=ta&&mxUtils.intersects(ha,
+new mxRectangle(P.x,P.y-la,P.width,u))||this.model.getChildAt(ta,0)!=P.cell&&mxUtils.intersects(ha,new mxRectangle(P.x-la,P.y,u,P.height))||mxUtils.intersects(ha,new mxRectangle(P.x,P.y+P.height-la,P.width,u))||mxUtils.intersects(ha,new mxRectangle(P.x+P.width-la,P.y,u,P.height)))ta=this.selectionCellsHandler.isHandled(R),this.selectCellForEvent(R,J.getEvent()),R=this.selectionCellsHandler.getHandler(R),null!=R&&(la=R.getHandleForEvent(J),null!=la&&(R.start(J.getGraphX(),J.getGraphY(),la),R.blockDelayedSelection=
+!ta,J.consume()))}}for(;!J.isConsumed()&&null!=P&&(this.isTableCell(P.cell)||this.isTableRow(P.cell)||this.isTable(P.cell));)this.isSwimlane(P.cell)&&(R=this.getActualStartSize(P.cell),(0<R.x||0<R.width)&&mxUtils.intersects(ha,new mxRectangle(P.x+(R.x-R.width-1)*V+(0==R.x?P.width:0),P.y,1,P.height))||(0<R.y||0<R.height)&&mxUtils.intersects(ha,new mxRectangle(P.x,P.y+(R.y-R.height-1)*V+(0==R.y?P.height:0),P.width,1)))&&(this.selectCellForEvent(P.cell,J.getEvent()),R=this.selectionCellsHandler.getHandler(P.cell),
null!=R&&(la=mxEvent.CUSTOM_HANDLE-R.customHandles.length+1,R.start(J.getGraphX(),J.getGraphY(),la),J.consume())),P=this.view.getState(this.model.getParent(P.cell))}}}));this.addMouseListener({mouseDown:function(J,V){},mouseMove:mxUtils.bind(this,function(J,V){J=this.selectionCellsHandler.handlers.map;for(var P in J)if(null!=J[P].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(V.getEvent())){var R=this.tolerance;if(null!=E&&null!=f&&null!=d){if(P=f,Math.abs(E.x-
-V.getGraphX())>R||Math.abs(E.y-V.getGraphY())>R){var ia=this.selectionCellsHandler.getHandler(P.cell);null==ia&&this.model.isEdge(P.cell)&&(ia=this.createHandler(P));if(null!=ia&&null!=ia.bends&&0<ia.bends.length){J=ia.getHandleForEvent(d);var la=this.view.getEdgeStyle(P);R=la==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(J=g);if(R&&0!=J&&J!=ia.bends.length-1&&J!=mxEvent.LABEL_HANDLE)!R||null==P.visibleSourceState&&null==P.visibleTargetState||(this.graphHandler.reset(),V.consume());else if(J==
-mxEvent.LABEL_HANDLE||0==J||null!=P.visibleSourceState||J==ia.bends.length-1||null!=P.visibleTargetState)R||J==mxEvent.LABEL_HANDLE||(R=P.absolutePoints,null!=R&&(null==la&&null==J||la==mxEdgeStyle.OrthConnector)&&(J=g,null==J&&(J=new mxRectangle(E.x,E.y),J.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(J,R[0].x,R[0].y)?J=0:mxUtils.contains(J,R[R.length-1].x,R[R.length-1].y)?J=ia.bends.length-1:null!=la&&(2==R.length||3==R.length&&(0==Math.round(R[0].x-R[1].x)&&0==Math.round(R[1].x-
-R[2].x)||0==Math.round(R[0].y-R[1].y)&&0==Math.round(R[1].y-R[2].y)))?J=2:(J=mxUtils.findNearestSegment(P,E.x,E.y),J=null==la?mxEvent.VIRTUAL_HANDLE-J:J+1))),null==J&&(J=mxEvent.VIRTUAL_HANDLE)),ia.start(V.getGraphX(),V.getGraphX(),J),V.consume(),this.graphHandler.reset()}null!=ia&&(this.selectionCellsHandler.isHandlerActive(ia)?this.isCellSelected(P.cell)||(this.selectionCellsHandler.handlers.put(P.cell,ia),this.selectCellForEvent(P.cell,V.getEvent())):this.isCellSelected(P.cell)||ia.destroy());
-m=!1;E=d=f=g=null}}else if(P=V.getState(),null!=P&&this.isCellEditable(P.cell)){ia=null;if(this.model.isEdge(P.cell)){if(J=new mxRectangle(V.getGraphX(),V.getGraphY()),J.grow(mxEdgeHandler.prototype.handleImage.width/2),R=P.absolutePoints,null!=R)if(null!=P.text&&null!=P.text.boundingBox&&mxUtils.contains(P.text.boundingBox,V.getGraphX(),V.getGraphY()))ia="move";else if(mxUtils.contains(J,R[0].x,R[0].y)||mxUtils.contains(J,R[R.length-1].x,R[R.length-1].y))ia="pointer";else if(null!=P.visibleSourceState||
-null!=P.visibleTargetState)J=this.view.getEdgeStyle(P),ia="crosshair",J!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(P)&&(V=mxUtils.findNearestSegment(P,V.getGraphX(),V.getGraphY()),V<R.length-1&&0<=V&&(ia=0==Math.round(R[V].x-R[V+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(V.getEvent())){R=mxShape.prototype.svgStrokeTolerance/2;J=new mxRectangle(V.getGraphX(),V.getGraphY());J.grow(R);if(this.isTableCell(P.cell)&&(V=this.model.getParent(P.cell),R=this.model.getParent(V),!this.isCellSelected(R)))if(mxUtils.intersects(J,
-new mxRectangle(P.x,P.y-2,P.width,4))&&this.model.getChildAt(R,0)!=V||mxUtils.intersects(J,new mxRectangle(P.x,P.y+P.height-2,P.width,4)))ia="row-resize";else if(mxUtils.intersects(J,new mxRectangle(P.x-2,P.y,4,P.height))&&this.model.getChildAt(V,0)!=P.cell||mxUtils.intersects(J,new mxRectangle(P.x+P.width-2,P.y,4,P.height)))ia="col-resize";for(V=P;null==ia&&null!=V&&(this.isTableCell(V.cell)||this.isTableRow(V.cell)||this.isTable(V.cell));)this.isSwimlane(V.cell)&&(R=this.getActualStartSize(V.cell),
-la=this.view.scale,(0<R.x||0<R.width)&&mxUtils.intersects(J,new mxRectangle(V.x+(R.x-R.width-1)*la+(0==R.x?V.width*la:0),V.y,1,V.height))?ia="col-resize":(0<R.y||0<R.height)&&mxUtils.intersects(J,new mxRectangle(V.x,V.y+(R.y-R.height-1)*la+(0==R.y?V.height:0),V.width,1))&&(ia="row-resize")),V=this.view.getState(this.model.getParent(V.cell))}null!=ia&&P.setCursor(ia)}}}),mouseUp:mxUtils.bind(this,function(J,V){g=E=d=f=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=
+V.getGraphX())>R||Math.abs(E.y-V.getGraphY())>R){var ha=this.selectionCellsHandler.getHandler(P.cell);null==ha&&this.model.isEdge(P.cell)&&(ha=this.createHandler(P));if(null!=ha&&null!=ha.bends&&0<ha.bends.length){J=ha.getHandleForEvent(d);var la=this.view.getEdgeStyle(P);R=la==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(J=g);if(R&&0!=J&&J!=ha.bends.length-1&&J!=mxEvent.LABEL_HANDLE)!R||null==P.visibleSourceState&&null==P.visibleTargetState||(this.graphHandler.reset(),V.consume());else if(J==
+mxEvent.LABEL_HANDLE||0==J||null!=P.visibleSourceState||J==ha.bends.length-1||null!=P.visibleTargetState)R||J==mxEvent.LABEL_HANDLE||(R=P.absolutePoints,null!=R&&(null==la&&null==J||la==mxEdgeStyle.OrthConnector)&&(J=g,null==J&&(J=new mxRectangle(E.x,E.y),J.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(J,R[0].x,R[0].y)?J=0:mxUtils.contains(J,R[R.length-1].x,R[R.length-1].y)?J=ha.bends.length-1:null!=la&&(2==R.length||3==R.length&&(0==Math.round(R[0].x-R[1].x)&&0==Math.round(R[1].x-
+R[2].x)||0==Math.round(R[0].y-R[1].y)&&0==Math.round(R[1].y-R[2].y)))?J=2:(J=mxUtils.findNearestSegment(P,E.x,E.y),J=null==la?mxEvent.VIRTUAL_HANDLE-J:J+1))),null==J&&(J=mxEvent.VIRTUAL_HANDLE)),ha.start(V.getGraphX(),V.getGraphX(),J),V.consume(),this.graphHandler.reset()}null!=ha&&(this.selectionCellsHandler.isHandlerActive(ha)?this.isCellSelected(P.cell)||(this.selectionCellsHandler.handlers.put(P.cell,ha),this.selectCellForEvent(P.cell,V.getEvent())):this.isCellSelected(P.cell)||ha.destroy());
+m=!1;E=d=f=g=null}}else if(P=V.getState(),null!=P&&this.isCellEditable(P.cell)){ha=null;if(this.model.isEdge(P.cell)){if(J=new mxRectangle(V.getGraphX(),V.getGraphY()),J.grow(mxEdgeHandler.prototype.handleImage.width/2),R=P.absolutePoints,null!=R)if(null!=P.text&&null!=P.text.boundingBox&&mxUtils.contains(P.text.boundingBox,V.getGraphX(),V.getGraphY()))ha="move";else if(mxUtils.contains(J,R[0].x,R[0].y)||mxUtils.contains(J,R[R.length-1].x,R[R.length-1].y))ha="pointer";else if(null!=P.visibleSourceState||
+null!=P.visibleTargetState)J=this.view.getEdgeStyle(P),ha="crosshair",J!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(P)&&(V=mxUtils.findNearestSegment(P,V.getGraphX(),V.getGraphY()),V<R.length-1&&0<=V&&(ha=0==Math.round(R[V].x-R[V+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(V.getEvent())){R=mxShape.prototype.svgStrokeTolerance/2;J=new mxRectangle(V.getGraphX(),V.getGraphY());J.grow(R);if(this.isTableCell(P.cell)&&(V=this.model.getParent(P.cell),R=this.model.getParent(V),!this.isCellSelected(R)))if(mxUtils.intersects(J,
+new mxRectangle(P.x,P.y-2,P.width,4))&&this.model.getChildAt(R,0)!=V||mxUtils.intersects(J,new mxRectangle(P.x,P.y+P.height-2,P.width,4)))ha="row-resize";else if(mxUtils.intersects(J,new mxRectangle(P.x-2,P.y,4,P.height))&&this.model.getChildAt(V,0)!=P.cell||mxUtils.intersects(J,new mxRectangle(P.x+P.width-2,P.y,4,P.height)))ha="col-resize";for(V=P;null==ha&&null!=V&&(this.isTableCell(V.cell)||this.isTableRow(V.cell)||this.isTable(V.cell));)this.isSwimlane(V.cell)&&(R=this.getActualStartSize(V.cell),
+la=this.view.scale,(0<R.x||0<R.width)&&mxUtils.intersects(J,new mxRectangle(V.x+(R.x-R.width-1)*la+(0==R.x?V.width*la:0),V.y,1,V.height))?ha="col-resize":(0<R.y||0<R.height)&&mxUtils.intersects(J,new mxRectangle(V.x,V.y+(R.y-R.height-1)*la+(0==R.y?V.height:0),V.width,1))&&(ha="row-resize")),V=this.view.getState(this.model.getParent(V.cell))}null!=ha&&P.setCursor(ha)}}}),mouseUp:mxUtils.bind(this,function(J,V){g=E=d=f=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=
function(J){var V=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);J.view.graph.isHtmlLabel(J.cell)&&(V=1!=J.style.html?mxUtils.htmlEntities(V,!1):J.view.graph.sanitizeHtml(V));return V};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=
-!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(J,V){return!1};this.alternateEdgeStyle="vertical";null==n&&this.loadStylesheet();var q=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var J=q.apply(this,arguments);if(this.graph.pageVisible){var V=[],P=this.graph.pageFormat,R=this.graph.pageScale,ia=P.width*R;P=P.height*R;R=this.graph.view.translate;for(var la=this.graph.view.scale,
-ta=this.graph.getPageLayout(),u=0;u<ta.width;u++)V.push(new mxRectangle(((ta.x+u)*ia+R.x)*la,(ta.y*P+R.y)*la,ia*la,P*la));for(u=1;u<ta.height;u++)V.push(new mxRectangle((ta.x*ia+R.x)*la,((ta.y+u)*P+R.y)*la,ia*la,P*la));J=V.concat(J)}return J};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(J,V){return null==J.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(J){this.previewColor="#000000"==this.graph.background?
-"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var y=this.graphHandler.getCells;this.graphHandler.getCells=function(J){for(var V=y.apply(this,arguments),P=new mxDictionary,R=[],ia=0;ia<V.length;ia++){var la=this.graph.isTableCell(J)&&this.graph.isTableCell(V[ia])&&this.graph.isCellSelected(V[ia])?this.graph.model.getParent(V[ia]):this.graph.isTableRow(J)&&this.graph.isTableRow(V[ia])&&this.graph.isCellSelected(V[ia])?V[ia]:
-this.graph.getCompositeParent(V[ia]);null==la||P.get(la)||(P.put(la,!0),R.push(la))}return R};var F=this.graphHandler.start;this.graphHandler.start=function(J,V,P,R){var ia=!1;this.graph.isTableCell(J)&&(this.graph.isCellSelected(J)?ia=!0:J=this.graph.model.getParent(J));ia||this.graph.isTableRow(J)&&this.graph.isCellSelected(J)||(J=this.graph.getCompositeParent(J));F.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(J,V){V=this.graph.getCompositeParent(V);return mxConnectionHandler.prototype.createTargetVertex.apply(this,
+!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(J,V){return!1};this.alternateEdgeStyle="vertical";null==n&&this.loadStylesheet();var q=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var J=q.apply(this,arguments);if(this.graph.pageVisible){var V=[],P=this.graph.pageFormat,R=this.graph.pageScale,ha=P.width*R;P=P.height*R;R=this.graph.view.translate;for(var la=this.graph.view.scale,
+ta=this.graph.getPageLayout(),u=0;u<ta.width;u++)V.push(new mxRectangle(((ta.x+u)*ha+R.x)*la,(ta.y*P+R.y)*la,ha*la,P*la));for(u=1;u<ta.height;u++)V.push(new mxRectangle((ta.x*ha+R.x)*la,((ta.y+u)*P+R.y)*la,ha*la,P*la));J=V.concat(J)}return J};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(J,V){return null==J.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(J){this.previewColor="#000000"==this.graph.background?
+"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var y=this.graphHandler.getCells;this.graphHandler.getCells=function(J){for(var V=y.apply(this,arguments),P=new mxDictionary,R=[],ha=0;ha<V.length;ha++){var la=this.graph.isTableCell(J)&&this.graph.isTableCell(V[ha])&&this.graph.isCellSelected(V[ha])?this.graph.model.getParent(V[ha]):this.graph.isTableRow(J)&&this.graph.isTableRow(V[ha])&&this.graph.isCellSelected(V[ha])?V[ha]:
+this.graph.getCompositeParent(V[ha]);null==la||P.get(la)||(P.put(la,!0),R.push(la))}return R};var F=this.graphHandler.start;this.graphHandler.start=function(J,V,P,R){var ha=!1;this.graph.isTableCell(J)&&(this.graph.isCellSelected(J)?ha=!0:J=this.graph.model.getParent(J));ha||this.graph.isTableRow(J)&&this.graph.isCellSelected(J)||(J=this.graph.getCompositeParent(J));F.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(J,V){V=this.graph.getCompositeParent(V);return mxConnectionHandler.prototype.createTargetVertex.apply(this,
arguments)};var C=new mxRubberband(this);this.getRubberband=function(){return C};var H=(new Date).getTime(),G=0,aa=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var J=this.currentState;aa.apply(this,arguments);J!=this.currentState?(H=(new Date).getTime(),G=0):G=(new Date).getTime()-H};var da=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(J){return mxEvent.isShiftDown(J.getEvent())&&mxEvent.isAltDown(J.getEvent())?!1:
null!=this.currentState&&J.getState()==this.currentState&&2E3<G||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&da.apply(this,arguments)};var ba=this.isToggleEvent;this.isToggleEvent=function(J){return ba.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(J)};var Y=C.isForceRubberbandEvent;C.isForceRubberbandEvent=function(J){return Y.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(J.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&
mxClient.IS_FF&&mxClient.IS_WIN&&null==J.getState()&&mxEvent.isTouchEvent(J.getEvent())};var pa=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(pa=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=pa)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(J){return mxEvent.isMouseEvent(J.getEvent())};
@@ -2488,100 +2489,100 @@ return z};mxConnectionHandler.prototype.updatePreview=function(z){};var E=mxConn
function(){for(var z="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",L="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),M=0;M<L.length;M++)null!=this.currentEdgeStyle[L[M]]&&(z+=L[M]+"="+this.currentEdgeStyle[L[M]]+";");null!=this.currentEdgeStyle.orthogonalLoop?z+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
(z+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?z+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(z+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(z+="elbow="+this.currentEdgeStyle.elbow+";");return z=null!=this.currentEdgeStyle.html?z+("html="+this.currentEdgeStyle.html+";"):z+"html=1;"};
Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var z=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=z&&(new mxCodec(z.ownerDocument)).decode(z,this.getStylesheet())};Graph.prototype.createCellLookup=function(z,L){L=null!=L?L:{};for(var M=0;M<z.length;M++){var S=z[M];L[mxObjectIdentity.get(S)]=S.getId();for(var ca=this.model.getChildCount(S),
-ha=0;ha<ca;ha++)this.createCellLookup([this.model.getChildAt(S,ha)],L)}return L};Graph.prototype.createCellMapping=function(z,L,M){M=null!=M?M:{};for(var S in z){var ca=L[S];null==M[ca]&&(M[ca]=z[S].getId()||"")}return M};Graph.prototype.importGraphModel=function(z,L,M,S){L=null!=L?L:0;M=null!=M?M:0;var ca=new mxCodec(z.ownerDocument),ha=new mxGraphModel;ca.decode(z,ha);z=[];ca={};var oa={},ra=ha.getChildren(this.cloneCell(ha.root,this.isCloneInvalidEdges(),ca));if(null!=ra){var qa=this.createCellLookup([ha.root]);
-ra=ra.slice();this.model.beginUpdate();try{if(1!=ra.length||this.isCellLocked(this.getDefaultParent()))for(ha=0;ha<ra.length;ha++)xa=this.model.getChildren(this.moveCells([ra[ha]],L,M,!1,this.model.getRoot())[0]),null!=xa&&(z=z.concat(xa));else{var xa=ha.getChildren(ra[0]);null!=xa&&(z=this.moveCells(xa,L,M,!1,this.getDefaultParent()),oa[ha.getChildAt(ha.root,0).getId()]=this.getDefaultParent().getId())}if(null!=z&&(this.createCellMapping(ca,qa,oa),this.updateCustomLinks(oa,z),S)){this.isGridEnabled()&&
-(L=this.snap(L),M=this.snap(M));var Ga=this.getBoundingBoxFromGeometry(z,!0);null!=Ga&&this.moveCells(z,L-Ga.x,M-Ga.y)}}finally{this.model.endUpdate()}}return z};Graph.prototype.encodeCells=function(z){for(var L={},M=this.cloneCells(z,null,L),S=new mxDictionary,ca=0;ca<z.length;ca++)S.put(z[ca],!0);var ha=new mxCodec,oa=new mxGraphModel,ra=oa.getChildAt(oa.getRoot(),0);for(ca=0;ca<M.length;ca++){oa.add(ra,M[ca]);var qa=this.view.getState(z[ca]);if(null!=qa){var xa=this.getCellGeometry(M[ca]);null!=
-xa&&xa.relative&&!this.model.isEdge(z[ca])&&null==S.get(this.model.getParent(z[ca]))&&(xa.offset=null,xa.relative=!1,xa.x=qa.x/qa.view.scale-qa.view.translate.x,xa.y=qa.y/qa.view.scale-qa.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(L,this.createCellLookup(z)),M);return ha.encode(oa)};Graph.prototype.isSwimlane=function(z,L){var M=null;null==z||this.model.isEdge(z)||this.model.getParent(z)==this.model.getRoot()||(M=this.getCurrentCellStyle(z,L)[mxConstants.STYLE_SHAPE]);return M==
-mxConstants.SHAPE_SWIMLANE||"table"==M||"tableRow"==M};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(z){var L=this.model.getParent(z);if(null!=L){var M=this.getCurrentCellStyle(L);if(null!=M.expand)return"0"!=M.expand}return d.apply(this,arguments)&&(null==L||!this.isTable(L))};var f=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(z,L,M,S,ca,ha,oa,ra){null==ra&&(ra=this.model.getParent(z),this.isTable(ra)||this.isTableRow(ra))&&(ra=this.getCellAt(ha,oa,
-null,!0,!1));M=null;this.model.beginUpdate();try{M=f.apply(this,[z,L,M,S,ca,ha,oa,ra]);this.model.setValue(M,"");var qa=this.getChildCells(M,!0);for(L=0;L<qa.length;L++){var xa=this.getCellGeometry(qa[L]);null!=xa&&xa.relative&&0<xa.x&&this.model.remove(qa[L])}var Ga=this.getChildCells(z,!0);for(L=0;L<Ga.length;L++)xa=this.getCellGeometry(Ga[L]),null!=xa&&xa.relative&&0>=xa.x&&this.model.remove(Ga[L]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[M]);this.setCellStyles(mxConstants.STYLE_ENDARROW,
+ia=0;ia<ca;ia++)this.createCellLookup([this.model.getChildAt(S,ia)],L)}return L};Graph.prototype.createCellMapping=function(z,L,M){M=null!=M?M:{};for(var S in z){var ca=L[S];null==M[ca]&&(M[ca]=z[S].getId()||"")}return M};Graph.prototype.importGraphModel=function(z,L,M,S){L=null!=L?L:0;M=null!=M?M:0;var ca=new mxCodec(z.ownerDocument),ia=new mxGraphModel;ca.decode(z,ia);z=[];ca={};var oa={},ra=ia.getChildren(this.cloneCell(ia.root,this.isCloneInvalidEdges(),ca));if(null!=ra){var qa=this.createCellLookup([ia.root]);
+ra=ra.slice();this.model.beginUpdate();try{if(1!=ra.length||this.isCellLocked(this.getDefaultParent()))for(ia=0;ia<ra.length;ia++)xa=this.model.getChildren(this.moveCells([ra[ia]],L,M,!1,this.model.getRoot())[0]),null!=xa&&(z=z.concat(xa));else{var xa=ia.getChildren(ra[0]);null!=xa&&(z=this.moveCells(xa,L,M,!1,this.getDefaultParent()),oa[ia.getChildAt(ia.root,0).getId()]=this.getDefaultParent().getId())}if(null!=z&&(this.createCellMapping(ca,qa,oa),this.updateCustomLinks(oa,z),S)){this.isGridEnabled()&&
+(L=this.snap(L),M=this.snap(M));var Ga=this.getBoundingBoxFromGeometry(z,!0);null!=Ga&&this.moveCells(z,L-Ga.x,M-Ga.y)}}finally{this.model.endUpdate()}}return z};Graph.prototype.encodeCells=function(z){for(var L={},M=this.cloneCells(z,null,L),S=new mxDictionary,ca=0;ca<z.length;ca++)S.put(z[ca],!0);var ia=new mxCodec,oa=new mxGraphModel,ra=oa.getChildAt(oa.getRoot(),0);for(ca=0;ca<M.length;ca++){oa.add(ra,M[ca]);var qa=this.view.getState(z[ca]);if(null!=qa){var xa=this.getCellGeometry(M[ca]);null!=
+xa&&xa.relative&&!this.model.isEdge(z[ca])&&null==S.get(this.model.getParent(z[ca]))&&(xa.offset=null,xa.relative=!1,xa.x=qa.x/qa.view.scale-qa.view.translate.x,xa.y=qa.y/qa.view.scale-qa.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(L,this.createCellLookup(z)),M);return ia.encode(oa)};Graph.prototype.isSwimlane=function(z,L){var M=null;null==z||this.model.isEdge(z)||this.model.getParent(z)==this.model.getRoot()||(M=this.getCurrentCellStyle(z,L)[mxConstants.STYLE_SHAPE]);return M==
+mxConstants.SHAPE_SWIMLANE||"table"==M||"tableRow"==M};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(z){var L=this.model.getParent(z);if(null!=L){var M=this.getCurrentCellStyle(L);if(null!=M.expand)return"0"!=M.expand}return d.apply(this,arguments)&&(null==L||!this.isTable(L))};var f=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(z,L,M,S,ca,ia,oa,ra){null==ra&&(ra=this.model.getParent(z),this.isTable(ra)||this.isTableRow(ra))&&(ra=this.getCellAt(ia,oa,
+null,!0,!1));M=null;this.model.beginUpdate();try{M=f.apply(this,[z,L,M,S,ca,ia,oa,ra]);this.model.setValue(M,"");var qa=this.getChildCells(M,!0);for(L=0;L<qa.length;L++){var xa=this.getCellGeometry(qa[L]);null!=xa&&xa.relative&&0<xa.x&&this.model.remove(qa[L])}var Ga=this.getChildCells(z,!0);for(L=0;L<Ga.length;L++)xa=this.getCellGeometry(Ga[L]),null!=xa&&xa.relative&&0>=xa.x&&this.model.remove(Ga[L]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[M]);this.setCellStyles(mxConstants.STYLE_ENDARROW,
mxConstants.NONE,[M]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,null,[z]);this.setCellStyles(mxConstants.STYLE_STARTARROW,mxConstants.NONE,[z]);var La=this.model.getTerminal(M,!1);if(null!=La){var Pa=this.getCurrentCellStyle(La);null!=Pa&&"1"==Pa.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[z]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[z]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[M]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[M]))}}finally{this.model.endUpdate()}return M};
-var g=Graph.prototype.selectCell;Graph.prototype.selectCell=function(z,L,M){if(L||M)g.apply(this,arguments);else{var S=this.getSelectionCell(),ca=null,ha=[],oa=mxUtils.bind(this,function(ra){if(null!=this.view.getState(ra)&&(this.model.isVertex(ra)||this.model.isEdge(ra)))if(ha.push(ra),ra==S)ca=ha.length-1;else if(z&&null==S&&0<ha.length||null!=ca&&z&&ha.length>ca||!z&&0<ca)return;for(var qa=0;qa<this.model.getChildCount(ra);qa++)oa(this.model.getChildAt(ra,qa))});oa(this.model.root);0<ha.length&&
-(ca=null!=ca?mxUtils.mod(ca+(z?1:-1),ha.length):0,this.setSelectionCell(ha[ca]))}};Graph.prototype.swapShapes=function(z,L,M,S,ca,ha,oa){L=!1;if(!S&&null!=ca&&1==z.length&&(S=this.view.getState(ca),M=this.view.getState(z[0]),null!=S&&null!=M&&(null!=ha&&mxEvent.isShiftDown(ha)||"umlLifeline"==S.style.shape&&"umlLifeline"==M.style.shape)&&(S=this.getCellGeometry(ca),ha=this.getCellGeometry(z[0]),null!=S&&null!=ha))){L=S.clone();S=ha.clone();S.x=L.x;S.y=L.y;L.x=ha.x;L.y=ha.y;this.model.beginUpdate();
-try{this.model.setGeometry(ca,L),this.model.setGeometry(z[0],S)}finally{this.model.endUpdate()}L=!0}return L};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,L,M,S,ca,ha,oa){if(this.swapShapes(z,L,M,S,ca,ha,oa))return z;oa=null!=oa?oa:{};if(this.isTable(ca)){for(var ra=[],qa=0;qa<z.length;qa++)this.isTable(z[qa])?ra=ra.concat(this.model.getChildCells(z[qa],!0).reverse()):ra.push(z[qa]);z=ra}this.model.beginUpdate();try{ra=[];for(qa=0;qa<z.length;qa++)if(null!=ca&&this.isTableRow(z[qa])){var xa=
+var g=Graph.prototype.selectCell;Graph.prototype.selectCell=function(z,L,M){if(L||M)g.apply(this,arguments);else{var S=this.getSelectionCell(),ca=null,ia=[],oa=mxUtils.bind(this,function(ra){if(null!=this.view.getState(ra)&&(this.model.isVertex(ra)||this.model.isEdge(ra)))if(ia.push(ra),ra==S)ca=ia.length-1;else if(z&&null==S&&0<ia.length||null!=ca&&z&&ia.length>ca||!z&&0<ca)return;for(var qa=0;qa<this.model.getChildCount(ra);qa++)oa(this.model.getChildAt(ra,qa))});oa(this.model.root);0<ia.length&&
+(ca=null!=ca?mxUtils.mod(ca+(z?1:-1),ia.length):0,this.setSelectionCell(ia[ca]))}};Graph.prototype.swapShapes=function(z,L,M,S,ca,ia,oa){L=!1;if(!S&&null!=ca&&1==z.length&&(S=this.view.getState(ca),M=this.view.getState(z[0]),null!=S&&null!=M&&(null!=ia&&mxEvent.isShiftDown(ia)||"umlLifeline"==S.style.shape&&"umlLifeline"==M.style.shape)&&(S=this.getCellGeometry(ca),ia=this.getCellGeometry(z[0]),null!=S&&null!=ia))){L=S.clone();S=ia.clone();S.x=L.x;S.y=L.y;L.x=ia.x;L.y=ia.y;this.model.beginUpdate();
+try{this.model.setGeometry(ca,L),this.model.setGeometry(z[0],S)}finally{this.model.endUpdate()}L=!0}return L};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,L,M,S,ca,ia,oa){if(this.swapShapes(z,L,M,S,ca,ia,oa))return z;oa=null!=oa?oa:{};if(this.isTable(ca)){for(var ra=[],qa=0;qa<z.length;qa++)this.isTable(z[qa])?ra=ra.concat(this.model.getChildCells(z[qa],!0).reverse()):ra.push(z[qa]);z=ra}this.model.beginUpdate();try{ra=[];for(qa=0;qa<z.length;qa++)if(null!=ca&&this.isTableRow(z[qa])){var xa=
this.model.getParent(z[qa]),Ga=this.getCellGeometry(z[qa]);this.isTable(xa)&&ra.push(xa);if(null!=xa&&null!=Ga&&this.isTable(xa)&&this.isTable(ca)&&(S||xa!=ca)){if(!S){var La=this.getCellGeometry(xa);null!=La&&(La=La.clone(),La.height-=Ga.height,this.model.setGeometry(xa,La))}La=this.getCellGeometry(ca);null!=La&&(La=La.clone(),La.height+=Ga.height,this.model.setGeometry(ca,La));var Pa=this.model.getChildCells(ca,!0);if(0<Pa.length){z[qa]=S?this.cloneCell(z[qa]):z[qa];var Oa=this.model.getChildCells(z[qa],
!0),Ta=this.model.getChildCells(Pa[0],!0),Ma=Ta.length-Oa.length;if(0<Ma)for(var ua=0;ua<Ma;ua++){var ya=this.cloneCell(Oa[Oa.length-1]);null!=ya&&(ya.value="",this.model.add(z[qa],ya))}else if(0>Ma)for(ua=0;ua>Ma;ua--)this.model.remove(Oa[Oa.length+ua-1]);Oa=this.model.getChildCells(z[qa],!0);for(ua=0;ua<Ta.length;ua++){var Na=this.getCellGeometry(Ta[ua]),Fa=this.getCellGeometry(Oa[ua]);null!=Na&&null!=Fa&&(Fa=Fa.clone(),Fa.width=Na.width,this.model.setGeometry(Oa[ua],Fa))}}}}var Ra=m.apply(this,
-arguments);for(qa=0;qa<ra.length;qa++)!S&&this.model.contains(ra[qa])&&0==this.model.getChildCount(ra[qa])&&this.model.remove(ra[qa]);S&&this.updateCustomLinks(this.createCellMapping(oa,this.createCellLookup(z)),Ra)}finally{this.model.endUpdate()}return Ra};var q=Graph.prototype.removeCells;Graph.prototype.removeCells=function(z,L){var M=[];this.model.beginUpdate();try{for(var S=0;S<z.length;S++)if(this.isTableCell(z[S])){var ca=this.model.getParent(z[S]),ha=this.model.getParent(ca);1==this.model.getChildCount(ca)&&
-1==this.model.getChildCount(ha)?0>mxUtils.indexOf(z,ha)&&0>mxUtils.indexOf(M,ha)&&M.push(ha):this.labelChanged(z[S],"")}else{if(this.isTableRow(z[S])&&(ha=this.model.getParent(z[S]),0>mxUtils.indexOf(z,ha)&&0>mxUtils.indexOf(M,ha))){for(var oa=this.model.getChildCells(ha,!0),ra=0,qa=0;qa<oa.length;qa++)0<=mxUtils.indexOf(z,oa[qa])&&ra++;ra==oa.length&&M.push(ha)}M.push(z[S])}M=q.apply(this,[M,L])}finally{this.model.endUpdate()}return M};Graph.prototype.updateCustomLinks=function(z,L,M){M=null!=M?
+arguments);for(qa=0;qa<ra.length;qa++)!S&&this.model.contains(ra[qa])&&0==this.model.getChildCount(ra[qa])&&this.model.remove(ra[qa]);S&&this.updateCustomLinks(this.createCellMapping(oa,this.createCellLookup(z)),Ra)}finally{this.model.endUpdate()}return Ra};var q=Graph.prototype.removeCells;Graph.prototype.removeCells=function(z,L){var M=[];this.model.beginUpdate();try{for(var S=0;S<z.length;S++)if(this.isTableCell(z[S])){var ca=this.model.getParent(z[S]),ia=this.model.getParent(ca);1==this.model.getChildCount(ca)&&
+1==this.model.getChildCount(ia)?0>mxUtils.indexOf(z,ia)&&0>mxUtils.indexOf(M,ia)&&M.push(ia):this.labelChanged(z[S],"")}else{if(this.isTableRow(z[S])&&(ia=this.model.getParent(z[S]),0>mxUtils.indexOf(z,ia)&&0>mxUtils.indexOf(M,ia))){for(var oa=this.model.getChildCells(ia,!0),ra=0,qa=0;qa<oa.length;qa++)0<=mxUtils.indexOf(z,oa[qa])&&ra++;ra==oa.length&&M.push(ia)}M.push(z[S])}M=q.apply(this,[M,L])}finally{this.model.endUpdate()}return M};Graph.prototype.updateCustomLinks=function(z,L,M){M=null!=M?
M:new Graph;for(var S=0;S<L.length;S++)null!=L[S]&&M.updateCustomLinksForCell(z,L[S],M)};Graph.prototype.updateCustomLinksForCell=function(z,L){this.doUpdateCustomLinksForCell(z,L);for(var M=this.model.getChildCount(L),S=0;S<M;S++)this.updateCustomLinksForCell(z,this.model.getChildAt(L,S))};Graph.prototype.doUpdateCustomLinksForCell=function(z,L){};Graph.prototype.getAllConnectionConstraints=function(z,L){if(null!=z){L=mxUtils.getValue(z.style,"points",null);if(null!=L){z=[];try{var M=JSON.parse(L);
-for(L=0;L<M.length;L++){var S=M[L];z.push(new mxConnectionConstraint(new mxPoint(S[0],S[1]),2<S.length?"0"!=S[2]:!0,null,3<S.length?S[3]:0,4<S.length?S[4]:0))}}catch(ha){}return z}if(null!=z.shape&&null!=z.shape.bounds){S=z.shape.direction;L=z.shape.bounds;var ca=z.shape.scale;M=L.width/ca;L=L.height/ca;if(S==mxConstants.DIRECTION_NORTH||S==mxConstants.DIRECTION_SOUTH)S=M,M=L,L=S;L=z.shape.getConstraints(z.style,M,L);if(null!=L)return L;if(null!=z.shape.stencil&&null!=z.shape.stencil.constraints)return z.shape.stencil.constraints;
+for(L=0;L<M.length;L++){var S=M[L];z.push(new mxConnectionConstraint(new mxPoint(S[0],S[1]),2<S.length?"0"!=S[2]:!0,null,3<S.length?S[3]:0,4<S.length?S[4]:0))}}catch(ia){}return z}if(null!=z.shape&&null!=z.shape.bounds){S=z.shape.direction;L=z.shape.bounds;var ca=z.shape.scale;M=L.width/ca;L=L.height/ca;if(S==mxConstants.DIRECTION_NORTH||S==mxConstants.DIRECTION_SOUTH)S=M,M=L,L=S;L=z.shape.getConstraints(z.style,M,L);if(null!=L)return L;if(null!=z.shape.stencil&&null!=z.shape.stencil.constraints)return z.shape.stencil.constraints;
if(null!=z.shape.constraints)return z.shape.constraints}}return null};Graph.prototype.flipEdge=function(z){if(null!=z){var L=this.getCurrentCellStyle(z);L=mxUtils.getValue(L,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,L,[z])}};Graph.prototype.isValidRoot=function(z){for(var L=this.model.getChildCount(z),M=0,S=0;S<L;S++){var ca=this.model.getChildAt(z,S);this.model.isVertex(ca)&&
-(ca=this.getCellGeometry(ca),null==ca||ca.relative||M++)}return 0<M||this.isContainer(z)};Graph.prototype.isValidDropTarget=function(z,L,M){for(var S=this.getCurrentCellStyle(z),ca=!0,ha=!0,oa=0;oa<L.length&&ha;oa++)ca=ca&&this.isTable(L[oa]),ha=ha&&this.isTableRow(L[oa]);return(1==L.length&&null!=M&&mxEvent.isShiftDown(M)&&!mxEvent.isControlDown(M)&&!mxEvent.isAltDown(M)||("1"!=mxUtils.getValue(S,"part","0")||this.isContainer(z))&&"0"!=mxUtils.getValue(S,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,
-arguments)||this.isContainer(z))&&!this.isTableRow(z)&&(!this.isTable(z)||ha||ca))&&!this.isCellLocked(z)};Graph.prototype.createGroupCell=function(){var z=mxGraph.prototype.createGroupCell.apply(this,arguments);z.setStyle("group");return z};Graph.prototype.isExtendParentsOnAdd=function(z){var L=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(L&&null!=z&&null!=this.layoutManager){var M=this.model.getParent(z);null!=M&&(M=this.layoutManager.getLayout(M),null!=M&&M.constructor==mxStackLayout&&
-(L=!1))}return L};Graph.prototype.getPreferredSizeForCell=function(z){var L=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=L&&(L.width+=10,L.height+=4,this.gridEnabled&&(L.width=this.snap(L.width),L.height=this.snap(L.height)));return L};Graph.prototype.turnShapes=function(z,L){var M=this.getModel(),S=[];M.beginUpdate();try{for(var ca=0;ca<z.length;ca++){var ha=z[ca];if(M.isEdge(ha)){var oa=M.getTerminal(ha,!0),ra=M.getTerminal(ha,!1);M.setTerminal(ha,ra,!0);M.setTerminal(ha,
-oa,!1);var qa=M.getGeometry(ha);if(null!=qa){qa=qa.clone();null!=qa.points&&qa.points.reverse();var xa=qa.getTerminalPoint(!0),Ga=qa.getTerminalPoint(!1);qa.setTerminalPoint(xa,!1);qa.setTerminalPoint(Ga,!0);M.setGeometry(ha,qa);var La=this.view.getState(ha),Pa=this.view.getState(oa),Oa=this.view.getState(ra);if(null!=La){var Ta=null!=Pa?this.getConnectionConstraint(La,Pa,!0):null,Ma=null!=Oa?this.getConnectionConstraint(La,Oa,!1):null;this.setConnectionConstraint(ha,oa,!0,Ma);this.setConnectionConstraint(ha,
-ra,!1,Ta);var ua=mxUtils.getValue(La.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(La.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[ha]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,ua,[ha])}S.push(ha)}}else if(M.isVertex(ha)&&(qa=this.getCellGeometry(ha),null!=qa)){if(!(this.isTable(ha)||this.isTableRow(ha)||this.isTableCell(ha)||this.isSwimlane(ha))){qa=qa.clone();qa.x+=qa.width/2-qa.height/
-2;qa.y+=qa.height/2-qa.width/2;var ya=qa.width;qa.width=qa.height;qa.height=ya;M.setGeometry(ha,qa)}var Na=this.view.getState(ha);if(null!=Na){var Fa=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Ra=mxUtils.getValue(Na.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Fa[mxUtils.mod(mxUtils.indexOf(Fa,Ra)+(L?-1:1),Fa.length)],[ha])}S.push(ha)}}}finally{M.endUpdate()}return S};
+(ca=this.getCellGeometry(ca),null==ca||ca.relative||M++)}return 0<M||this.isContainer(z)};Graph.prototype.isValidDropTarget=function(z,L,M){for(var S=this.getCurrentCellStyle(z),ca=!0,ia=!0,oa=0;oa<L.length&&ia;oa++)ca=ca&&this.isTable(L[oa]),ia=ia&&this.isTableRow(L[oa]);return(1==L.length&&null!=M&&mxEvent.isShiftDown(M)&&!mxEvent.isControlDown(M)&&!mxEvent.isAltDown(M)||("1"!=mxUtils.getValue(S,"part","0")||this.isContainer(z))&&"0"!=mxUtils.getValue(S,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,
+arguments)||this.isContainer(z))&&!this.isTableRow(z)&&(!this.isTable(z)||ia||ca))&&!this.isCellLocked(z)};Graph.prototype.createGroupCell=function(){var z=mxGraph.prototype.createGroupCell.apply(this,arguments);z.setStyle("group");return z};Graph.prototype.isExtendParentsOnAdd=function(z){var L=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(L&&null!=z&&null!=this.layoutManager){var M=this.model.getParent(z);null!=M&&(M=this.layoutManager.getLayout(M),null!=M&&M.constructor==mxStackLayout&&
+(L=!1))}return L};Graph.prototype.getPreferredSizeForCell=function(z){var L=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=L&&(L.width+=10,L.height+=4,this.gridEnabled&&(L.width=this.snap(L.width),L.height=this.snap(L.height)));return L};Graph.prototype.turnShapes=function(z,L){var M=this.getModel(),S=[];M.beginUpdate();try{for(var ca=0;ca<z.length;ca++){var ia=z[ca];if(M.isEdge(ia)){var oa=M.getTerminal(ia,!0),ra=M.getTerminal(ia,!1);M.setTerminal(ia,ra,!0);M.setTerminal(ia,
+oa,!1);var qa=M.getGeometry(ia);if(null!=qa){qa=qa.clone();null!=qa.points&&qa.points.reverse();var xa=qa.getTerminalPoint(!0),Ga=qa.getTerminalPoint(!1);qa.setTerminalPoint(xa,!1);qa.setTerminalPoint(Ga,!0);M.setGeometry(ia,qa);var La=this.view.getState(ia),Pa=this.view.getState(oa),Oa=this.view.getState(ra);if(null!=La){var Ta=null!=Pa?this.getConnectionConstraint(La,Pa,!0):null,Ma=null!=Oa?this.getConnectionConstraint(La,Oa,!1):null;this.setConnectionConstraint(ia,oa,!0,Ma);this.setConnectionConstraint(ia,
+ra,!1,Ta);var ua=mxUtils.getValue(La.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(La.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[ia]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,ua,[ia])}S.push(ia)}}else if(M.isVertex(ia)&&(qa=this.getCellGeometry(ia),null!=qa)){if(!(this.isTable(ia)||this.isTableRow(ia)||this.isTableCell(ia)||this.isSwimlane(ia))){qa=qa.clone();qa.x+=qa.width/2-qa.height/
+2;qa.y+=qa.height/2-qa.width/2;var ya=qa.width;qa.width=qa.height;qa.height=ya;M.setGeometry(ia,qa)}var Na=this.view.getState(ia);if(null!=Na){var Fa=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Ra=mxUtils.getValue(Na.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Fa[mxUtils.mod(mxUtils.indexOf(Fa,Ra)+(L?-1:1),Fa.length)],[ia])}S.push(ia)}}}finally{M.endUpdate()}return S};
Graph.prototype.stencilHasPlaceholders=function(z){if(null!=z&&null!=z.fgNode)for(z=z.fgNode.firstChild;null!=z;){if("text"==z.nodeName&&"1"==z.getAttribute("placeholders"))return!0;z=z.nextSibling}return!1};var y=Graph.prototype.processChange;Graph.prototype.processChange=function(z){if(z instanceof mxGeometryChange&&(this.isTableCell(z.cell)||this.isTableRow(z.cell))&&(null==z.previous&&null!=z.geometry||null!=z.previous&&!z.previous.equals(z.geometry))){var L=z.cell;this.isTableCell(L)&&(L=this.model.getParent(L));
this.isTableRow(L)&&(L=this.model.getParent(L));var M=this.view.getState(L);null!=M&&null!=M.shape&&(this.view.invalidate(L),M.shape.bounds=null)}y.apply(this,arguments);z instanceof mxValueChange&&null!=z.cell&&null!=z.cell.value&&"object"==typeof z.cell.value&&this.invalidateDescendantsWithPlaceholders(z.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(z){z=this.model.getDescendants(z);if(0<z.length)for(var L=0;L<z.length;L++){var M=this.view.getState(z[L]);null!=M&&null!=M.shape&&
null!=M.shape.stencil&&this.stencilHasPlaceholders(M.shape.stencil)?this.removeStateForCell(z[L]):this.isReplacePlaceholders(z[L])&&this.view.invalidate(z[L],!1,!1)}};Graph.prototype.replaceElement=function(z,L){L=z.ownerDocument.createElement(null!=L?L:"span");for(var M=Array.prototype.slice.call(z.attributes);attr=M.pop();)L.setAttribute(attr.nodeName,attr.nodeValue);L.innerHTML=z.innerHTML;z.parentNode.replaceChild(L,z)};Graph.prototype.processElements=function(z,L){if(null!=z){z=z.getElementsByTagName("*");
-for(var M=0;M<z.length;M++)L(z[M])}};Graph.prototype.updateLabelElements=function(z,L,M){z=null!=z?z:this.getSelectionCells();for(var S=document.createElement("div"),ca=0;ca<z.length;ca++)if(this.isHtmlLabel(z[ca])){var ha=this.convertValueToString(z[ca]);if(null!=ha&&0<ha.length){S.innerHTML=ha;for(var oa=S.getElementsByTagName(null!=M?M:"*"),ra=0;ra<oa.length;ra++)L(oa[ra]);S.innerHTML!=ha&&this.cellLabelChanged(z[ca],S.innerHTML)}}};Graph.prototype.cellLabelChanged=function(z,L,M){L=Graph.zapGremlins(L);
-this.model.beginUpdate();try{if(null!=z.value&&"object"==typeof z.value){if(this.isReplacePlaceholders(z)&&null!=z.getAttribute("placeholder"))for(var S=z.getAttribute("placeholder"),ca=z;null!=ca;){if(ca==this.model.getRoot()||null!=ca.value&&"object"==typeof ca.value&&ca.hasAttribute(S)){this.setAttributeForCell(ca,S,L);break}ca=this.model.getParent(ca)}var ha=z.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&ha.hasAttribute("label_"+Graph.diagramLanguage)?ha.setAttribute("label_"+
-Graph.diagramLanguage,L):ha.setAttribute("label",L);L=ha}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(z){if(null!=z){for(var L=new mxDictionary,M=0;M<z.length;M++)L.put(z[M],!0);var S=[];for(M=0;M<z.length;M++){var ca=this.model.getParent(z[M]);null==ca||L.get(ca)||(L.put(ca,!0),S.push(ca))}for(M=0;M<S.length;M++)if(ca=this.view.getState(S[M]),null!=ca&&(this.model.isEdge(ca.cell)||this.model.isVertex(ca.cell))&&this.isCellDeletable(ca.cell)&&
-this.isTransparentState(ca)){for(var ha=!0,oa=0;oa<this.model.getChildCount(ca.cell)&&ha;oa++)L.get(this.model.getChildAt(ca.cell,oa))||(ha=!1);ha&&z.push(ca.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(z){for(var L=[],M=0;M<z.length;M++)this.isCellDeletable(z[M])&&this.isTransparentState(this.view.getState(z[M]))&&L.push(z[M]);z=L;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(z,
+for(var M=0;M<z.length;M++)L(z[M])}};Graph.prototype.updateLabelElements=function(z,L,M){z=null!=z?z:this.getSelectionCells();for(var S=document.createElement("div"),ca=0;ca<z.length;ca++)if(this.isHtmlLabel(z[ca])){var ia=this.convertValueToString(z[ca]);if(null!=ia&&0<ia.length){S.innerHTML=ia;for(var oa=S.getElementsByTagName(null!=M?M:"*"),ra=0;ra<oa.length;ra++)L(oa[ra]);S.innerHTML!=ia&&this.cellLabelChanged(z[ca],S.innerHTML)}}};Graph.prototype.cellLabelChanged=function(z,L,M){L=Graph.zapGremlins(L);
+this.model.beginUpdate();try{if(null!=z.value&&"object"==typeof z.value){if(this.isReplacePlaceholders(z)&&null!=z.getAttribute("placeholder"))for(var S=z.getAttribute("placeholder"),ca=z;null!=ca;){if(ca==this.model.getRoot()||null!=ca.value&&"object"==typeof ca.value&&ca.hasAttribute(S)){this.setAttributeForCell(ca,S,L);break}ca=this.model.getParent(ca)}var ia=z.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&ia.hasAttribute("label_"+Graph.diagramLanguage)?ia.setAttribute("label_"+
+Graph.diagramLanguage,L):ia.setAttribute("label",L);L=ia}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(z){if(null!=z){for(var L=new mxDictionary,M=0;M<z.length;M++)L.put(z[M],!0);var S=[];for(M=0;M<z.length;M++){var ca=this.model.getParent(z[M]);null==ca||L.get(ca)||(L.put(ca,!0),S.push(ca))}for(M=0;M<S.length;M++)if(ca=this.view.getState(S[M]),null!=ca&&(this.model.isEdge(ca.cell)||this.model.isVertex(ca.cell))&&this.isCellDeletable(ca.cell)&&
+this.isTransparentState(ca)){for(var ia=!0,oa=0;oa<this.model.getChildCount(ca.cell)&&ia;oa++)L.get(this.model.getChildAt(ca.cell,oa))||(ia=!1);ia&&z.push(ca.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(z){for(var L=[],M=0;M<z.length;M++)this.isCellDeletable(z[M])&&this.isTransparentState(this.view.getState(z[M]))&&L.push(z[M]);z=L;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(z,
L){this.setAttributeForCell(z,"link",L)};Graph.prototype.setTooltipForCell=function(z,L){var M="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(z.value)&&z.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(M="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(z,M,L)};Graph.prototype.getAttributeForCell=function(z,L,M){z=null!=z.value&&"object"===typeof z.value?z.value.getAttribute(L):null;return null!=z?z:M};Graph.prototype.setAttributeForCell=function(z,L,
-M){if(null!=z.value&&"object"==typeof z.value)var S=z.value.cloneNode(!0);else S=mxUtils.createXmlDocument().createElement("UserObject"),S.setAttribute("label",z.value||"");null!=M?S.setAttribute(L,M):S.removeAttribute(L);this.model.setValue(z,S)};var F=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(z,L,M,S){this.getModel();if(mxEvent.isAltDown(L))return null;for(var ca=0;ca<z.length;ca++){var ha=this.model.getParent(z[ca]);if(this.model.isEdge(ha)&&0>mxUtils.indexOf(z,ha))return null}ha=
-F.apply(this,arguments);var oa=!0;for(ca=0;ca<z.length&&oa;ca++)oa=oa&&this.isTableRow(z[ca]);oa&&(this.isTableCell(ha)&&(ha=this.model.getParent(ha)),this.isTableRow(ha)&&(ha=this.model.getParent(ha)),this.isTable(ha)||(ha=null));return ha};Graph.prototype.click=function(z){mxGraph.prototype.click.call(this,z);this.firstClickState=z.getState();this.firstClickSource=z.getSource()};Graph.prototype.dblClick=function(z,L){this.isEnabled()&&(L=this.insertTextForEvent(z,L),mxGraph.prototype.dblClick.call(this,
+M){if(null!=z.value&&"object"==typeof z.value)var S=z.value.cloneNode(!0);else S=mxUtils.createXmlDocument().createElement("UserObject"),S.setAttribute("label",z.value||"");null!=M?S.setAttribute(L,M):S.removeAttribute(L);this.model.setValue(z,S)};var F=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(z,L,M,S){this.getModel();if(mxEvent.isAltDown(L))return null;for(var ca=0;ca<z.length;ca++){var ia=this.model.getParent(z[ca]);if(this.model.isEdge(ia)&&0>mxUtils.indexOf(z,ia))return null}ia=
+F.apply(this,arguments);var oa=!0;for(ca=0;ca<z.length&&oa;ca++)oa=oa&&this.isTableRow(z[ca]);oa&&(this.isTableCell(ia)&&(ia=this.model.getParent(ia)),this.isTableRow(ia)&&(ia=this.model.getParent(ia)),this.isTable(ia)||(ia=null));return ia};Graph.prototype.click=function(z){mxGraph.prototype.click.call(this,z);this.firstClickState=z.getState();this.firstClickSource=z.getSource()};Graph.prototype.dblClick=function(z,L){this.isEnabled()&&(L=this.insertTextForEvent(z,L),mxGraph.prototype.dblClick.call(this,
z,L))};Graph.prototype.insertTextForEvent=function(z,L){var M=mxUtils.convertPoint(this.container,mxEvent.getClientX(z),mxEvent.getClientY(z));if(null!=z&&!this.model.isVertex(L)){var S=this.model.isEdge(L)?this.view.getState(L):null,ca=mxEvent.getSource(z);this.firstClickState!=S||this.firstClickSource!=ca||null!=S&&null!=S.text&&null!=S.text.node&&null!=S.text.boundingBox&&(mxUtils.contains(S.text.boundingBox,M.x,M.y)||mxUtils.isAncestorNode(S.text.node,mxEvent.getSource(z)))||(null!=S||this.isCellLocked(this.getDefaultParent()))&&
(null==S||this.isCellLocked(S.cell))||!(null!=S||mxClient.IS_SVG&&ca==this.view.getCanvas().ownerSVGElement)||(null==S&&(S=this.view.getState(this.getCellAt(M.x,M.y))),L=this.addText(M.x,M.y,S))}return L};Graph.prototype.getInsertPoint=function(){var z=this.getGridSize(),L=this.container.scrollLeft/this.view.scale-this.view.translate.x,M=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible){var S=this.getPageLayout(),ca=this.getPageSize();L=Math.max(L,S.x*ca.width);M=
Math.max(M,S.y*ca.height)}return new mxPoint(this.snap(L+z),this.snap(M+z))};Graph.prototype.getFreeInsertPoint=function(){var z=this.view,L=this.getGraphBounds(),M=this.getInsertPoint(),S=this.snap(Math.round(Math.max(M.x,L.x/z.scale-z.translate.x+(0==L.width?2*this.gridSize:0))));z=this.snap(Math.round(Math.max(M.y,(L.y+L.height)/z.scale-z.translate.y+2*this.gridSize)));return new mxPoint(S,z)};Graph.prototype.getCenterInsertPoint=function(z){z=null!=z?z:new mxRectangle;return mxUtils.hasScrollbars(this.container)?
new mxPoint(this.snap(Math.round((this.container.scrollLeft+this.container.clientWidth/2)/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/2)/this.view.scale-this.view.translate.y-z.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-z.height/2)))};Graph.prototype.isMouseInsertPoint=
-function(){return!1};Graph.prototype.addText=function(z,L,M){var S=new mxCell;S.value="Text";S.geometry=new mxGeometry(0,0,0,0);S.vertex=!0;if(null!=M&&this.model.isEdge(M.cell)){S.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";S.geometry.relative=!0;S.connectable=!1;var ca=this.view.getRelativePoint(M,z,L);S.geometry.x=Math.round(1E4*ca.x)/1E4;S.geometry.y=Math.round(ca.y);S.geometry.offset=new mxPoint(0,0);ca=this.view.getPoint(M,S.geometry);var ha=this.view.scale;
-S.geometry.offset=new mxPoint(Math.round((z-ca.x)/ha),Math.round((L-ca.y)/ha))}else ca=this.view.translate,S.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",S.geometry.width=40,S.geometry.height=20,S.geometry.x=Math.round(z/this.view.scale)-ca.x-(null!=M?M.origin.x:0),S.geometry.y=Math.round(L/this.view.scale)-ca.y-(null!=M?M.origin.y:0),S.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([S],null!=M?M.cell:null),this.fireEvent(new mxEventObject("textInserted",
+function(){return!1};Graph.prototype.addText=function(z,L,M){var S=new mxCell;S.value="Text";S.geometry=new mxGeometry(0,0,0,0);S.vertex=!0;if(null!=M&&this.model.isEdge(M.cell)){S.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";S.geometry.relative=!0;S.connectable=!1;var ca=this.view.getRelativePoint(M,z,L);S.geometry.x=Math.round(1E4*ca.x)/1E4;S.geometry.y=Math.round(ca.y);S.geometry.offset=new mxPoint(0,0);ca=this.view.getPoint(M,S.geometry);var ia=this.view.scale;
+S.geometry.offset=new mxPoint(Math.round((z-ca.x)/ia),Math.round((L-ca.y)/ia))}else ca=this.view.translate,S.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",S.geometry.width=40,S.geometry.height=20,S.geometry.x=Math.round(z/this.view.scale)-ca.x-(null!=M?M.origin.x:0),S.geometry.y=Math.round(L/this.view.scale)-ca.y-(null!=M?M.origin.y:0),S.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([S],null!=M?M.cell:null),this.fireEvent(new mxEventObject("textInserted",
"cells",[S])),this.autoSizeCell(S)}finally{this.getModel().endUpdate()}return S};Graph.prototype.addClickHandler=function(z,L,M){var S=mxUtils.bind(this,function(){var qa=this.container.getElementsByTagName("a");if(null!=qa)for(var xa=0;xa<qa.length;xa++){var Ga=this.getAbsoluteUrl(qa[xa].getAttribute("href"));null!=Ga&&(qa[xa].setAttribute("rel",this.linkRelation),qa[xa].setAttribute("href",Ga),null!=L&&mxEvent.addGestureListeners(qa[xa],null,null,L))}});this.model.addListener(mxEvent.CHANGE,S);
-S();var ca=this.container.style.cursor,ha=this.getTolerance(),oa=this,ra={currentState:null,currentLink:null,currentTarget:null,highlight:null!=z&&""!=z&&z!=mxConstants.NONE?new mxCellHighlight(oa,z,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(qa){var xa=qa.sourceState;if(null==xa||null==oa.getLinkForCell(xa.cell))qa=oa.getCellAt(qa.getGraphX(),qa.getGraphY(),null,null,null,function(Ga,La,Pa){return null==oa.getLinkForCell(Ga.cell)}),xa=null==xa||oa.model.isAncestor(qa,
+S();var ca=this.container.style.cursor,ia=this.getTolerance(),oa=this,ra={currentState:null,currentLink:null,currentTarget:null,highlight:null!=z&&""!=z&&z!=mxConstants.NONE?new mxCellHighlight(oa,z,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(qa){var xa=qa.sourceState;if(null==xa||null==oa.getLinkForCell(xa.cell))qa=oa.getCellAt(qa.getGraphX(),qa.getGraphY(),null,null,null,function(Ga,La,Pa){return null==oa.getLinkForCell(Ga.cell)}),xa=null==xa||oa.model.isAncestor(qa,
xa.cell)?oa.view.getState(qa):null;xa!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=xa,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(qa,xa){this.startX=xa.getGraphX();this.startY=xa.getGraphY();this.scrollLeft=oa.container.scrollLeft;this.scrollTop=oa.container.scrollTop;null==this.currentLink&&"auto"==oa.container.style.overflow&&(oa.container.style.cursor="move");this.updateCurrentState(xa)},mouseMove:function(qa,xa){if(oa.isMouseDown)null!=
-this.currentLink&&(qa=Math.abs(this.startX-xa.getGraphX()),xa=Math.abs(this.startY-xa.getGraphY()),(qa>ha||xa>ha)&&this.clear());else{for(qa=xa.getSource();null!=qa&&"a"!=qa.nodeName.toLowerCase();)qa=qa.parentNode;null!=qa?this.clear():(null!=oa.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&oa.tooltipHandler.reset(xa,!0,this.currentState),(null==this.currentState||xa.getState()!=this.currentState&&null!=xa.sourceState||!oa.intersects(this.currentState,xa.getGraphX(),xa.getGraphY()))&&
-this.updateCurrentState(xa))}},mouseUp:function(qa,xa){var Ga=xa.getSource();for(qa=xa.getEvent();null!=Ga&&"a"!=Ga.nodeName.toLowerCase();)Ga=Ga.parentNode;null==Ga&&Math.abs(this.scrollLeft-oa.container.scrollLeft)<ha&&Math.abs(this.scrollTop-oa.container.scrollTop)<ha&&(null==xa.sourceState||!xa.isSource(xa.sourceState.control))&&((mxEvent.isLeftMouseButton(qa)||mxEvent.isMiddleMouseButton(qa))&&!mxEvent.isPopupTrigger(qa)||mxEvent.isTouchEvent(qa))&&(null!=this.currentLink?(Ga=oa.isBlankLink(this.currentLink),
-"data:"!==this.currentLink.substring(0,5)&&Ga||null==L||L(qa,this.currentLink),mxEvent.isConsumed(qa)||(qa=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(qa)?"_blank":Ga?oa.linkTarget:"_top",oa.openLink(this.currentLink,qa),xa.consume())):null!=M&&!xa.isConsumed()&&Math.abs(this.scrollLeft-oa.container.scrollLeft)<ha&&Math.abs(this.scrollTop-oa.container.scrollTop)<ha&&Math.abs(this.startX-xa.getGraphX())<ha&&Math.abs(this.startY-xa.getGraphY())<ha&&M(xa.getEvent()));this.clear()},
+this.currentLink&&(qa=Math.abs(this.startX-xa.getGraphX()),xa=Math.abs(this.startY-xa.getGraphY()),(qa>ia||xa>ia)&&this.clear());else{for(qa=xa.getSource();null!=qa&&"a"!=qa.nodeName.toLowerCase();)qa=qa.parentNode;null!=qa?this.clear():(null!=oa.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&oa.tooltipHandler.reset(xa,!0,this.currentState),(null==this.currentState||xa.getState()!=this.currentState&&null!=xa.sourceState||!oa.intersects(this.currentState,xa.getGraphX(),xa.getGraphY()))&&
+this.updateCurrentState(xa))}},mouseUp:function(qa,xa){var Ga=xa.getSource();for(qa=xa.getEvent();null!=Ga&&"a"!=Ga.nodeName.toLowerCase();)Ga=Ga.parentNode;null==Ga&&Math.abs(this.scrollLeft-oa.container.scrollLeft)<ia&&Math.abs(this.scrollTop-oa.container.scrollTop)<ia&&(null==xa.sourceState||!xa.isSource(xa.sourceState.control))&&((mxEvent.isLeftMouseButton(qa)||mxEvent.isMiddleMouseButton(qa))&&!mxEvent.isPopupTrigger(qa)||mxEvent.isTouchEvent(qa))&&(null!=this.currentLink?(Ga=oa.isBlankLink(this.currentLink),
+"data:"!==this.currentLink.substring(0,5)&&Ga||null==L||L(qa,this.currentLink),mxEvent.isConsumed(qa)||(qa=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(qa)?"_blank":Ga?oa.linkTarget:"_top",oa.openLink(this.currentLink,qa),xa.consume())):null!=M&&!xa.isConsumed()&&Math.abs(this.scrollLeft-oa.container.scrollLeft)<ia&&Math.abs(this.scrollTop-oa.container.scrollTop)<ia&&Math.abs(this.startX-xa.getGraphX())<ia&&Math.abs(this.startY-xa.getGraphY())<ia&&M(xa.getEvent()));this.clear()},
activate:function(qa){this.currentLink=oa.getAbsoluteUrl(oa.getLinkForCell(qa.cell));null!=this.currentLink&&(this.currentTarget=oa.getLinkTargetForCell(qa.cell),oa.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(qa))},clear:function(){null!=oa.container&&(oa.container.style.cursor=ca);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=oa.tooltipHandler&&oa.tooltipHandler.hide()}};oa.click=function(qa){};oa.addMouseListener(ra);
-mxEvent.addListener(document,"mouseleave",function(qa){ra.clear()})};Graph.prototype.duplicateCells=function(z,L){z=null!=z?z:this.getSelectionCells();L=null!=L?L:!0;for(var M=0;M<z.length;M++)this.isTableCell(z[M])&&(z[M]=this.model.getParent(z[M]));z=this.model.getTopmostCells(z);var S=this.getModel(),ca=this.gridSize,ha=[];S.beginUpdate();try{var oa={},ra=this.createCellLookup(z),qa=this.cloneCells(z,!1,oa,!0);for(M=0;M<z.length;M++){var xa=S.getParent(z[M]);if(null!=xa){var Ga=this.moveCells([qa[M]],
-ca,ca,!1)[0];ha.push(Ga);if(L)S.add(xa,qa[M]);else{var La=xa.getIndex(z[M]);S.add(xa,qa[M],La+1)}if(this.isTable(xa)){var Pa=this.getCellGeometry(qa[M]),Oa=this.getCellGeometry(xa);null!=Pa&&null!=Oa&&(Oa=Oa.clone(),Oa.height+=Pa.height,S.setGeometry(xa,Oa))}}else ha.push(qa[M])}this.updateCustomLinks(this.createCellMapping(oa,ra),qa,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",qa))}finally{S.endUpdate()}return ha};Graph.prototype.insertImage=function(z,L,M){if(null!=z&&null!=
-this.cellEditor.textarea){for(var S=this.cellEditor.textarea.getElementsByTagName("img"),ca=[],ha=0;ha<S.length;ha++)ca.push(S[ha]);document.execCommand("insertimage",!1,z);z=this.cellEditor.textarea.getElementsByTagName("img");if(z.length==ca.length+1)for(ha=z.length-1;0<=ha;ha--)if(0==ha||z[ha]!=ca[ha-1]){z[ha].setAttribute("width",L);z[ha].setAttribute("height",M);break}}};Graph.prototype.insertLink=function(z){if(null!=this.cellEditor.textarea)if(0==z.length)document.execCommand("unlink",!1);
+mxEvent.addListener(document,"mouseleave",function(qa){ra.clear()})};Graph.prototype.duplicateCells=function(z,L){z=null!=z?z:this.getSelectionCells();L=null!=L?L:!0;for(var M=0;M<z.length;M++)this.isTableCell(z[M])&&(z[M]=this.model.getParent(z[M]));z=this.model.getTopmostCells(z);var S=this.getModel(),ca=this.gridSize,ia=[];S.beginUpdate();try{var oa={},ra=this.createCellLookup(z),qa=this.cloneCells(z,!1,oa,!0);for(M=0;M<z.length;M++){var xa=S.getParent(z[M]);if(null!=xa){var Ga=this.moveCells([qa[M]],
+ca,ca,!1)[0];ia.push(Ga);if(L)S.add(xa,qa[M]);else{var La=xa.getIndex(z[M]);S.add(xa,qa[M],La+1)}if(this.isTable(xa)){var Pa=this.getCellGeometry(qa[M]),Oa=this.getCellGeometry(xa);null!=Pa&&null!=Oa&&(Oa=Oa.clone(),Oa.height+=Pa.height,S.setGeometry(xa,Oa))}}else ia.push(qa[M])}this.updateCustomLinks(this.createCellMapping(oa,ra),qa,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",qa))}finally{S.endUpdate()}return ia};Graph.prototype.insertImage=function(z,L,M){if(null!=z&&null!=
+this.cellEditor.textarea){for(var S=this.cellEditor.textarea.getElementsByTagName("img"),ca=[],ia=0;ia<S.length;ia++)ca.push(S[ia]);document.execCommand("insertimage",!1,z);z=this.cellEditor.textarea.getElementsByTagName("img");if(z.length==ca.length+1)for(ia=z.length-1;0<=ia;ia--)if(0==ia||z[ia]!=ca[ia-1]){z[ia].setAttribute("width",L);z[ia].setAttribute("height",M);break}}};Graph.prototype.insertLink=function(z){if(null!=this.cellEditor.textarea)if(0==z.length)document.execCommand("unlink",!1);
else if(mxClient.IS_FF){for(var L=this.cellEditor.textarea.getElementsByTagName("a"),M=[],S=0;S<L.length;S++)M.push(L[S]);document.execCommand("createlink",!1,mxUtils.trim(z));L=this.cellEditor.textarea.getElementsByTagName("a");if(L.length==M.length+1)for(S=L.length-1;0<=S;S--)if(L[S]!=M[S-1]){for(L=L[S].getElementsByTagName("a");0<L.length;){for(M=L[0].parentNode;null!=L[0].firstChild;)M.insertBefore(L[0].firstChild,L[0]);M.removeChild(L[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(z))};
-Graph.prototype.isCellResizable=function(z){var L=mxGraph.prototype.isCellResizable.apply(this,arguments),M=this.getCurrentCellStyle(z);return!this.isTableCell(z)&&!this.isTableRow(z)&&(L||"0"!=mxUtils.getValue(M,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==M[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(z,L){null==L&&(L=this.getSelectionCells());if(null!=L&&1<L.length){for(var M=[],S=null,ca=null,ha=0;ha<L.length;ha++)if(this.getModel().isVertex(L[ha])){var oa=this.view.getState(L[ha]);
-if(null!=oa){var ra=z?oa.getCenterX():oa.getCenterY();S=null!=S?Math.max(S,ra):ra;ca=null!=ca?Math.min(ca,ra):ra;M.push(oa)}}if(2<M.length){M.sort(function(La,Pa){return z?La.x-Pa.x:La.y-Pa.y});oa=this.view.translate;ra=this.view.scale;ca=ca/ra-(z?oa.x:oa.y);S=S/ra-(z?oa.x:oa.y);this.getModel().beginUpdate();try{var qa=(S-ca)/(M.length-1);S=ca;for(ha=1;ha<M.length-1;ha++){var xa=this.view.getState(this.model.getParent(M[ha].cell)),Ga=this.getCellGeometry(M[ha].cell);S+=qa;null!=Ga&&null!=xa&&(Ga=
-Ga.clone(),z?Ga.x=Math.round(S-Ga.width/2)-xa.origin.x:Ga.y=Math.round(S-Ga.height/2)-xa.origin.y,this.getModel().setGeometry(M[ha].cell,Ga))}}finally{this.getModel().endUpdate()}}}return L};Graph.prototype.isCloneEvent=function(z){return mxClient.IS_MAC&&mxEvent.isMetaDown(z)||mxEvent.isControlDown(z)};Graph.prototype.createSvgImageExport=function(){var z=new mxImageExport;z.getLinkForCellState=mxUtils.bind(this,function(L,M){return this.getLinkForCell(L.cell)});return z};Graph.prototype.parseBackgroundImage=
-function(z){var L=null;null!=z&&0<z.length&&(z=JSON.parse(z),L=new mxImage(z.src,z.width,z.height));return L};Graph.prototype.getBackgroundImageObject=function(z){return z};Graph.prototype.getSvg=function(z,L,M,S,ca,ha,oa,ra,qa,xa,Ga,La,Pa,Oa){var Ta=null;if(null!=Oa)for(Ta=new mxDictionary,Ga=0;Ga<Oa.length;Ga++)Ta.put(Oa[Ga],!0);if(Oa=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{L=null!=L?L:1;M=null!=M?M:0;ca=null!=ca?ca:!0;ha=null!=ha?ha:!0;oa=
-null!=oa?oa:!0;xa=null!=xa?xa:!1;var Ma="page"==Pa?this.view.getBackgroundPageBounds():ha&&null==Ta||S||"diagram"==Pa?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),ua=this.view.scale;"diagram"==Pa&&null!=this.backgroundImage&&(Ma=mxRectangle.fromRectangle(Ma),Ma.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*ua,(this.view.translate.y+this.backgroundImage.y)*ua,this.backgroundImage.width*ua,this.backgroundImage.height*ua)));if(null==Ma)throw Error(mxResources.get("drawingEmpty"));
+Graph.prototype.isCellResizable=function(z){var L=mxGraph.prototype.isCellResizable.apply(this,arguments),M=this.getCurrentCellStyle(z);return!this.isTableCell(z)&&!this.isTableRow(z)&&(L||"0"!=mxUtils.getValue(M,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==M[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(z,L){null==L&&(L=this.getSelectionCells());if(null!=L&&1<L.length){for(var M=[],S=null,ca=null,ia=0;ia<L.length;ia++)if(this.getModel().isVertex(L[ia])){var oa=this.view.getState(L[ia]);
+if(null!=oa){var ra=z?oa.getCenterX():oa.getCenterY();S=null!=S?Math.max(S,ra):ra;ca=null!=ca?Math.min(ca,ra):ra;M.push(oa)}}if(2<M.length){M.sort(function(La,Pa){return z?La.x-Pa.x:La.y-Pa.y});oa=this.view.translate;ra=this.view.scale;ca=ca/ra-(z?oa.x:oa.y);S=S/ra-(z?oa.x:oa.y);this.getModel().beginUpdate();try{var qa=(S-ca)/(M.length-1);S=ca;for(ia=1;ia<M.length-1;ia++){var xa=this.view.getState(this.model.getParent(M[ia].cell)),Ga=this.getCellGeometry(M[ia].cell);S+=qa;null!=Ga&&null!=xa&&(Ga=
+Ga.clone(),z?Ga.x=Math.round(S-Ga.width/2)-xa.origin.x:Ga.y=Math.round(S-Ga.height/2)-xa.origin.y,this.getModel().setGeometry(M[ia].cell,Ga))}}finally{this.getModel().endUpdate()}}}return L};Graph.prototype.isCloneEvent=function(z){return mxClient.IS_MAC&&mxEvent.isMetaDown(z)||mxEvent.isControlDown(z)};Graph.prototype.createSvgImageExport=function(){var z=new mxImageExport;z.getLinkForCellState=mxUtils.bind(this,function(L,M){return this.getLinkForCell(L.cell)});return z};Graph.prototype.parseBackgroundImage=
+function(z){var L=null;null!=z&&0<z.length&&(z=JSON.parse(z),L=new mxImage(z.src,z.width,z.height));return L};Graph.prototype.getBackgroundImageObject=function(z){return z};Graph.prototype.getSvg=function(z,L,M,S,ca,ia,oa,ra,qa,xa,Ga,La,Pa,Oa){var Ta=null;if(null!=Oa)for(Ta=new mxDictionary,Ga=0;Ga<Oa.length;Ga++)Ta.put(Oa[Ga],!0);if(Oa=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{L=null!=L?L:1;M=null!=M?M:0;ca=null!=ca?ca:!0;ia=null!=ia?ia:!0;oa=
+null!=oa?oa:!0;xa=null!=xa?xa:!1;var Ma="page"==Pa?this.view.getBackgroundPageBounds():ia&&null==Ta||S||"diagram"==Pa?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),ua=this.view.scale;"diagram"==Pa&&null!=this.backgroundImage&&(Ma=mxRectangle.fromRectangle(Ma),Ma.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*ua,(this.view.translate.y+this.backgroundImage.y)*ua,this.backgroundImage.width*ua,this.backgroundImage.height*ua)));if(null==Ma)throw Error(mxResources.get("drawingEmpty"));
S=L/ua;Pa=ca?-.5:0;var ya=Graph.createSvgNode(Pa,Pa,Math.max(1,Math.ceil(Ma.width*S)+2*M)+(xa&&0==M?5:0),Math.max(1,Math.ceil(Ma.height*S)+2*M)+(xa&&0==M?5:0),z),Na=ya.ownerDocument,Fa=null!=Na.createElementNS?Na.createElementNS(mxConstants.NS_SVG,"g"):Na.createElement("g");ya.appendChild(Fa);var Ra=this.createSvgCanvas(Fa);Ra.foOffset=ca?-.5:0;Ra.textOffset=ca?-.5:0;Ra.imageOffset=ca?-.5:0;Ra.translate(Math.floor(M/L-Ma.x/ua),Math.floor(M/L-Ma.y/ua));var db=document.createElement("div"),Va=Ra.getAlternateText;
Ra.getAlternateText=function(Ya,gb,hb,ob,vb,qb,Ab,Bb,tb,lb,ib,mb,wb){if(null!=qb&&0<this.state.fontSize)try{mxUtils.isNode(qb)?qb=qb.innerText:(db.innerHTML=qb,qb=mxUtils.extractTextWithWhitespace(db.childNodes));for(var rb=Math.ceil(2*ob/this.state.fontSize),xb=[],zb=0,yb=0;(0==rb||zb<rb)&&yb<qb.length;){var pb=qb.charCodeAt(yb);if(10==pb||13==pb){if(0<zb)break}else xb.push(qb.charAt(yb)),255>pb&&zb++;yb++}xb.length<qb.length&&1<qb.length-xb.length&&(qb=mxUtils.trim(xb.join(""))+"...");return qb}catch(c){return Va.apply(this,
arguments)}else return Va.apply(this,arguments)};var fb=this.backgroundImage;if(null!=fb){z=ua/L;var kb=this.view.translate;Pa=new mxRectangle((fb.x+kb.x)*z,(fb.y+kb.y)*z,fb.width*z,fb.height*z);mxUtils.intersects(Ma,Pa)&&Ra.image(fb.x+kb.x,fb.y+kb.y,fb.width,fb.height,fb.src,!0)}Ra.scale(S);Ra.textEnabled=oa;ra=null!=ra?ra:this.createSvgImageExport();var ub=ra.drawCellState,nb=ra.getLinkForCellState;ra.getLinkForCellState=function(Ya,gb){var hb=nb.apply(this,arguments);return null==hb||Ya.view.graph.isCustomLink(hb)?
-null:hb};ra.getLinkTargetForCellState=function(Ya,gb){return Ya.view.graph.getLinkTargetForCell(Ya.cell)};ra.drawCellState=function(Ya,gb){for(var hb=Ya.view.graph,ob=null!=Ta?Ta.get(Ya.cell):hb.isCellSelected(Ya.cell),vb=hb.model.getParent(Ya.cell);!(ha&&null==Ta||ob)&&null!=vb;)ob=null!=Ta?Ta.get(vb):hb.isCellSelected(vb),vb=hb.model.getParent(vb);(ha&&null==Ta||ob)&&ub.apply(this,arguments)};ra.drawState(this.getView().getState(this.model.root),Ra);this.updateSvgLinks(ya,qa,!0);this.addForeignObjectWarning(Ra,
+null:hb};ra.getLinkTargetForCellState=function(Ya,gb){return Ya.view.graph.getLinkTargetForCell(Ya.cell)};ra.drawCellState=function(Ya,gb){for(var hb=Ya.view.graph,ob=null!=Ta?Ta.get(Ya.cell):hb.isCellSelected(Ya.cell),vb=hb.model.getParent(Ya.cell);!(ia&&null==Ta||ob)&&null!=vb;)ob=null!=Ta?Ta.get(vb):hb.isCellSelected(vb),vb=hb.model.getParent(vb);(ia&&null==Ta||ob)&&ub.apply(this,arguments)};ra.drawState(this.getView().getState(this.model.root),Ra);this.updateSvgLinks(ya,qa,!0);this.addForeignObjectWarning(Ra,
ya);return ya}finally{Oa&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(z,L){if("0"!=urlParams["svg-warning"]&&0<L.getElementsByTagName("foreignObject").length){var M=z.createElement("switch"),S=z.createElement("g");S.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var ca=z.createElement("a");ca.setAttribute("transform","translate(0,-5)");null==ca.setAttributeNS||L.ownerDocument!=document&&
null==document.documentMode?(ca.setAttribute("xlink:href",Graph.foreignObjectWarningLink),ca.setAttribute("target","_blank")):(ca.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),ca.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));z=z.createElement("text");z.setAttribute("text-anchor","middle");z.setAttribute("font-size","10px");z.setAttribute("x","50%");z.setAttribute("y","100%");mxUtils.write(z,Graph.foreignObjectWarningText);M.appendChild(S);ca.appendChild(z);
M.appendChild(ca);L.appendChild(M)}};Graph.prototype.updateSvgLinks=function(z,L,M){z=z.getElementsByTagName("a");for(var S=0;S<z.length;S++)if(null==z[S].getAttribute("target")){var ca=z[S].getAttribute("href");null==ca&&(ca=z[S].getAttribute("xlink:href"));null!=ca&&(null!=L&&/^https?:\/\//.test(ca)?z[S].setAttribute("target",L):M&&this.isCustomLink(ca)&&z[S].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(z){z=new mxSvgCanvas2D(z);z.minStrokeWidth=this.cellRenderer.minSvgStrokeWidth;
z.pointerEvents=!0;return z};Graph.prototype.getSelectedElement=function(){var z=null;if(window.getSelection){var L=window.getSelection();L.getRangeAt&&L.rangeCount&&(z=L.getRangeAt(0).commonAncestorContainer)}else document.selection&&(z=document.selection.createRange().parentElement());return z};Graph.prototype.getSelectedEditingElement=function(){for(var z=this.getSelectedElement();null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z=z.parentNode;null!=z&&z==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&
this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(z=this.cellEditor.textarea.firstChild);return z};Graph.prototype.getParentByName=function(z,L,M){for(;null!=z&&z.nodeName!=L;){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.getParentByNames=function(z,L,M){for(;null!=z&&!(0<=mxUtils.indexOf(L,z.nodeName));){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.selectNode=function(z){var L=null;if(window.getSelection){if(L=window.getSelection(),L.getRangeAt&&
-L.rangeCount){var M=document.createRange();M.selectNode(z);L.removeAllRanges();L.addRange(M)}}else(L=document.selection)&&"Control"!=L.type&&(z=L.createRange(),z.collapse(!0),M=L.createRange(),M.setEndPoint("StartToStart",z),M.select())};Graph.prototype.flipEdgePoints=function(z,L,M){var S=this.getCellGeometry(z);if(null!=S){S=S.clone();if(null!=S.points)for(var ca=0;ca<S.points.length;ca++)L?S.points[ca].x=M+(M-S.points[ca].x):S.points[ca].y=M+(M-S.points[ca].y);ca=function(ha){null!=ha&&(L?ha.x=
-M+(M-ha.x):ha.y=M+(M-ha.y))};ca(S.getTerminalPoint(!0));ca(S.getTerminalPoint(!1));this.model.setGeometry(z,S)}};Graph.prototype.flipChildren=function(z,L,M){this.model.beginUpdate();try{for(var S=this.model.getChildCount(z),ca=0;ca<S;ca++){var ha=this.model.getChildAt(z,ca);if(this.model.isEdge(ha))this.flipEdgePoints(ha,L,M);else{var oa=this.getCellGeometry(ha);null!=oa&&(oa=oa.clone(),L?oa.x=M+(M-oa.x-oa.width):oa.y=M+(M-oa.y-oa.height),this.model.setGeometry(ha,oa))}}}finally{this.model.endUpdate()}};
-Graph.prototype.flipCells=function(z,L){this.model.beginUpdate();try{z=this.model.getTopmostCells(z);for(var M=[],S=0;S<z.length;S++)if(this.model.isEdge(z[S])){var ca=this.view.getState(z[S]);null!=ca&&this.flipEdgePoints(z[S],L,(L?ca.getCenterX():ca.getCenterY())/this.view.scale-(L?ca.origin.x:ca.origin.y)-(L?this.view.translate.x:this.view.translate.y))}else{var ha=this.getCellGeometry(z[S]);null!=ha&&this.flipChildren(z[S],L,L?ha.getCenterX()-ha.x:ha.getCenterY()-ha.y);M.push(z[S])}this.toggleCellStyles(L?
-mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,M)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(z,L){var M=null;if(null!=z&&0<z.length){this.model.beginUpdate();try{for(var S=0;S<z.length;S++){var ca=this.model.getParent(z[S]);if(this.isTable(ca)){var ha=this.getCellGeometry(z[S]),oa=this.getCellGeometry(ca);null!=ha&&null!=oa&&(oa=oa.clone(),oa.height-=ha.height,this.model.setGeometry(ca,oa))}}var ra=this.selectParentAfterDelete?this.model.getParents(z):null;this.removeCells(z,
-L)}finally{this.model.endUpdate()}if(null!=ra)for(M=[],S=0;S<ra.length;S++)this.model.contains(ra[S])&&(this.model.isVertex(ra[S])||this.model.isEdge(ra[S]))&&M.push(ra[S])}return M};Graph.prototype.insertTableColumn=function(z,L){var M=this.getModel();M.beginUpdate();try{var S=z,ca=0;if(this.isTableCell(z)){var ha=M.getParent(z);S=M.getParent(ha);ca=mxUtils.indexOf(M.getChildCells(ha,!0),z)}else this.isTableRow(z)?S=M.getParent(z):z=M.getChildCells(S,!0)[0],L||(ca=M.getChildCells(z,!0).length-1);
+L.rangeCount){var M=document.createRange();M.selectNode(z);L.removeAllRanges();L.addRange(M)}}else(L=document.selection)&&"Control"!=L.type&&(z=L.createRange(),z.collapse(!0),M=L.createRange(),M.setEndPoint("StartToStart",z),M.select())};Graph.prototype.flipEdgePoints=function(z,L,M){var S=this.getCellGeometry(z);if(null!=S){S=S.clone();if(null!=S.points)for(var ca=0;ca<S.points.length;ca++)L?S.points[ca].x=M+(M-S.points[ca].x):S.points[ca].y=M+(M-S.points[ca].y);ca=function(ia){null!=ia&&(L?ia.x=
+M+(M-ia.x):ia.y=M+(M-ia.y))};ca(S.getTerminalPoint(!0));ca(S.getTerminalPoint(!1));this.model.setGeometry(z,S)}};Graph.prototype.flipChildren=function(z,L,M){this.model.beginUpdate();try{for(var S=this.model.getChildCount(z),ca=0;ca<S;ca++){var ia=this.model.getChildAt(z,ca);if(this.model.isEdge(ia))this.flipEdgePoints(ia,L,M);else{var oa=this.getCellGeometry(ia);null!=oa&&(oa=oa.clone(),L?oa.x=M+(M-oa.x-oa.width):oa.y=M+(M-oa.y-oa.height),this.model.setGeometry(ia,oa))}}}finally{this.model.endUpdate()}};
+Graph.prototype.flipCells=function(z,L){this.model.beginUpdate();try{z=this.model.getTopmostCells(z);for(var M=[],S=0;S<z.length;S++)if(this.model.isEdge(z[S])){var ca=this.view.getState(z[S]);null!=ca&&this.flipEdgePoints(z[S],L,(L?ca.getCenterX():ca.getCenterY())/this.view.scale-(L?ca.origin.x:ca.origin.y)-(L?this.view.translate.x:this.view.translate.y))}else{var ia=this.getCellGeometry(z[S]);null!=ia&&this.flipChildren(z[S],L,L?ia.getCenterX()-ia.x:ia.getCenterY()-ia.y);M.push(z[S])}this.toggleCellStyles(L?
+mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,M)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(z,L){var M=null;if(null!=z&&0<z.length){this.model.beginUpdate();try{for(var S=0;S<z.length;S++){var ca=this.model.getParent(z[S]);if(this.isTable(ca)){var ia=this.getCellGeometry(z[S]),oa=this.getCellGeometry(ca);null!=ia&&null!=oa&&(oa=oa.clone(),oa.height-=ia.height,this.model.setGeometry(ca,oa))}}var ra=this.selectParentAfterDelete?this.model.getParents(z):null;this.removeCells(z,
+L)}finally{this.model.endUpdate()}if(null!=ra)for(M=[],S=0;S<ra.length;S++)this.model.contains(ra[S])&&(this.model.isVertex(ra[S])||this.model.isEdge(ra[S]))&&M.push(ra[S])}return M};Graph.prototype.insertTableColumn=function(z,L){var M=this.getModel();M.beginUpdate();try{var S=z,ca=0;if(this.isTableCell(z)){var ia=M.getParent(z);S=M.getParent(ia);ca=mxUtils.indexOf(M.getChildCells(ia,!0),z)}else this.isTableRow(z)?S=M.getParent(z):z=M.getChildCells(S,!0)[0],L||(ca=M.getChildCells(z,!0).length-1);
var oa=M.getChildCells(S,!0),ra=Graph.minTableColumnWidth;for(z=0;z<oa.length;z++){var qa=M.getChildCells(oa[z],!0)[ca],xa=M.cloneCell(qa,!1),Ga=this.getCellGeometry(xa);xa.value=null;xa.style=mxUtils.setStyle(mxUtils.setStyle(xa.style,"rowspan",null),"colspan",null);if(null!=Ga){null!=Ga.alternateBounds&&(Ga.width=Ga.alternateBounds.width,Ga.height=Ga.alternateBounds.height,Ga.alternateBounds=null);ra=Ga.width;var La=this.getCellGeometry(oa[z]);null!=La&&(Ga.height=La.height)}M.add(oa[z],xa,ca+(L?
0:1))}var Pa=this.getCellGeometry(S);null!=Pa&&(Pa=Pa.clone(),Pa.width+=ra,M.setGeometry(S,Pa))}finally{M.endUpdate()}};Graph.prototype.deleteLane=function(z){var L=this.getModel();L.beginUpdate();try{var M=null;M="stackLayout"==this.getCurrentCellStyle(z).childLayout?z:L.getParent(z);var S=L.getChildCells(M,!0);0==S.length?L.remove(M):(M==z&&(z=S[S.length-1]),L.remove(z))}finally{L.endUpdate()}};Graph.prototype.insertLane=function(z,L){var M=this.getModel();M.beginUpdate();try{var S=null;if("stackLayout"==
-this.getCurrentCellStyle(z).childLayout){S=z;var ca=M.getChildCells(S,!0);z=ca[L?0:ca.length-1]}else S=M.getParent(z);var ha=S.getIndex(z);z=M.cloneCell(z,!1);z.value=null;M.add(S,z,ha+(L?0:1))}finally{M.endUpdate()}};Graph.prototype.insertTableRow=function(z,L){var M=this.getModel();M.beginUpdate();try{var S=z,ca=z;if(this.isTableCell(z))ca=M.getParent(z),S=M.getParent(ca);else if(this.isTableRow(z))S=M.getParent(z);else{var ha=M.getChildCells(S,!0);ca=ha[L?0:ha.length-1]}var oa=M.getChildCells(ca,
-!0),ra=S.getIndex(ca);ca=M.cloneCell(ca,!1);ca.value=null;var qa=this.getCellGeometry(ca);if(null!=qa){for(ha=0;ha<oa.length;ha++){z=M.cloneCell(oa[ha],!1);z.value=null;z.style=mxUtils.setStyle(mxUtils.setStyle(z.style,"rowspan",null),"colspan",null);var xa=this.getCellGeometry(z);null!=xa&&(null!=xa.alternateBounds&&(xa.width=xa.alternateBounds.width,xa.height=xa.alternateBounds.height,xa.alternateBounds=null),xa.height=qa.height);ca.insert(z)}M.add(S,ca,ra+(L?0:1));var Ga=this.getCellGeometry(S);
-null!=Ga&&(Ga=Ga.clone(),Ga.height+=qa.height,M.setGeometry(S,Ga))}}finally{M.endUpdate()}};Graph.prototype.deleteTableColumn=function(z){var L=this.getModel();L.beginUpdate();try{var M=z,S=z;this.isTableCell(z)&&(S=L.getParent(z));this.isTableRow(S)&&(M=L.getParent(S));var ca=L.getChildCells(M,!0);if(0==ca.length)L.remove(M);else{this.isTableRow(S)||(S=ca[0]);var ha=L.getChildCells(S,!0);if(1>=ha.length)L.remove(M);else{var oa=ha.length-1;this.isTableCell(z)&&(oa=mxUtils.indexOf(ha,z));for(S=z=0;S<
+this.getCurrentCellStyle(z).childLayout){S=z;var ca=M.getChildCells(S,!0);z=ca[L?0:ca.length-1]}else S=M.getParent(z);var ia=S.getIndex(z);z=M.cloneCell(z,!1);z.value=null;M.add(S,z,ia+(L?0:1))}finally{M.endUpdate()}};Graph.prototype.insertTableRow=function(z,L){var M=this.getModel();M.beginUpdate();try{var S=z,ca=z;if(this.isTableCell(z))ca=M.getParent(z),S=M.getParent(ca);else if(this.isTableRow(z))S=M.getParent(z);else{var ia=M.getChildCells(S,!0);ca=ia[L?0:ia.length-1]}var oa=M.getChildCells(ca,
+!0),ra=S.getIndex(ca);ca=M.cloneCell(ca,!1);ca.value=null;var qa=this.getCellGeometry(ca);if(null!=qa){for(ia=0;ia<oa.length;ia++){z=M.cloneCell(oa[ia],!1);z.value=null;z.style=mxUtils.setStyle(mxUtils.setStyle(z.style,"rowspan",null),"colspan",null);var xa=this.getCellGeometry(z);null!=xa&&(null!=xa.alternateBounds&&(xa.width=xa.alternateBounds.width,xa.height=xa.alternateBounds.height,xa.alternateBounds=null),xa.height=qa.height);ca.insert(z)}M.add(S,ca,ra+(L?0:1));var Ga=this.getCellGeometry(S);
+null!=Ga&&(Ga=Ga.clone(),Ga.height+=qa.height,M.setGeometry(S,Ga))}}finally{M.endUpdate()}};Graph.prototype.deleteTableColumn=function(z){var L=this.getModel();L.beginUpdate();try{var M=z,S=z;this.isTableCell(z)&&(S=L.getParent(z));this.isTableRow(S)&&(M=L.getParent(S));var ca=L.getChildCells(M,!0);if(0==ca.length)L.remove(M);else{this.isTableRow(S)||(S=ca[0]);var ia=L.getChildCells(S,!0);if(1>=ia.length)L.remove(M);else{var oa=ia.length-1;this.isTableCell(z)&&(oa=mxUtils.indexOf(ia,z));for(S=z=0;S<
ca.length;S++){var ra=L.getChildCells(ca[S],!0)[oa];L.remove(ra);var qa=this.getCellGeometry(ra);null!=qa&&(z=Math.max(z,qa.width))}var xa=this.getCellGeometry(M);null!=xa&&(xa=xa.clone(),xa.width-=z,L.setGeometry(M,xa))}}}finally{L.endUpdate()}};Graph.prototype.deleteTableRow=function(z){var L=this.getModel();L.beginUpdate();try{var M=z,S=z;this.isTableCell(z)&&(z=S=L.getParent(z));this.isTableRow(z)&&(M=L.getParent(S));var ca=L.getChildCells(M,!0);if(1>=ca.length)L.remove(M);else{this.isTableRow(S)||
-(S=ca[ca.length-1]);L.remove(S);z=0;var ha=this.getCellGeometry(S);null!=ha&&(z=ha.height);var oa=this.getCellGeometry(M);null!=oa&&(oa=oa.clone(),oa.height-=z,L.setGeometry(M,oa))}}finally{L.endUpdate()}};Graph.prototype.insertRow=function(z,L){for(var M=z.tBodies[0],S=M.rows[0].cells,ca=z=0;ca<S.length;ca++){var ha=S[ca].getAttribute("colspan");z+=null!=ha?parseInt(ha):1}L=M.insertRow(L);for(ca=0;ca<z;ca++)mxUtils.br(L.insertCell(-1));return L.cells[0]};Graph.prototype.deleteRow=function(z,L){z.tBodies[0].deleteRow(L)};
+(S=ca[ca.length-1]);L.remove(S);z=0;var ia=this.getCellGeometry(S);null!=ia&&(z=ia.height);var oa=this.getCellGeometry(M);null!=oa&&(oa=oa.clone(),oa.height-=z,L.setGeometry(M,oa))}}finally{L.endUpdate()}};Graph.prototype.insertRow=function(z,L){for(var M=z.tBodies[0],S=M.rows[0].cells,ca=z=0;ca<S.length;ca++){var ia=S[ca].getAttribute("colspan");z+=null!=ia?parseInt(ia):1}L=M.insertRow(L);for(ca=0;ca<z;ca++)mxUtils.br(L.insertCell(-1));return L.cells[0]};Graph.prototype.deleteRow=function(z,L){z.tBodies[0].deleteRow(L)};
Graph.prototype.insertColumn=function(z,L){var M=z.tHead;if(null!=M)for(var S=0;S<M.rows.length;S++){var ca=document.createElement("th");M.rows[S].appendChild(ca);mxUtils.br(ca)}z=z.tBodies[0];for(M=0;M<z.rows.length;M++)S=z.rows[M].insertCell(L),mxUtils.br(S);return z.rows[0].cells[0<=L?L:z.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(z,L){if(0<=L){z=z.tBodies[0].rows;for(var M=0;M<z.length;M++)z[M].cells.length>L&&z[M].deleteCell(L)}};Graph.prototype.pasteHtmlAtCaret=function(z){if(window.getSelection){var L=
-window.getSelection();if(L.getRangeAt&&L.rangeCount){L=L.getRangeAt(0);L.deleteContents();var M=document.createElement("div");M.innerHTML=z;z=document.createDocumentFragment();for(var S;S=M.firstChild;)lastNode=z.appendChild(S);L.insertNode(z)}}else(L=document.selection)&&"Control"!=L.type&&L.createRange().pasteHTML(z)};Graph.prototype.createLinkForHint=function(z,L){function M(ca,ha){ca.length>ha&&(ca=ca.substring(0,Math.round(ha/2))+"..."+ca.substring(ca.length-Math.round(ha/4)));return ca}z=null!=
+window.getSelection();if(L.getRangeAt&&L.rangeCount){L=L.getRangeAt(0);L.deleteContents();var M=document.createElement("div");M.innerHTML=z;z=document.createDocumentFragment();for(var S;S=M.firstChild;)lastNode=z.appendChild(S);L.insertNode(z)}}else(L=document.selection)&&"Control"!=L.type&&L.createRange().pasteHTML(z)};Graph.prototype.createLinkForHint=function(z,L){function M(ca,ia){ca.length>ia&&(ca=ca.substring(0,Math.round(ia/2))+"..."+ca.substring(ca.length-Math.round(ia/4)));return ca}z=null!=
z?z:"javascript:void(0);";if(null==L||0==L.length)L=this.isCustomLink(z)?this.getLinkTitle(z):z;var S=document.createElement("a");S.setAttribute("rel",this.linkRelation);S.setAttribute("href",this.getAbsoluteUrl(z));S.setAttribute("title",M(this.isCustomLink(z)?this.getLinkTitle(z):z,80));null!=this.linkTarget&&S.setAttribute("target",this.linkTarget);mxUtils.write(S,M(L,40));this.isCustomLink(z)&&mxEvent.addListener(S,"click",mxUtils.bind(this,function(ca){this.customLinkClicked(z);mxEvent.consume(ca)}));
-return S};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(ha,oa){this.popupMenuHandler.hideMenu()});var z=this.updateMouseEvent;this.updateMouseEvent=function(ha){ha=z.apply(this,arguments);if(mxEvent.isTouchEvent(ha.getEvent())&&null==ha.getState()){var oa=this.getCellAt(ha.graphX,ha.graphY);null!=oa&&this.isSwimlane(oa)&&this.hitsSwimlaneContent(oa,ha.graphX,ha.graphY)||
-(ha.state=this.view.getState(oa),null!=ha.state&&null!=ha.state.shape&&(this.container.style.cursor=ha.state.shape.node.style.cursor))}null==ha.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return ha};var L=!1,M=!1,S=!1,ca=this.fireMouseEvent;this.fireMouseEvent=function(ha,oa,ra){ha==mxEvent.MOUSE_DOWN&&(oa=this.updateMouseEvent(oa),L=this.isCellSelected(oa.getCell()),M=this.isSelectionEmpty(),S=this.popupMenuHandler.isMenuShowing());ca.apply(this,arguments)};this.popupMenuHandler.mouseUp=
-mxUtils.bind(this,function(ha,oa){var ra=mxEvent.isMouseEvent(oa.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==oa.getState()||!oa.isSource(oa.getState().control))&&(this.popupMenuHandler.popupTrigger||!S&&!ra&&(M&&null==oa.getCell()&&this.isSelectionEmpty()||L&&this.isCellSelected(oa.getCell())));ra=!L||ra?null:mxUtils.bind(this,function(qa){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var xa=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(oa.getX()+
-xa.x+1,oa.getY()+xa.y+1,qa,oa.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[ha,oa,ra])})};mxCellEditor.prototype.isContentEditing=function(){var z=this.graph.view.getState(this.editingCell);return null!=z&&1==z.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var z="";window.getSelection?z=window.getSelection():
+return S};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(ia,oa){this.popupMenuHandler.hideMenu()});var z=this.updateMouseEvent;this.updateMouseEvent=function(ia){ia=z.apply(this,arguments);if(mxEvent.isTouchEvent(ia.getEvent())&&null==ia.getState()){var oa=this.getCellAt(ia.graphX,ia.graphY);null!=oa&&this.isSwimlane(oa)&&this.hitsSwimlaneContent(oa,ia.graphX,ia.graphY)||
+(ia.state=this.view.getState(oa),null!=ia.state&&null!=ia.state.shape&&(this.container.style.cursor=ia.state.shape.node.style.cursor))}null==ia.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return ia};var L=!1,M=!1,S=!1,ca=this.fireMouseEvent;this.fireMouseEvent=function(ia,oa,ra){ia==mxEvent.MOUSE_DOWN&&(oa=this.updateMouseEvent(oa),L=this.isCellSelected(oa.getCell()),M=this.isSelectionEmpty(),S=this.popupMenuHandler.isMenuShowing());ca.apply(this,arguments)};this.popupMenuHandler.mouseUp=
+mxUtils.bind(this,function(ia,oa){var ra=mxEvent.isMouseEvent(oa.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==oa.getState()||!oa.isSource(oa.getState().control))&&(this.popupMenuHandler.popupTrigger||!S&&!ra&&(M&&null==oa.getCell()&&this.isSelectionEmpty()||L&&this.isCellSelected(oa.getCell())));ra=!L||ra?null:mxUtils.bind(this,function(qa){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var xa=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(oa.getX()+
+xa.x+1,oa.getY()+xa.y+1,qa,oa.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[ia,oa,ra])})};mxCellEditor.prototype.isContentEditing=function(){var z=this.graph.view.getState(this.editingCell);return null!=z&&1==z.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var z="";window.getSelection?z=window.getSelection():
document.getSelection?z=document.getSelection():document.selection&&(z=document.selection.createRange().text);return""!=z};mxCellEditor.prototype.insertTab=function(z){var L=this.textarea.ownerDocument.defaultView.getSelection(),M=L.getRangeAt(0),S="\t";if(null!=z)for(S="";0<z;)S+=" ",z--;z=document.createElement("span");z.style.whiteSpace="pre";z.appendChild(document.createTextNode(S));M.insertNode(z);M.setStartAfter(z);M.setEndAfter(z);L.removeAllRanges();L.addRange(M)};mxCellEditor.prototype.alignText=
function(z,L){var M=null!=L&&mxEvent.isShiftDown(L);if(M||null!=window.getSelection&&null!=window.getSelection().containsNode){var S=!0;this.graph.processElements(this.textarea,function(ca){M||window.getSelection().containsNode(ca,!0)?(ca.removeAttribute("align"),ca.style.textAlign=null):S=!1});S&&this.graph.cellEditor.setAlign(z)}document.execCommand("justify"+z.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var z=window.getSelection();if(z.getRangeAt&&
z.rangeCount){for(var L=[],M=0,S=z.rangeCount;M<S;++M)L.push(z.getRangeAt(M));return L}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(z){try{if(z)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var L=0,M=z.length;L<M;++L)sel.addRange(z[L])}else document.selection&&z.select&&z.select()}catch(S){}};var C=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
function(z){null!=z.text&&(z.text.replaceLinefeeds="0"!=mxUtils.getValue(z.style,"nl2Br","1"));C.apply(this,arguments)};var H=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(z,L){this.isKeepFocusEvent(z)||!mxEvent.isAltDown(z.getEvent())?H.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(z){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var G=mxCellEditor.prototype.startEditing;
mxCellEditor.prototype.startEditing=function(z,L){z=this.graph.getStartEditingCell(z,L);G.apply(this,arguments);var M=this.graph.view.getState(z);this.textarea.className=null!=M&&1==M.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(z);M=this.graph.getModel().getParent(z);var S=this.graph.getCellGeometry(z);if(this.graph.getModel().isEdge(M)&&null!=S&&S.relative||this.graph.getModel().isEdge(z))this.textarea.style.outline=
-mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var aa=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(z){function L(ca,ha){ha.originalNode=ca;ca=ca.firstChild;for(var oa=ha.firstChild;null!=ca&&null!=oa;)L(ca,oa),ca=ca.nextSibling,oa=oa.nextSibling;return ha}function M(ca,ha){if(null!=ca)if(ha.originalNode!=ca)S(ca);else for(ca=ca.firstChild,ha=ha.firstChild;null!=ca;){var oa=ca.nextSibling;null==ha?S(ca):(M(ca,ha),
-ha=ha.nextSibling);ca=oa}}function S(ca){for(var ha=ca.firstChild;null!=ha;){var oa=ha.nextSibling;S(ha);ha=oa}1==ca.nodeType&&("BR"===ca.nodeName||null!=ca.firstChild)||3==ca.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(ca)).length?(3==ca.nodeType&&mxUtils.setTextContent(ca,mxUtils.getTextContent(ca).replace(/\n|\r/g,"")),1==ca.nodeType&&(ca.removeAttribute("style"),ca.removeAttribute("class"),ca.removeAttribute("width"),ca.removeAttribute("cellpadding"),ca.removeAttribute("cellspacing"),ca.removeAttribute("border"))):
-ca.parentNode.removeChild(ca)}aa.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(ca){var ha=L(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?M(this.textarea,ha):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=
+mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var aa=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(z){function L(ca,ia){ia.originalNode=ca;ca=ca.firstChild;for(var oa=ia.firstChild;null!=ca&&null!=oa;)L(ca,oa),ca=ca.nextSibling,oa=oa.nextSibling;return ia}function M(ca,ia){if(null!=ca)if(ia.originalNode!=ca)S(ca);else for(ca=ca.firstChild,ia=ia.firstChild;null!=ca;){var oa=ca.nextSibling;null==ia?S(ca):(M(ca,ia),
+ia=ia.nextSibling);ca=oa}}function S(ca){for(var ia=ca.firstChild;null!=ia;){var oa=ia.nextSibling;S(ia);ia=oa}1==ca.nodeType&&("BR"===ca.nodeName||null!=ca.firstChild)||3==ca.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(ca)).length?(3==ca.nodeType&&mxUtils.setTextContent(ca,mxUtils.getTextContent(ca).replace(/\n|\r/g,"")),1==ca.nodeType&&(ca.removeAttribute("style"),ca.removeAttribute("class"),ca.removeAttribute("width"),ca.removeAttribute("cellpadding"),ca.removeAttribute("cellspacing"),ca.removeAttribute("border"))):
+ca.parentNode.removeChild(ca)}aa.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(ca){var ia=L(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?M(this.textarea,ia):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=
function(){var z=this.graph.view.getState(this.editingCell);if(null!=z){var L=null!=z&&"0"!=mxUtils.getValue(z.style,"nl2Br","1"),M=this.saveSelection();if(this.codeViewMode){ra=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<ra.length&&"\n"==ra.charAt(ra.length-1)&&(ra=ra.substring(0,ra.length-1));ra=this.graph.sanitizeHtml(L?ra.replace(/\n/g,"<br/>"):ra,!0);this.textarea.className="mxCellEditor geContentEditable";qa=mxUtils.getValue(z.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE);
-L=mxUtils.getValue(z.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var S=mxUtils.getValue(z.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),ca=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,ha=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,oa=[];(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&
-oa.push("underline");(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&oa.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(qa*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(qa)+"px";this.textarea.style.textDecoration=oa.join(" ");this.textarea.style.fontWeight=ca?"bold":"normal";this.textarea.style.fontStyle=ha?"italic":"";this.textarea.style.fontFamily=
+L=mxUtils.getValue(z.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var S=mxUtils.getValue(z.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),ca=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,ia=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,oa=[];(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&
+oa.push("underline");(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&oa.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(qa*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(qa)+"px";this.textarea.style.textDecoration=oa.join(" ");this.textarea.style.fontWeight=ca?"bold":"normal";this.textarea.style.fontStyle=ia?"italic":"";this.textarea.style.fontFamily=
L;this.textarea.style.textAlign=S;this.textarea.style.padding="0px";this.textarea.innerHTML!=ra&&(this.textarea.innerHTML=ra,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerText="");var ra=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(ra=mxUtils.replaceTrailingNewlines(ra,
"<div><br></div>"));ra=this.graph.sanitizeHtml(L?ra.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):ra,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var qa=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(qa*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(qa)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=
mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.width="";this.textarea.style.padding="2px";this.textarea.innerHTML!=ra&&(this.textarea.innerHTML=ra);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=M;this.resize()}};var da=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(z,L){if(null!=this.textarea)if(z=this.graph.getView().getState(this.editingCell),
@@ -2595,26 +2596,26 @@ mxUtils.getValue(z.style,mxConstants.STYLE_HORIZONTAL,1)||(L=mxUtils.getValue(z.
mxConstants.STYLE_STROKECOLOR,null));L==mxConstants.NONE&&(L=null);return L};mxCellEditor.prototype.getMinimumSize=function(z){var L=this.graph.getView().scale;return new mxRectangle(0,0,null==z.text?30:z.text.size*L+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(z,L){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(L.getEvent)};mxGraphView.prototype.formatUnitText=function(z){return z?
e(z,this.unit):z};mxGraphHandler.prototype.updateHint=function(z){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var L=this.graph.view.translate,M=this.graph.view.scale;z=this.roundLength((this.bounds.x+this.currentDx)/M-L.x);L=this.roundLength((this.bounds.y+this.currentDy)/M-L.y);M=this.graph.view.unit;this.hint.innerHTML=e(z,M)+", "+e(L,M);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-
this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var pa=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(z,L){pa.apply(this,arguments);var M=this.graph.getCellStyle(z);if(null==M.childLayout){var S=this.graph.model.getParent(z),ca=null!=S?this.graph.getCellGeometry(S):
-null;if(null!=ca&&(M=this.graph.getCellStyle(S),"stackLayout"==M.childLayout)){var ha=parseFloat(mxUtils.getValue(M,"stackBorder",mxStackLayout.prototype.border));M="1"==mxUtils.getValue(M,"horizontalStack","1");var oa=this.graph.getActualStartSize(S);ca=ca.clone();M?ca.height=L.height+oa.y+oa.height+2*ha:ca.width=L.width+oa.x+oa.width+2*ha;this.graph.model.setGeometry(S,ca)}}};var O=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=
-function(){function z(ra){M.get(ra)||(M.put(ra,!0),ca.push(ra))}for(var L=O.apply(this,arguments),M=new mxDictionary,S=this.graph.model,ca=[],ha=0;ha<L.length;ha++){var oa=L[ha];this.graph.isTableCell(oa)?z(S.getParent(S.getParent(oa))):this.graph.isTableRow(oa)&&z(S.getParent(oa));z(oa)}return ca};var X=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(z){var L=X.apply(this,arguments);L.stroke="#C0C0C0";L.strokewidth=1;return L};var ea=
+null;if(null!=ca&&(M=this.graph.getCellStyle(S),"stackLayout"==M.childLayout)){var ia=parseFloat(mxUtils.getValue(M,"stackBorder",mxStackLayout.prototype.border));M="1"==mxUtils.getValue(M,"horizontalStack","1");var oa=this.graph.getActualStartSize(S);ca=ca.clone();M?ca.height=L.height+oa.y+oa.height+2*ia:ca.width=L.width+oa.x+oa.width+2*ia;this.graph.model.setGeometry(S,ca)}}};var O=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=
+function(){function z(ra){M.get(ra)||(M.put(ra,!0),ca.push(ra))}for(var L=O.apply(this,arguments),M=new mxDictionary,S=this.graph.model,ca=[],ia=0;ia<L.length;ia++){var oa=L[ia];this.graph.isTableCell(oa)?z(S.getParent(S.getParent(oa))):this.graph.isTableRow(oa)&&z(S.getParent(oa));z(oa)}return ca};var X=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(z){var L=X.apply(this,arguments);L.stroke="#C0C0C0";L.strokewidth=1;return L};var ea=
mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(z){var L=ea.apply(this,arguments);L.stroke="#C0C0C0";L.strokewidth=1;return L};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var z=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+z.x/2,this.bounds.y+this.rotationHandleVSpacing-z.y/2)};mxVertexHandler.prototype.isRecursiveResize=
function(z,L){return this.graph.isRecursiveVertexResize(z)&&!mxEvent.isAltDown(L.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(z,L){return mxEvent.isControlDown(L.getEvent())||mxEvent.isMetaDown(L.getEvent())};var ka=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return ka.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=
function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):this.bounds};var ja=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return ja.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var U=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=
function(z){return z.tableHandle||U.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var z=0;this.graph.isTableRow(this.state.cell)?z=1:this.graph.isTableCell(this.state.cell)&&(z=2);return z};var J=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return J.apply(this,arguments).grow(-this.getSelectionBorderInset())};
-var V=null,P=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==V&&(V=mxCellRenderer.defaultShapes.tableLine);var z=P.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var L=function(Ta,Ma,ua){for(var ya=[],Na=0;Na<Ta.length;Na++){var Fa=Ta[Na];ya.push(null==Fa?null:new mxPoint((qa+Fa.x+Ma)*ha,(xa+Fa.y+ua)*ha))}return ya},M=this,S=this.graph,ca=S.model,ha=S.view.scale,oa=this.state,ra=this.selectionBorder,qa=this.state.origin.x+
+var V=null,P=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==V&&(V=mxCellRenderer.defaultShapes.tableLine);var z=P.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var L=function(Ta,Ma,ua){for(var ya=[],Na=0;Na<Ta.length;Na++){var Fa=Ta[Na];ya.push(null==Fa?null:new mxPoint((qa+Fa.x+Ma)*ia,(xa+Fa.y+ua)*ia))}return ya},M=this,S=this.graph,ca=S.model,ia=S.view.scale,oa=this.state,ra=this.selectionBorder,qa=this.state.origin.x+
S.view.translate.x,xa=this.state.origin.y+S.view.translate.y;null==z&&(z=[]);var Ga=S.view.getCellStates(ca.getChildCells(this.state.cell,!0));if(0<Ga.length){var La=ca.getChildCells(Ga[0].cell,!0),Pa=S.getTableLines(this.state.cell,!1,!0),Oa=S.getTableLines(this.state.cell,!0,!1);for(ca=0;ca<Ga.length;ca++)mxUtils.bind(this,function(Ta){var Ma=Ga[Ta],ua=Ta<Ga.length-1?Ga[Ta+1]:null;ua=null!=ua?S.getCellGeometry(ua.cell):null;var ya=null!=ua&&null!=ua.alternateBounds?ua.alternateBounds:ua;ua=null!=
Oa[Ta]?new V(Oa[Ta],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);ua.isDashed=ra.isDashed;ua.svgStrokeTolerance++;Ma=new mxHandle(Ma,"row-resize",null,ua);Ma.tableHandle=!0;var Na=0;Ma.shape.node.parentNode.insertBefore(Ma.shape.node,Ma.shape.node.parentNode.firstChild);Ma.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Na?mxConstants.NONE:ra.stroke;if(this.shape.constructor==V)this.shape.line=L(Oa[Ta],0,Na),this.shape.updateBoundsFromLine();else{var Ra=S.getActualStartSize(oa.cell,
-!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Na*ha;this.shape.bounds.x=oa.x+(Ta==Ga.length-1?0:Ra.x*ha);this.shape.bounds.width=oa.width-(Ta==Ga.length-1?0:Ra.width+Ra.x+ha)}this.shape.redraw()}};var Fa=!1;Ma.setPosition=function(Ra,db,Va){Na=Math.max(Graph.minTableRowHeight-Ra.height,db.y-Ra.y-Ra.height);Fa=mxEvent.isShiftDown(Va.getEvent());null!=ya&&Fa&&(Na=Math.min(Na,ya.height-Graph.minTableRowHeight))};Ma.execute=function(Ra){if(0!=Na)S.setTableRowHeight(this.state.cell,
-Na,!Fa);else if(!M.blockDelayedSelection){var db=S.getCellAt(Ra.getGraphX(),Ra.getGraphY())||oa.cell;S.graphHandler.selectCellForEvent(db,Ra)}Na=0};Ma.reset=function(){Na=0};z.push(Ma)})(ca);for(ca=0;ca<La.length;ca++)mxUtils.bind(this,function(Ta){var Ma=S.view.getState(La[Ta]),ua=S.getCellGeometry(La[Ta]),ya=null!=ua.alternateBounds?ua.alternateBounds:ua;null==Ma&&(Ma=new mxCellState(S.view,La[Ta],S.getCellStyle(La[Ta])),Ma.x=oa.x+ua.x*ha,Ma.y=oa.y+ua.y*ha,Ma.width=ya.width*ha,Ma.height=ya.height*
-ha,Ma.updateCachedBounds());ua=Ta<La.length-1?La[Ta+1]:null;ua=null!=ua?S.getCellGeometry(ua):null;var Na=null!=ua&&null!=ua.alternateBounds?ua.alternateBounds:ua;ua=null!=Pa[Ta]?new V(Pa[Ta],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);ua.isDashed=ra.isDashed;ua.svgStrokeTolerance++;Ma=new mxHandle(Ma,"col-resize",null,ua);Ma.tableHandle=!0;var Fa=0;Ma.shape.node.parentNode.insertBefore(Ma.shape.node,Ma.shape.node.parentNode.firstChild);Ma.redraw=function(){if(null!=this.shape){this.shape.stroke=
-0==Fa?mxConstants.NONE:ra.stroke;if(this.shape.constructor==V)this.shape.line=L(Pa[Ta],Fa,0),this.shape.updateBoundsFromLine();else{var db=S.getActualStartSize(oa.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(ya.width+Fa)*ha;this.shape.bounds.y=oa.y+(Ta==La.length-1?0:db.y*ha);this.shape.bounds.height=oa.height-(Ta==La.length-1?0:(db.height+db.y)*ha)}this.shape.redraw()}};var Ra=!1;Ma.setPosition=function(db,Va,fb){Fa=Math.max(Graph.minTableColumnWidth-ya.width,Va.x-db.x-ya.width);
+!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Na*ia;this.shape.bounds.x=oa.x+(Ta==Ga.length-1?0:Ra.x*ia);this.shape.bounds.width=oa.width-(Ta==Ga.length-1?0:Ra.width+Ra.x+ia)}this.shape.redraw()}};var Fa=!1;Ma.setPosition=function(Ra,db,Va){Na=Math.max(Graph.minTableRowHeight-Ra.height,db.y-Ra.y-Ra.height);Fa=mxEvent.isShiftDown(Va.getEvent());null!=ya&&Fa&&(Na=Math.min(Na,ya.height-Graph.minTableRowHeight))};Ma.execute=function(Ra){if(0!=Na)S.setTableRowHeight(this.state.cell,
+Na,!Fa);else if(!M.blockDelayedSelection){var db=S.getCellAt(Ra.getGraphX(),Ra.getGraphY())||oa.cell;S.graphHandler.selectCellForEvent(db,Ra)}Na=0};Ma.reset=function(){Na=0};z.push(Ma)})(ca);for(ca=0;ca<La.length;ca++)mxUtils.bind(this,function(Ta){var Ma=S.view.getState(La[Ta]),ua=S.getCellGeometry(La[Ta]),ya=null!=ua.alternateBounds?ua.alternateBounds:ua;null==Ma&&(Ma=new mxCellState(S.view,La[Ta],S.getCellStyle(La[Ta])),Ma.x=oa.x+ua.x*ia,Ma.y=oa.y+ua.y*ia,Ma.width=ya.width*ia,Ma.height=ya.height*
+ia,Ma.updateCachedBounds());ua=Ta<La.length-1?La[Ta+1]:null;ua=null!=ua?S.getCellGeometry(ua):null;var Na=null!=ua&&null!=ua.alternateBounds?ua.alternateBounds:ua;ua=null!=Pa[Ta]?new V(Pa[Ta],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);ua.isDashed=ra.isDashed;ua.svgStrokeTolerance++;Ma=new mxHandle(Ma,"col-resize",null,ua);Ma.tableHandle=!0;var Fa=0;Ma.shape.node.parentNode.insertBefore(Ma.shape.node,Ma.shape.node.parentNode.firstChild);Ma.redraw=function(){if(null!=this.shape){this.shape.stroke=
+0==Fa?mxConstants.NONE:ra.stroke;if(this.shape.constructor==V)this.shape.line=L(Pa[Ta],Fa,0),this.shape.updateBoundsFromLine();else{var db=S.getActualStartSize(oa.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(ya.width+Fa)*ia;this.shape.bounds.y=oa.y+(Ta==La.length-1?0:db.y*ia);this.shape.bounds.height=oa.height-(Ta==La.length-1?0:(db.height+db.y)*ia)}this.shape.redraw()}};var Ra=!1;Ma.setPosition=function(db,Va,fb){Fa=Math.max(Graph.minTableColumnWidth-ya.width,Va.x-db.x-ya.width);
Ra=mxEvent.isShiftDown(fb.getEvent());null==Na||Ra||(Fa=Math.min(Fa,Na.width-Graph.minTableColumnWidth))};Ma.execute=function(db){if(0!=Fa)S.setTableColumnWidth(this.state.cell,Fa,Ra);else if(!M.blockDelayedSelection){var Va=S.getCellAt(db.getGraphX(),db.getGraphY())||oa.cell;S.graphHandler.selectCellForEvent(Va,db)}Fa=0};Ma.positionChanged=function(){};Ma.reset=function(){Fa=0};z.push(Ma)})(ca)}}return null!=z?z.reverse():null};var R=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=
function(z){R.apply(this,arguments);if(null!=this.moveHandles)for(var L=0;L<this.moveHandles.length;L++)this.moveHandles[L].style.visibility=z?"":"hidden";if(null!=this.cornerHandles)for(L=0;L<this.cornerHandles.length;L++)this.cornerHandles[L].node.style.visibility=z?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var z=this.graph.model;if(null!=this.moveHandles){for(var L=0;L<this.moveHandles.length;L++)this.moveHandles[L].parentNode.removeChild(this.moveHandles[L]);this.moveHandles=
null}this.moveHandles=[];for(L=0;L<z.getChildCount(this.state.cell);L++)mxUtils.bind(this,function(M){if(null!=M&&z.isVertex(M.cell)){var S=mxUtils.createImage(Editor.rowMoveImage);S.style.position="absolute";S.style.cursor="pointer";S.style.width="7px";S.style.height="4px";S.style.padding="4px 2px 4px 2px";S.rowState=M;mxEvent.addGestureListeners(S,mxUtils.bind(this,function(ca){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(ca)&&this.graph.isCellSelected(M.cell)||
this.graph.selectCellForEvent(M.cell,ca);mxEvent.isPopupTrigger(ca)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(ca),mxEvent.getClientY(ca),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(ca),this.graph.isMouseDown=!0);mxEvent.consume(ca)}),null,mxUtils.bind(this,function(ca){mxEvent.isPopupTrigger(ca)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(ca),mxEvent.getClientY(ca),M.cell,ca),mxEvent.consume(ca))}));
-this.moveHandles.push(S);this.graph.container.appendChild(S)}})(this.graph.view.getState(z.getChildAt(this.state.cell,L)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var z=0;z<this.customHandles.length;z++)this.customHandles[z].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ia=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var z=new mxPoint(0,
-0),L=this.tolerance,M=this.state.style.shape;null==mxCellRenderer.defaultShapes[M]&&mxStencilRegistry.getStencil(M);M=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!M&&null!=this.customHandles)for(var S=0;S<this.customHandles.length;S++)if(null!=this.customHandles[S].shape&&null!=this.customHandles[S].shape.bounds){var ca=this.customHandles[S].shape.bounds,ha=ca.getCenterX(),oa=ca.getCenterY();if(Math.abs(this.state.x-ha)<ca.width/2||Math.abs(this.state.y-
-oa)<ca.height/2||Math.abs(this.state.x+this.state.width-ha)<ca.width/2||Math.abs(this.state.y+this.state.height-oa)<ca.height/2){M=!0;break}}M&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(L/=2,this.graph.isTable(this.state.cell)&&(L+=7),z.x=this.sizers[0].bounds.width+L,z.y=this.sizers[0].bounds.height+L):z=ia.apply(this,arguments);return z};mxVertexHandler.prototype.updateHint=function(z){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));
+this.moveHandles.push(S);this.graph.container.appendChild(S)}})(this.graph.view.getState(z.getChildAt(this.state.cell,L)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var z=0;z<this.customHandles.length;z++)this.customHandles[z].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ha=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var z=new mxPoint(0,
+0),L=this.tolerance,M=this.state.style.shape;null==mxCellRenderer.defaultShapes[M]&&mxStencilRegistry.getStencil(M);M=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!M&&null!=this.customHandles)for(var S=0;S<this.customHandles.length;S++)if(null!=this.customHandles[S].shape&&null!=this.customHandles[S].shape.bounds){var ca=this.customHandles[S].shape.bounds,ia=ca.getCenterX(),oa=ca.getCenterY();if(Math.abs(this.state.x-ia)<ca.width/2||Math.abs(this.state.y-
+oa)<ca.height/2||Math.abs(this.state.x+this.state.width-ia)<ca.width/2||Math.abs(this.state.y+this.state.height-oa)<ca.height/2){M=!0;break}}M&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(L/=2,this.graph.isTable(this.state.cell)&&(L+=7),z.x=this.sizers[0].bounds.width+L,z.y=this.sizers[0].bounds.height+L):z=ha.apply(this,arguments);return z};mxVertexHandler.prototype.updateHint=function(z){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));
if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{z=this.state.view.scale;var L=this.state.view.unit;this.hint.innerHTML=e(this.roundLength(this.bounds.width/z),L)+" x "+e(this.roundLength(this.bounds.height/z),L)}z=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==z&&(z=this.bounds);this.hint.style.left=z.x+Math.round((z.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=
z.y+z.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var la=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(z,L){la.apply(this,arguments);null!=this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display=
"none")};var ta=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(z,L){ta.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(z,L){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var M=this.graph.view.translate,S=this.graph.view.scale,ca=this.roundLength(L.x/S-M.x);M=this.roundLength(L.y/S-M.y);S=this.graph.view.unit;this.hint.innerHTML=
@@ -2631,10 +2632,10 @@ HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangl
!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(z){return!mxEvent.isShiftDown(z.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=function(z){return!mxEvent.isShiftDown(z.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=
12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(z){return mxEvent.isMouseEvent(z.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(z){var L=z.getEvent();return null==z.getState()&&!mxEvent.isMouseEvent(L)||mxEvent.isPopupTrigger(L)&&(null==z.getState()||mxEvent.isControlDown(L)||mxEvent.isShiftDown(L))};var u=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
function(z,L){u.apply(this,arguments);mxEvent.isTouchEvent(L.getEvent())&&this.graph.isCellSelected(L.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(z){var L=z.getEvent();return mxEvent.isLeftMouseButton(L)&&(this.useLeftButtonForPanning&&null==z.getState()||mxEvent.isControlDown(L)&&!mxEvent.isShiftDown(L))||this.usePopupTrigger&&mxEvent.isPopupTrigger(L)};mxRubberband.prototype.isSpaceEvent=function(z){return this.graph.isEnabled()&&
-!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(z.getEvent())||mxEvent.isMetaDown(z.getEvent()))&&mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(z,L){if(this.cancelled)this.cancelled=!1,L.consume();else{var M=null!=this.div&&"none"!=this.div.style.display,S=null,ca=null,ha=z=null;
-null!=this.first&&null!=this.currentX&&null!=this.currentY&&(S=this.first.x,ca=this.first.y,z=(this.currentX-S)/this.graph.view.scale,ha=(this.currentY-ca)/this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(z=this.graph.snap(z),ha=this.graph.snap(ha),this.graph.isGridEnabled()||(Math.abs(z)<this.graph.tolerance&&(z=0),Math.abs(ha)<this.graph.tolerance&&(ha=0))));this.reset();if(M){if(this.isSpaceEvent(L)){this.graph.model.beginUpdate();try{var oa=this.graph.getCellsBeyond(S,ca,this.graph.getDefaultParent(),
-!0,!0);for(M=0;M<oa.length;M++)if(this.graph.isCellMovable(oa[M])){var ra=this.graph.view.getState(oa[M]),qa=this.graph.getCellGeometry(oa[M]);null!=ra&&null!=qa&&(qa=qa.clone(),qa.translate(z,ha),this.graph.model.setGeometry(oa[M],qa))}}finally{this.graph.model.endUpdate()}}else oa=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(oa,L.getEvent());L.consume()}}};mxRubberband.prototype.mouseMove=function(z,L){if(!L.isConsumed()&&null!=this.first){var M=mxUtils.getScrollOrigin(this.graph.container);
-z=mxUtils.getOffset(this.graph.container);M.x-=z.x;M.y-=z.y;z=L.getX()+M.x;M=L.getY()+M.y;var S=this.first.x-z,ca=this.first.y-M,ha=this.graph.tolerance;if(null!=this.div||Math.abs(S)>ha||Math.abs(ca)>ha)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(z,M),this.isSpaceEvent(L)?(z=this.x+this.width,M=this.y+this.height,S=this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(this.width=this.graph.snap(this.width/S)*S,this.height=this.graph.snap(this.height/S)*S,
+!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(z.getEvent())||mxEvent.isMetaDown(z.getEvent()))&&mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(z,L){if(this.cancelled)this.cancelled=!1,L.consume();else{var M=null!=this.div&&"none"!=this.div.style.display,S=null,ca=null,ia=z=null;
+null!=this.first&&null!=this.currentX&&null!=this.currentY&&(S=this.first.x,ca=this.first.y,z=(this.currentX-S)/this.graph.view.scale,ia=(this.currentY-ca)/this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(z=this.graph.snap(z),ia=this.graph.snap(ia),this.graph.isGridEnabled()||(Math.abs(z)<this.graph.tolerance&&(z=0),Math.abs(ia)<this.graph.tolerance&&(ia=0))));this.reset();if(M){if(this.isSpaceEvent(L)){this.graph.model.beginUpdate();try{var oa=this.graph.getCellsBeyond(S,ca,this.graph.getDefaultParent(),
+!0,!0);for(M=0;M<oa.length;M++)if(this.graph.isCellMovable(oa[M])){var ra=this.graph.view.getState(oa[M]),qa=this.graph.getCellGeometry(oa[M]);null!=ra&&null!=qa&&(qa=qa.clone(),qa.translate(z,ia),this.graph.model.setGeometry(oa[M],qa))}}finally{this.graph.model.endUpdate()}}else oa=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(oa,L.getEvent());L.consume()}}};mxRubberband.prototype.mouseMove=function(z,L){if(!L.isConsumed()&&null!=this.first){var M=mxUtils.getScrollOrigin(this.graph.container);
+z=mxUtils.getOffset(this.graph.container);M.x-=z.x;M.y-=z.y;z=L.getX()+M.x;M=L.getY()+M.y;var S=this.first.x-z,ca=this.first.y-M,ia=this.graph.tolerance;if(null!=this.div||Math.abs(S)>ia||Math.abs(ca)>ia)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(z,M),this.isSpaceEvent(L)?(z=this.x+this.width,M=this.y+this.height,S=this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(this.width=this.graph.snap(this.width/S)*S,this.height=this.graph.snap(this.height/S)*S,
this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=z-this.width),this.y<this.first.y&&(this.y=M-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?
"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle=
"",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),L.consume()}};var I=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);I.apply(this,arguments)};var N=(new Date).getTime(),W=0,T=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(z,L,M,S){T.apply(this,arguments);M!=this.currentTerminalState?
@@ -2648,11 +2649,11 @@ arguments)};mxVertexHandler.prototype.rotateClick=function(){var z=mxUtils.getVa
var Da=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(z,L){Da.apply(this,arguments);null!=this.graph.graphHandler.first&&(null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display="none"),null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none"))};var Aa=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(z,L){Aa.apply(this,arguments);null!=this.rotationShape&&null!=
this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="");this.blockDelayedSelection=null};var za=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){za.apply(this,arguments);var z=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));if(this.graph.isTable(this.state.cell))this.refreshMoveHandles();
else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=[];for(var L=0;4>L;L++){var M=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);M.dialect=mxConstants.DIALECT_SVG;M.init(this.graph.view.getOverlayPane());this.cornerHandles.push(M)}}var S=mxUtils.bind(this,function(){null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<
-this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this,function(ca,ha){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));S()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(ca,ha){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,
+this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this,function(ca,ia){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));S()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(ca,ia){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,
this.editingHandler);L=this.graph.getLinkForCell(this.state.cell);M=this.graph.getLinksForState(this.state);this.updateLinkHint(L,M);if(null!=L||null!=M&&0<M.length)z=!0;z&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(z,L){try{if(null==z&&(null==L||0==L.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=z||null!=L&&0<L.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding=
"6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerText="";if(null!=z&&(this.linkHint.appendChild(this.graph.createLinkForHint(z)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var M=document.createElement("img");M.setAttribute("src",Editor.editImage);M.setAttribute("title",
-mxResources.get("editLink"));M.setAttribute("width","11");M.setAttribute("height","11");M.style.marginLeft="10px";M.style.marginBottom="-1px";M.style.cursor="pointer";Editor.isDarkMode()&&(M.style.filter="invert(100%)");this.linkHint.appendChild(M);mxEvent.addListener(M,"click",mxUtils.bind(this,function(ha){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(ha)}));var S=M.cloneNode(!0);S.setAttribute("src",Editor.trashImage);S.setAttribute("title",mxResources.get("removeIt",
-[mxResources.get("link")]));S.style.marginLeft="4px";this.linkHint.appendChild(S);mxEvent.addListener(S,"click",mxUtils.bind(this,function(ha){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(ha)}))}if(null!=L)for(M=0;M<L.length;M++){var ca=document.createElement("div");ca.style.marginTop=null!=z||0<M?"6px":"0px";ca.appendChild(this.graph.createLinkForHint(L[M].getAttribute("href"),mxUtils.getTextContent(L[M])));this.linkHint.appendChild(ca)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(ha){}};
+mxResources.get("editLink"));M.setAttribute("width","11");M.setAttribute("height","11");M.style.marginLeft="10px";M.style.marginBottom="-1px";M.style.cursor="pointer";Editor.isDarkMode()&&(M.style.filter="invert(100%)");this.linkHint.appendChild(M);mxEvent.addListener(M,"click",mxUtils.bind(this,function(ia){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(ia)}));var S=M.cloneNode(!0);S.setAttribute("src",Editor.trashImage);S.setAttribute("title",mxResources.get("removeIt",
+[mxResources.get("link")]));S.style.marginLeft="4px";this.linkHint.appendChild(S);mxEvent.addListener(S,"click",mxUtils.bind(this,function(ia){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(ia)}))}if(null!=L)for(M=0;M<L.length;M++){var ca=document.createElement("div");ca.style.marginTop=null!=z||0<M?"6px":"0px";ca.appendChild(this.graph.createLinkForHint(L[M].getAttribute("href"),mxUtils.getTextContent(L[M])));this.linkHint.appendChild(ca)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(ia){}};
mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var Ca=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){Ca.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var z=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&
this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(S,ca){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));z();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var L=this.graph.getLinkForCell(this.state.cell),M=this.graph.getLinksForState(this.state);if(null!=
L||null!=M&&0<M.length)this.updateLinkHint(L,M),this.redrawHandles()};var Qa=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){Qa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var Za=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].style.left=this.moveHandles[z].rowState.x+
@@ -2666,9 +2667,9 @@ Math.round(z.y+z.height+Editor.hintOffset)+"px"}};var Ua=mxEdgeHandler.prototype
this.changeHandler=null)}}();(function(){function b(c,l,x){mxShape.call(this);this.line=c;this.stroke=l;this.strokewidth=null!=x?x:1;this.updateBoundsFromLine()}function e(){mxSwimlane.call(this)}function k(){mxSwimlane.call(this)}function n(){mxCylinder.call(this)}function D(){mxCylinder.call(this)}function t(){mxActor.call(this)}function E(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function m(){mxShape.call(this)}function q(){mxShape.call(this)}
function y(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1}function F(){mxActor.call(this)}function C(){mxCylinder.call(this)}function H(){mxCylinder.call(this)}function G(){mxActor.call(this)}function aa(){mxActor.call(this)}function da(){mxActor.call(this)}function ba(){mxActor.call(this)}function Y(){mxActor.call(this)}function pa(){mxActor.call(this)}function O(){mxActor.call(this)}function X(c,l){this.canvas=c;this.canvas.setLineJoin("round");
this.canvas.setLineCap("round");this.defaultVariation=l;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,X.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,X.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,X.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,X.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
-X.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,X.prototype.arcTo)}function ea(){mxRectangleShape.call(this)}function ka(){mxRectangleShape.call(this)}function ja(){mxActor.call(this)}function U(){mxActor.call(this)}function J(){mxActor.call(this)}function V(){mxRectangleShape.call(this)}function P(){mxRectangleShape.call(this)}function R(){mxCylinder.call(this)}function ia(){mxShape.call(this)}function la(){mxShape.call(this)}function ta(){mxEllipse.call(this)}
+X.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,X.prototype.arcTo)}function ea(){mxRectangleShape.call(this)}function ka(){mxRectangleShape.call(this)}function ja(){mxActor.call(this)}function U(){mxActor.call(this)}function J(){mxActor.call(this)}function V(){mxRectangleShape.call(this)}function P(){mxRectangleShape.call(this)}function R(){mxCylinder.call(this)}function ha(){mxShape.call(this)}function la(){mxShape.call(this)}function ta(){mxEllipse.call(this)}
function u(){mxShape.call(this)}function I(){mxShape.call(this)}function N(){mxRectangleShape.call(this)}function W(){mxShape.call(this)}function T(){mxShape.call(this)}function Q(){mxShape.call(this)}function Z(){mxShape.call(this)}function na(){mxShape.call(this)}function va(){mxCylinder.call(this)}function Ba(){mxCylinder.call(this)}function sa(){mxRectangleShape.call(this)}function Da(){mxDoubleEllipse.call(this)}function Aa(){mxDoubleEllipse.call(this)}function za(){mxArrowConnector.call(this);
-this.spacing=0}function Ca(){mxArrowConnector.call(this);this.spacing=0}function Qa(){mxActor.call(this)}function Za(){mxRectangleShape.call(this)}function cb(){mxActor.call(this)}function Ja(){mxActor.call(this)}function Ua(){mxActor.call(this)}function $a(){mxActor.call(this)}function z(){mxActor.call(this)}function L(){mxActor.call(this)}function M(){mxActor.call(this)}function S(){mxActor.call(this)}function ca(){mxActor.call(this)}function ha(){mxActor.call(this)}function oa(){mxEllipse.call(this)}
+this.spacing=0}function Ca(){mxArrowConnector.call(this);this.spacing=0}function Qa(){mxActor.call(this)}function Za(){mxRectangleShape.call(this)}function cb(){mxActor.call(this)}function Ja(){mxActor.call(this)}function Ua(){mxActor.call(this)}function $a(){mxActor.call(this)}function z(){mxActor.call(this)}function L(){mxActor.call(this)}function M(){mxActor.call(this)}function S(){mxActor.call(this)}function ca(){mxActor.call(this)}function ia(){mxActor.call(this)}function oa(){mxEllipse.call(this)}
function ra(){mxEllipse.call(this)}function qa(){mxEllipse.call(this)}function xa(){mxRhombus.call(this)}function Ga(){mxEllipse.call(this)}function La(){mxEllipse.call(this)}function Pa(){mxEllipse.call(this)}function Oa(){mxEllipse.call(this)}function Ta(){mxActor.call(this)}function Ma(){mxActor.call(this)}function ua(){mxActor.call(this)}function ya(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=
!0;this.indent=2;this.rectOutline="single"}function Na(){mxConnector.call(this)}function Fa(c,l,x,p,v,A,B,fa,K,wa){B+=K;var ma=p.clone();p.x-=v*(2*B+K);p.y-=A*(2*B+K);v*=B+K;A*=B+K;return function(){c.ellipse(ma.x-v-B,ma.y-A-B,2*B,2*B);wa?c.fillAndStroke():c.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var l=0;l<this.line.length;l++){var x=this.line[l];null!=x&&(x=new mxRectangle(x.x,x.y,this.strokewidth,this.strokewidth),null==
c?c=x:c.add(x))}this.bounds=null!=c?c:new mxRectangle};b.prototype.paintVertexShape=function(c,l,x,p,v){this.paintTableLine(c,this.line,0,0)};b.prototype.paintTableLine=function(c,l,x,p){if(null!=l){var v=null;c.begin();for(var A=0;A<l.length;A++){var B=l[A];null!=B&&(null==v?c.moveTo(B.x+x,B.y+p):null!=v&&c.lineTo(B.x+x,B.y+p));v=B}c.end();c.stroke()}};b.prototype.intersectsRectangle=function(c){var l=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var x=null,
@@ -2726,8 +2727,8 @@ V);var Ya=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBound
0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&(c.setShadow(!1),Ya.apply(this,[c,l,x,p,v]))}};mxUtils.extend(P,mxRectangleShape);P.prototype.isHtmlAllowed=function(){return!1};P.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};P.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var A=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);A=0;do{var B=mxCellRenderer.defaultShapes[this.style["symbol"+A]];if(null!=B){var fa=this.style["symbol"+A+"Align"],K=this.style["symbol"+A+"VerticalAlign"],wa=this.style["symbol"+A+"Width"],ma=this.style["symbol"+A+"Height"],bb=this.style["symbol"+A+"Spacing"]||0,jb=this.style["symbol"+A+"VSpacing"]||
bb,eb=this.style["symbol"+A+"ArcSpacing"];null!=eb&&(eb*=this.getArcSize(p+this.strokewidth,v+this.strokewidth),bb+=eb,jb+=eb);eb=l;var Ea=x;eb=fa==mxConstants.ALIGN_CENTER?eb+(p-wa)/2:fa==mxConstants.ALIGN_RIGHT?eb+(p-wa-bb):eb+bb;Ea=K==mxConstants.ALIGN_MIDDLE?Ea+(v-ma)/2:K==mxConstants.ALIGN_BOTTOM?Ea+(v-ma-jb):Ea+jb;c.save();fa=new B;fa.style=this.style;B.prototype.paintVertexShape.call(fa,c,eb,Ea,wa,ma);c.restore()}A++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
-mxCellRenderer.registerShape("ext",P);mxUtils.extend(R,mxCylinder);R.prototype.redrawPath=function(c,l,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",R);mxUtils.extend(ia,mxShape);ia.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
-2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",ia);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+mxCellRenderer.registerShape("ext",P);mxUtils.extend(R,mxCylinder);R.prototype.redrawPath=function(c,l,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",R);mxUtils.extend(ha,mxShape);ha.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
+2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",ha);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
la);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/8,x+v);c.lineTo(l+7*p/8,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",ta);mxUtils.extend(u,mxShape);u.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(p,0);c.lineTo(0,v);c.moveTo(0,0);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",u);mxUtils.extend(I,mxShape);
I.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};I.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,0);c.end();c.stroke();c.ellipse(0,v/8,p,7*v/8);c.fillAndStroke()};I.prototype.paintForeground=function(c,l,x,p,v){c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,v/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",I);mxUtils.extend(N,mxRectangleShape);N.prototype.size=
40;N.prototype.isHtmlAllowed=function(){return!1};N.prototype.getLabelBounds=function(c){var l=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,l)};N.prototype.paintBackground=function(c,l,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"participant");null==B||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,c,l,
@@ -2767,8 +2768,8 @@ l,v),new mxPoint(p-l,A),new mxPoint(0,A)],this.isRounded,B,!0);c.end()};mxCellRe
2;this.addPoints(c,[new mxPoint(0,v/2),new mxPoint(l,0),new mxPoint(l,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(p-l,A),new mxPoint(l,A),new mxPoint(l,v)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",z);mxUtils.extend(L,mxActor);L.prototype.size=.1;L.prototype.fixedSize=20;L.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(l,0);c.lineTo(p,0);c.quadTo(p-2*l,v/2,p,v);c.lineTo(l,v);c.quadTo(l-2*l,v/2,l,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",L);mxUtils.extend(M,mxActor);M.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.close();c.end()};mxCellRenderer.registerShape("or",M);mxUtils.extend(S,mxActor);S.prototype.redrawPath=function(c,
l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.quadTo(p/2,v/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",S);mxUtils.extend(ca,mxActor);ca.prototype.size=20;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p/2,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p-l,0),
-new mxPoint(p,.8*l),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",ca);mxUtils.extend(ha,mxActor);ha.prototype.size=.375;ha.prototype.isRoundable=function(){return!0};ha.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,
-0),new mxPoint(p,v-l),new mxPoint(p/2,v),new mxPoint(0,v-l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",ha);mxUtils.extend(oa,mxEllipse);oa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/2,x+v);c.lineTo(l+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",oa);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
+new mxPoint(p,.8*l),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",ca);mxUtils.extend(ia,mxActor);ia.prototype.size=.375;ia.prototype.isRoundable=function(){return!0};ia.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,
+0),new mxPoint(p,v-l),new mxPoint(p/2,v),new mxPoint(0,v-l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",ia);mxUtils.extend(oa,mxEllipse);oa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/2,x+v);c.lineTo(l+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",oa);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke();c.begin();c.moveTo(l+p/2,x);c.lineTo(l+p/2,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",ra);mxUtils.extend(qa,mxEllipse);qa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l+.145*p,x+.145*v);c.lineTo(l+.855*p,x+.855*v);c.end();c.stroke();c.begin();c.moveTo(l+.855*p,x+.145*v);c.lineTo(l+.145*p,
x+.855*v);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",qa);mxUtils.extend(xa,mxRhombus);xa.prototype.paintVertexShape=function(c,l,x,p,v){mxRhombus.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",xa);mxUtils.extend(Ga,mxEllipse);Ga.prototype.paintVertexShape=function(c,l,x,p,v){c.begin();c.moveTo(l,x);c.lineTo(l+p,x);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke();
c.begin();c.moveTo(l,x+v);c.lineTo(l+p,x+v);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",Ga);mxUtils.extend(La,mxEllipse);La.prototype.paintVertexShape=function(c,l,x,p,v){var A=c.state.strokeWidth/2,B=10+2*A,fa=x+v-B/2;c.begin();c.moveTo(l,x);c.lineTo(l,x+v);c.moveTo(l+A,fa);c.lineTo(l+A+B,fa-B/2);c.moveTo(l+A,fa);c.lineTo(l+A+B,fa+B/2);c.moveTo(l+A,fa);c.lineTo(l+p-A,fa);c.moveTo(l+p,x);c.lineTo(l+p,x+v);c.moveTo(l+p-A,fa);c.lineTo(l+p-B-A,fa-B/2);c.moveTo(l+
@@ -2871,7 +2872,7 @@ mxUtils.getValue(this.state.style,"jettyHeight",va.prototype.jettyHeight)));retu
x){this.state.style.dx=Math.round(Math.max(0,2*Math.min(l.width/2,x.x-l.x-l.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},singleArrow:ob(1),doubleArrow:ob(.5),folder:function(c){return[ib(c,["tabWidth","tabHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"tabWidth",C.prototype.tabWidth))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"tabHeight",C.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(x=l.width-x);return new mxPoint(l.x+x,l.y+p)},function(l,x){var p=Math.max(0,Math.min(l.width,x.x-l.x));mxUtils.getValue(this.state.style,"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(p=l.width-p);this.state.style.tabWidth=Math.round(p);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},document:function(c){return[ib(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",da.prototype.size))));return new mxPoint(l.x+3*l.width/4,l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},tape:function(c){return[ib(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x*l.height/2)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(x.y-l.y)/l.height*2))},!1)]},isoCube2:function(c){return[ib(c,
-["isoAngle"],function(l){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(l.x,l.y+Math.min(l.width*Math.tan(x),.5*l.height))},function(l,x){this.state.style.isoAngle=Math.max(0,50*(x.y-l.y)/l.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[ib(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));
+["isoAngle"],function(l){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(l.x,l.y+Math.min(l.width*Math.tan(x),.5*l.height))},function(l,x){this.state.style.isoAngle=Math.max(0,50*(x.y-l.y)/l.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[ib(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ia.prototype.size))));
return new mxPoint(l.getCenterX(),l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},"mxgraph.basic.rect":function(c){var l=[Graph.createHandle(c,["size"],function(x){var p=Math.max(0,Math.min(x.width/2,x.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(x.x+p,x.y+p)},function(x,p){this.state.style.size=Math.round(100*Math.max(0,Math.min(x.height/2,x.width/2,p.x-x.x)))/100})];c=Graph.createHandle(c,
["indent"],function(x){var p=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(x.x+.75*x.width,x.y+p*x.height/200)},function(x,p){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(p.y-x.y)/x.height)))/100});l.push(c);return l},step:Ab(U.prototype.size,!0,null,!0,U.prototype.fixedSize),hexagon:Ab(J.prototype.size,!0,.5,!0,J.prototype.fixedSize),curlyBracket:Ab(pa.prototype.size,!1),display:Ab(ua.prototype.size,!1),cube:qb(1,
n.prototype.size,!1),card:qb(.5,G.prototype.size,!0),loopLimit:qb(.5,ca.prototype.size,!0),trapezoid:Bb(.5,Y.prototype.size,Y.prototype.fixedSize),parallelogram:Bb(1,ba.prototype.size,ba.prototype.fixedSize)};Graph.createHandle=ib;Graph.handleFactory=mb;var wb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=wb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var l=this.state.style.shape;null==mxCellRenderer.defaultShapes[l]&&
@@ -2902,8 +2903,8 @@ qa.prototype.constraints=mxEllipse.prototype.constraints;Oa.prototype.constraint
0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};va.prototype.getConstraints=function(c,l,x){l=parseFloat(mxUtils.getValue(c,
"jettyWidth",va.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,"jettyHeight",va.prototype.jettyHeight));var p=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,l),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(1,0),!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(0,1),!1,null,l),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,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,3.5*c))];x>5*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,l));x>8*c&&p.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1,null,l));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,l));return p};ca.prototype.constraints=mxRectangleShape.prototype.constraints;ha.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)];ia.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,
+.5),!1,null,l));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,l));return p};ca.prototype.constraints=mxRectangleShape.prototype.constraints;ia.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)];ha.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)];Ba.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,
@@ -3119,13 +3120,13 @@ I){u=I.editorUi.editor.graph.getCellStyle(1==u.vertices.length&&0==u.edges.lengt
{val:"width",dispName:"Width"}]},{name:"noLabel",dispName:"Hide Label",type:"bool",defVal:!1},{name:"labelPadding",dispName:"Label Padding",type:"float",defVal:0},{name:"direction",dispName:"Direction",type:"enum",defVal:"east",enumList:[{val:"north",dispName:"North"},{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraint",dispName:"Constraint",type:"enum",defVal:"none",enumList:[{val:"none",dispName:"None"},{val:"north",dispName:"North"},
{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraintRotation",dispName:"Rotate Constraint",type:"bool",defVal:!1},{name:"connectable",dispName:"Connectable",type:"bool",getDefaultValue:function(u,I){return I.editorUi.editor.graph.isCellConnectable(0<u.vertices.length&&0==u.edges.length?u.vertices[0]:null)},isVisible:function(u,I){return 0<u.vertices.length&&0==u.edges.length}},{name:"allowArrows",dispName:"Allow Arrows",type:"bool",defVal:!0},
{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"perimeter",dispName:"Perimeter",defVal:"none",type:"enum",enumList:[{val:"none",dispName:"None"},{val:"rectanglePerimeter",dispName:"Rectangle"},{val:"ellipsePerimeter",dispName:"Ellipse"},{val:"rhombusPerimeter",dispName:"Rhombus"},{val:"trianglePerimeter",dispName:"Triangle"},{val:"hexagonPerimeter2",dispName:"Hexagon"},{val:"lifelinePerimeter",dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",
-dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},
-{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(u,I){u=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;I=I.editorUi.editor.graph;return null!=u&&(I.isSwimlane(u)||0<I.model.getChildCount(u))},isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(u,I){var N=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;I=I.editorUi.editor.graph;return null!=N&&(I.isContainer(N)&&
-"0"!=u.style.collapsible||!I.isContainer(N)&&"1"==u.style.collapsible)},isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length&&!I.editorUi.editor.graph.isSwimlane(u.vertices[0])&&null==mxUtils.getValue(u.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,
-isVisible:function(u,I){I=I.editorUi.editor.graph.model;return 0<u.vertices.length?I.isVertex(I.getParent(u.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(u,I){u=0<u.vertices.length?
-I.editorUi.editor.graph.getCellGeometry(u.vertices[0]):null;return null!=u&&!u.relative}},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",
-type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(u,I){var N=mxUtils.getValue(u.style,mxConstants.STYLE_FILLCOLOR,null);return I.editorUi.editor.graph.isSwimlane(u.vertices[0])||null==N||N==mxConstants.NONE||0==mxUtils.getValue(u.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(u.style,mxConstants.STYLE_OPACITY,100)||null!=u.style.pointerEvents}},{name:"moveCells",
-dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(u,I){return 0<u.vertices.length&&I.editorUi.editor.graph.isContainer(u.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Style to be used for objects not in the CSV. If this is - then such objects are ignored,\n## else they are created using this as their style, eg. whiteSpace=wrap;html=1;\n#\n# unknownStyle: -\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Collapsed state for vertices. Possible values are true or false. Default is false.\n#\n# collapsed: false\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle, orgchart or a JSON string as used in\n## Layout, Apply. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
+dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(u,
+I){u=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;I=I.editorUi.editor.graph;return null!=u&&(I.isSwimlane(u)||0<I.model.getChildCount(u))},isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(u,I){var N=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;I=I.editorUi.editor.graph;return null!=N&&(I.isContainer(N)&&"0"!=u.style.collapsible||!I.isContainer(N)&&"1"==u.style.collapsible)},
+isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(u,I){return 1==u.vertices.length&&0==u.edges.length&&!I.editorUi.editor.graph.isSwimlane(u.vertices[0])&&null==mxUtils.getValue(u.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(u,I){I=I.editorUi.editor.graph.model;return 0<u.vertices.length?
+I.isVertex(I.getParent(u.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(u,I){u=0<u.vertices.length?I.editorUi.editor.graph.getCellGeometry(u.vertices[0]):null;return null!=u&&!u.relative}},
+{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"fixedWidth",dispName:"Fixed Width",type:"bool",defVal:!1},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},
+{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(u,I){var N=mxUtils.getValue(u.style,mxConstants.STYLE_FILLCOLOR,null);return I.editorUi.editor.graph.isSwimlane(u.vertices[0])||null==N||N==mxConstants.NONE||0==mxUtils.getValue(u.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(u.style,mxConstants.STYLE_OPACITY,100)||
+null!=u.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(u,I){return 0<u.vertices.length&&I.editorUi.editor.graph.isContainer(u.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Style to be used for objects not in the CSV. If this is - then such objects are ignored,\n## else they are created using this as their style, eg. whiteSpace=wrap;html=1;\n#\n# unknownStyle: -\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Collapsed state for vertices. Possible values are true or false. Default is false.\n#\n# collapsed: false\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle, orgchart or a JSON string as used in\n## Layout, Apply. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
Editor.createRoughCanvas=function(u){var I=rough.canvas({getContext:function(){return u}});I.draw=function(N){var W=N.sets||[];N=N.options||this.getDefaultOptions();for(var T=0;T<W.length;T++){var Q=W[T];switch(Q.type){case "path":null!=N.stroke&&this._drawToContext(u,Q,N);break;case "fillPath":this._drawToContext(u,Q,N);break;case "fillSketch":this.fillSketch(u,Q,N)}}};I.fillSketch=function(N,W,T){var Q=u.state.strokeColor,Z=u.state.strokeWidth,na=u.state.strokeAlpha,va=u.state.dashed,Ba=T.fillWeight;
0>Ba&&(Ba=T.strokeWidth/2);u.setStrokeAlpha(u.state.fillAlpha);u.setStrokeColor(T.fill||"");u.setStrokeWidth(Ba);u.setDashed(!1);this._drawToContext(N,W,T);u.setDashed(va);u.setStrokeWidth(Z);u.setStrokeColor(Q);u.setStrokeAlpha(na)};I._drawToContext=function(N,W,T){N.begin();for(var Q=0;Q<W.ops.length;Q++){var Z=W.ops[Q],na=Z.data;switch(Z.op){case "move":N.moveTo(na[0],na[1]);break;case "bcurveTo":N.curveTo(na[0],na[1],na[2],na[3],na[4],na[5]);break;case "lineTo":N.lineTo(na[0],na[1])}}N.end();
"fillPath"===W.type&&T.filled?N.fill():N.stroke()};return I};(function(){function u(Q,Z,na){this.canvas=Q;this.rc=Z;this.shape=na;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,u.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,u.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,u.prototype.rect);this.originalRoundrect=this.canvas.roundrect;
@@ -3195,9 +3196,9 @@ mxUtils.bind(this,function(I){this.resolvedFontCss=I;null!=u&&u()})):null!=u&&u(
Q=0;Q<I.length;Q++)mxUtils.bind(this,function(Z,na){Graph.isCssFontUrl(na)?null==this.cachedGoogleFonts[na]?(W++,this.loadUrl(na,mxUtils.bind(this,function(va){this.cachedGoogleFonts[na]=va;N.push(va+"\n");W--;T()}),mxUtils.bind(this,function(va){W--;N.push("@import url("+na+");\n");T()}))):N.push(this.cachedGoogleFonts[na]+"\n"):N.push('@font-face {font-family: "'+Z+'";src: url("'+na+'")}\n')})(I[Q].name,I[Q].url);T()}else u()};Editor.prototype.addMathCss=function(u){u=u.getElementsByTagName("defs");
if(null!=u&&0<u.length)for(var I=document.getElementsByTagName("style"),N=0;N<I.length;N++){var W=mxUtils.getTextContent(I[N]);0>W.indexOf("mxPageSelector")&&0<W.indexOf("MathJax")&&u[0].appendChild(I[N].cloneNode(!0))}};Editor.prototype.addFontCss=function(u,I){I=null!=I?I:this.absoluteCssFonts(this.fontCss);if(null!=I){var N=u.getElementsByTagName("defs"),W=u.ownerDocument;0==N.length?(N=null!=W.createElementNS?W.createElementNS(mxConstants.NS_SVG,"defs"):W.createElement("defs"),null!=u.firstChild?
u.insertBefore(N,u.firstChild):u.appendChild(N)):N=N[0];u=null!=W.createElementNS?W.createElementNS(mxConstants.NS_SVG,"style"):W.createElement("style");u.setAttribute("type","text/css");mxUtils.setTextContent(u,I);N.appendChild(u)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(u,I,N){var W=mxClient.IS_FF?8192:16384;return Math.min(N,Math.min(W/u,W/I))};Editor.prototype.exportToCanvas=function(u,I,N,
-W,T,Q,Z,na,va,Ba,sa,Da,Aa,za,Ca,Qa,Za,cb){try{Q=null!=Q?Q:!0;Z=null!=Z?Z:!0;Da=null!=Da?Da:this.graph;Aa=null!=Aa?Aa:0;var Ja=va?null:Da.background;Ja==mxConstants.NONE&&(Ja=null);null==Ja&&(Ja=W);null==Ja&&0==va&&(Ja=Qa?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(Da.getSvg(null,null,Aa,za,null,Z,null,null,null,Ba,null,Qa,Za,cb),mxUtils.bind(this,function(Ua){try{var $a=new Image;$a.onload=mxUtils.bind(this,function(){try{var L=function(){mxClient.IS_SF?window.setTimeout(function(){ha.drawImage($a,
-0,0);u(M,Ua)},0):(ha.drawImage($a,0,0),u(M,Ua))},M=document.createElement("canvas"),S=parseInt(Ua.getAttribute("width")),ca=parseInt(Ua.getAttribute("height"));na=null!=na?na:1;null!=I&&(na=Q?Math.min(1,Math.min(3*I/(4*ca),I/S)):I/S);na=this.getMaxCanvasScale(S,ca,na);S=Math.ceil(na*S);ca=Math.ceil(na*ca);M.setAttribute("width",S);M.setAttribute("height",ca);var ha=M.getContext("2d");null!=Ja&&(ha.beginPath(),ha.rect(0,0,S,ca),ha.fillStyle=Ja,ha.fill());1!=na&&ha.scale(na,na);if(Ca){var oa=Da.view,
-ra=oa.scale;oa.scale=1;var qa=btoa(unescape(encodeURIComponent(oa.createSvgGrid(oa.gridColor))));oa.scale=ra;qa="data:image/svg+xml;base64,"+qa;var xa=Da.gridSize*oa.gridSteps*na,Ga=Da.getGraphBounds(),La=oa.translate.x*ra,Pa=oa.translate.y*ra,Oa=La+(Ga.x-La)/ra-Aa,Ta=Pa+(Ga.y-Pa)/ra-Aa,Ma=new Image;Ma.onload=function(){try{for(var ua=-Math.round(xa-mxUtils.mod((La-Oa)*na,xa)),ya=-Math.round(xa-mxUtils.mod((Pa-Ta)*na,xa));ua<S;ua+=xa)for(var Na=ya;Na<ca;Na+=xa)ha.drawImage(Ma,ua/na,Na/na);L()}catch(Fa){null!=
+W,T,Q,Z,na,va,Ba,sa,Da,Aa,za,Ca,Qa,Za,cb){try{Q=null!=Q?Q:!0;Z=null!=Z?Z:!0;Da=null!=Da?Da:this.graph;Aa=null!=Aa?Aa:0;var Ja=va?null:Da.background;Ja==mxConstants.NONE&&(Ja=null);null==Ja&&(Ja=W);null==Ja&&0==va&&(Ja=Qa?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(Da.getSvg(null,null,Aa,za,null,Z,null,null,null,Ba,null,Qa,Za,cb),mxUtils.bind(this,function(Ua){try{var $a=new Image;$a.onload=mxUtils.bind(this,function(){try{var L=function(){mxClient.IS_SF?window.setTimeout(function(){ia.drawImage($a,
+0,0);u(M,Ua)},0):(ia.drawImage($a,0,0),u(M,Ua))},M=document.createElement("canvas"),S=parseInt(Ua.getAttribute("width")),ca=parseInt(Ua.getAttribute("height"));na=null!=na?na:1;null!=I&&(na=Q?Math.min(1,Math.min(3*I/(4*ca),I/S)):I/S);na=this.getMaxCanvasScale(S,ca,na);S=Math.ceil(na*S);ca=Math.ceil(na*ca);M.setAttribute("width",S);M.setAttribute("height",ca);var ia=M.getContext("2d");null!=Ja&&(ia.beginPath(),ia.rect(0,0,S,ca),ia.fillStyle=Ja,ia.fill());1!=na&&ia.scale(na,na);if(Ca){var oa=Da.view,
+ra=oa.scale;oa.scale=1;var qa=btoa(unescape(encodeURIComponent(oa.createSvgGrid(oa.gridColor))));oa.scale=ra;qa="data:image/svg+xml;base64,"+qa;var xa=Da.gridSize*oa.gridSteps*na,Ga=Da.getGraphBounds(),La=oa.translate.x*ra,Pa=oa.translate.y*ra,Oa=La+(Ga.x-La)/ra-Aa,Ta=Pa+(Ga.y-Pa)/ra-Aa,Ma=new Image;Ma.onload=function(){try{for(var ua=-Math.round(xa-mxUtils.mod((La-Oa)*na,xa)),ya=-Math.round(xa-mxUtils.mod((Pa-Ta)*na,xa));ua<S;ua+=xa)for(var Na=ya;Na<ca;Na+=xa)ia.drawImage(Ma,ua/na,Na/na);L()}catch(Fa){null!=
T&&T(Fa)}};Ma.onerror=function(ua){null!=T&&T(ua)};Ma.src=qa}else L()}catch(ua){null!=T&&T(ua)}});$a.onerror=function(L){null!=T&&T(L)};Ba&&this.graph.addSvgShadow(Ua);this.graph.mathEnabled&&this.addMathCss(Ua);var z=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(Ua,this.resolvedFontCss),$a.src=Editor.createSvgDataUri(mxUtils.getXml(Ua))}catch(L){null!=T&&T(L)}});this.embedExtFonts(mxUtils.bind(this,function(L){try{null!=L&&this.addFontCss(Ua,L),this.loadFonts(z)}catch(M){null!=
T&&T(M)}}))}catch(L){null!=T&&T(L)}}),N,sa)}catch(Ua){null!=T&&T(Ua)}};Editor.crcTable=[];for(var D=0;256>D;D++)for(var t=D,E=0;8>E;E++)t=1==(t&1)?3988292384^t>>>1:t>>>1,Editor.crcTable[D]=t;Editor.updateCRC=function(u,I,N,W){for(var T=0;T<W;T++)u=Editor.crcTable[(u^I.charCodeAt(N+T))&255]^u>>>8;return u};Editor.crc32=function(u){for(var I=-1,N=0;N<u.length;N++)I=I>>>8^Editor.crcTable[(I^u.charCodeAt(N))&255];return(I^-1)>>>0};Editor.writeGraphModelToPng=function(u,I,N,W,T){function Q(sa,Da){var Aa=
va;va+=Da;return sa.substring(Aa,va)}function Z(sa){sa=Q(sa,4);return sa.charCodeAt(3)+(sa.charCodeAt(2)<<8)+(sa.charCodeAt(1)<<16)+(sa.charCodeAt(0)<<24)}function na(sa){return String.fromCharCode(sa>>24&255,sa>>16&255,sa>>8&255,sa&255)}u=u.substring(u.indexOf(",")+1);u=window.atob?atob(u):Base64.decode(u,!0);var va=0;if(Q(u,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=T&&T();else if(Q(u,4),"IHDR"!=Q(u,4))null!=T&&T();else{Q(u,17);T=u.substring(0,va);do{var Ba=Z(u);if("IDAT"==
@@ -3233,29 +3234,29 @@ stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradien
{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(u,I,N){if(null!=I){var W=function(Q){if(null!=Q)if(N)for(var Z=0;Z<Q.length;Z++)I[Q[Z].name]=Q[Z];else for(var na in I){var va=!1;for(Z=0;Z<Q.length;Z++)if(Q[Z].name==na&&Q[Z].type==I[na].type){va=!0;break}va||delete I[na]}},
T=this.editorUi.editor.graph.view.getState(u);null!=T&&null!=T.shape&&(T.shape.commonCustomPropAdded||(T.shape.commonCustomPropAdded=!0,T.shape.customProperties=T.shape.customProperties||[],T.cell.vertex?Array.prototype.push.apply(T.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(T.shape.customProperties,Editor.commonEdgeProperties)),W(T.shape.customProperties));u=u.getAttribute("customProperties");if(null!=u)try{W(JSON.parse(u))}catch(Q){}}};var F=StyleFormatPanel.prototype.init;
StyleFormatPanel.prototype.init=function(){var u=this.editorUi.getSelectionState();"image"!=u.style.shape&&!u.containsLabel&&0<u.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));F.apply(this,arguments);if(Editor.enableCustomProperties){for(var I={},N=u.vertices,W=u.edges,T=0;T<N.length;T++)this.findCommonProperties(N[T],I,0==T);for(T=0;T<W.length;T++)this.findCommonProperties(W[T],I,0==N.length&&0==T);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(I).length&&
-this.container.appendChild(this.addProperties(this.createPanel(),I,u))}};var C=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(u){this.addActions(u,["copyStyle","pasteStyle"]);return C.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(u,I,N){function W(ha,oa,ra,qa){Da.getModel().beginUpdate();try{var xa=[],Ga=[];if(null!=ra.index){for(var La=[],Pa=ra.parentRow.nextSibling;Pa&&Pa.getAttribute("data-pName")==
-ha;)La.push(Pa.getAttribute("data-pValue")),Pa=Pa.nextSibling;ra.index<La.length?null!=qa?La.splice(qa,1):La[ra.index]=oa:La.push(oa);null!=ra.size&&La.length>ra.size&&(La=La.slice(0,ra.size));oa=La.join(",");null!=ra.countProperty&&(Da.setCellStyles(ra.countProperty,La.length,Da.getSelectionCells()),xa.push(ra.countProperty),Ga.push(La.length))}Da.setCellStyles(ha,oa,Da.getSelectionCells());xa.push(ha);Ga.push(oa);if(null!=ra.dependentProps)for(ha=0;ha<ra.dependentProps.length;ha++){var Oa=ra.dependentPropsDefVal[ha],
-Ta=ra.dependentPropsVals[ha];if(Ta.length>oa)Ta=Ta.slice(0,oa);else for(var Ma=Ta.length;Ma<oa;Ma++)Ta.push(Oa);Ta=Ta.join(",");Da.setCellStyles(ra.dependentProps[ha],Ta,Da.getSelectionCells());xa.push(ra.dependentProps[ha]);Ga.push(Ta)}if("function"==typeof ra.onChange)ra.onChange(Da,oa);sa.editorUi.fireEvent(new mxEventObject("styleChanged","keys",xa,"values",Ga,"cells",Da.getSelectionCells()))}finally{Da.getModel().endUpdate()}}function T(ha,oa,ra){var qa=mxUtils.getOffset(u,!0),xa=mxUtils.getOffset(ha,
-!0);oa.style.position="absolute";oa.style.left=xa.x-qa.x+"px";oa.style.top=xa.y-qa.y+"px";oa.style.width=ha.offsetWidth+"px";oa.style.height=ha.offsetHeight-(ra?4:0)+"px";oa.style.zIndex=5}function Q(ha,oa,ra){var qa=document.createElement("div");qa.style.width="32px";qa.style.height="4px";qa.style.margin="2px";qa.style.border="1px solid black";qa.style.background=oa&&"none"!=oa?oa:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(sa,function(xa){this.editorUi.pickColor(oa,
-function(Ga){qa.style.background="none"==Ga?"url('"+Dialog.prototype.noColorImage+"')":Ga;W(ha,Ga,ra)});mxEvent.consume(xa)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(qa);return btn}function Z(ha,oa,ra,qa,xa,Ga,La){null!=oa&&(oa=oa.split(","),Aa.push({name:ha,values:oa,type:ra,defVal:qa,countProperty:xa,parentRow:Ga,isDeletable:!0,flipBkg:La}));btn=mxUtils.button("+",mxUtils.bind(sa,function(Pa){for(var Oa=Ga,Ta=0;null!=Oa.nextSibling;)if(Oa.nextSibling.getAttribute("data-pName")==
-ha)Oa=Oa.nextSibling,Ta++;else break;var Ma={type:ra,parentRow:Ga,index:Ta,isDeletable:!0,defVal:qa,countProperty:xa};Ta=Ba(ha,"",Ma,0==Ta%2,La);W(ha,qa,Ma);Oa.parentNode.insertBefore(Ta,Oa.nextSibling);mxEvent.consume(Pa)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function na(ha,oa,ra,qa,xa,Ga,La){if(0<xa){var Pa=Array(xa);oa=null!=oa?oa.split(","):[];for(var Oa=0;Oa<xa;Oa++)Pa[Oa]=null!=oa[Oa]?oa[Oa]:null!=qa?qa:"";Aa.push({name:ha,values:Pa,type:ra,
-defVal:qa,parentRow:Ga,flipBkg:La,size:xa})}return document.createElement("div")}function va(ha,oa,ra){var qa=document.createElement("input");qa.type="checkbox";qa.checked="1"==oa;mxEvent.addListener(qa,"change",function(){W(ha,qa.checked?"1":"0",ra)});return qa}function Ba(ha,oa,ra,qa,xa){var Ga=ra.dispName,La=ra.type,Pa=document.createElement("tr");Pa.className="gePropRow"+(xa?"Dark":"")+(qa?"Alt":"")+" gePropNonHeaderRow";Pa.setAttribute("data-pName",ha);Pa.setAttribute("data-pValue",oa);qa=!1;
-null!=ra.index&&(Pa.setAttribute("data-index",ra.index),Ga=(null!=Ga?Ga:"")+"["+ra.index+"]",qa=!0);var Oa=document.createElement("td");Oa.className="gePropRowCell";Ga=mxResources.get(Ga,null,Ga);mxUtils.write(Oa,Ga);Oa.setAttribute("title",Ga);qa&&(Oa.style.textAlign="right");Pa.appendChild(Oa);Oa=document.createElement("td");Oa.className="gePropRowCell";if("color"==La)Oa.appendChild(Q(ha,oa,ra));else if("bool"==La||"boolean"==La)Oa.appendChild(va(ha,oa,ra));else if("enum"==La){var Ta=ra.enumList;
+this.container.appendChild(this.addProperties(this.createPanel(),I,u))}};var C=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(u){this.addActions(u,["copyStyle","pasteStyle"]);return C.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(u,I,N){function W(ia,oa,ra,qa){Da.getModel().beginUpdate();try{var xa=[],Ga=[];if(null!=ra.index){for(var La=[],Pa=ra.parentRow.nextSibling;Pa&&Pa.getAttribute("data-pName")==
+ia;)La.push(Pa.getAttribute("data-pValue")),Pa=Pa.nextSibling;ra.index<La.length?null!=qa?La.splice(qa,1):La[ra.index]=oa:La.push(oa);null!=ra.size&&La.length>ra.size&&(La=La.slice(0,ra.size));oa=La.join(",");null!=ra.countProperty&&(Da.setCellStyles(ra.countProperty,La.length,Da.getSelectionCells()),xa.push(ra.countProperty),Ga.push(La.length))}Da.setCellStyles(ia,oa,Da.getSelectionCells());xa.push(ia);Ga.push(oa);if(null!=ra.dependentProps)for(ia=0;ia<ra.dependentProps.length;ia++){var Oa=ra.dependentPropsDefVal[ia],
+Ta=ra.dependentPropsVals[ia];if(Ta.length>oa)Ta=Ta.slice(0,oa);else for(var Ma=Ta.length;Ma<oa;Ma++)Ta.push(Oa);Ta=Ta.join(",");Da.setCellStyles(ra.dependentProps[ia],Ta,Da.getSelectionCells());xa.push(ra.dependentProps[ia]);Ga.push(Ta)}if("function"==typeof ra.onChange)ra.onChange(Da,oa);sa.editorUi.fireEvent(new mxEventObject("styleChanged","keys",xa,"values",Ga,"cells",Da.getSelectionCells()))}finally{Da.getModel().endUpdate()}}function T(ia,oa,ra){var qa=mxUtils.getOffset(u,!0),xa=mxUtils.getOffset(ia,
+!0);oa.style.position="absolute";oa.style.left=xa.x-qa.x+"px";oa.style.top=xa.y-qa.y+"px";oa.style.width=ia.offsetWidth+"px";oa.style.height=ia.offsetHeight-(ra?4:0)+"px";oa.style.zIndex=5}function Q(ia,oa,ra){var qa=document.createElement("div");qa.style.width="32px";qa.style.height="4px";qa.style.margin="2px";qa.style.border="1px solid black";qa.style.background=oa&&"none"!=oa?oa:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(sa,function(xa){this.editorUi.pickColor(oa,
+function(Ga){qa.style.background="none"==Ga?"url('"+Dialog.prototype.noColorImage+"')":Ga;W(ia,Ga,ra)});mxEvent.consume(xa)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(qa);return btn}function Z(ia,oa,ra,qa,xa,Ga,La){null!=oa&&(oa=oa.split(","),Aa.push({name:ia,values:oa,type:ra,defVal:qa,countProperty:xa,parentRow:Ga,isDeletable:!0,flipBkg:La}));btn=mxUtils.button("+",mxUtils.bind(sa,function(Pa){for(var Oa=Ga,Ta=0;null!=Oa.nextSibling;)if(Oa.nextSibling.getAttribute("data-pName")==
+ia)Oa=Oa.nextSibling,Ta++;else break;var Ma={type:ra,parentRow:Ga,index:Ta,isDeletable:!0,defVal:qa,countProperty:xa};Ta=Ba(ia,"",Ma,0==Ta%2,La);W(ia,qa,Ma);Oa.parentNode.insertBefore(Ta,Oa.nextSibling);mxEvent.consume(Pa)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function na(ia,oa,ra,qa,xa,Ga,La){if(0<xa){var Pa=Array(xa);oa=null!=oa?oa.split(","):[];for(var Oa=0;Oa<xa;Oa++)Pa[Oa]=null!=oa[Oa]?oa[Oa]:null!=qa?qa:"";Aa.push({name:ia,values:Pa,type:ra,
+defVal:qa,parentRow:Ga,flipBkg:La,size:xa})}return document.createElement("div")}function va(ia,oa,ra){var qa=document.createElement("input");qa.type="checkbox";qa.checked="1"==oa;mxEvent.addListener(qa,"change",function(){W(ia,qa.checked?"1":"0",ra)});return qa}function Ba(ia,oa,ra,qa,xa){var Ga=ra.dispName,La=ra.type,Pa=document.createElement("tr");Pa.className="gePropRow"+(xa?"Dark":"")+(qa?"Alt":"")+" gePropNonHeaderRow";Pa.setAttribute("data-pName",ia);Pa.setAttribute("data-pValue",oa);qa=!1;
+null!=ra.index&&(Pa.setAttribute("data-index",ra.index),Ga=(null!=Ga?Ga:"")+"["+ra.index+"]",qa=!0);var Oa=document.createElement("td");Oa.className="gePropRowCell";Ga=mxResources.get(Ga,null,Ga);mxUtils.write(Oa,Ga);Oa.setAttribute("title",Ga);qa&&(Oa.style.textAlign="right");Pa.appendChild(Oa);Oa=document.createElement("td");Oa.className="gePropRowCell";if("color"==La)Oa.appendChild(Q(ia,oa,ra));else if("bool"==La||"boolean"==La)Oa.appendChild(va(ia,oa,ra));else if("enum"==La){var Ta=ra.enumList;
for(xa=0;xa<Ta.length;xa++)if(Ga=Ta[xa],Ga.val==oa){mxUtils.write(Oa,mxResources.get(Ga.dispName,null,Ga.dispName));break}mxEvent.addListener(Oa,"click",mxUtils.bind(sa,function(){var Ma=document.createElement("select");T(Oa,Ma);for(var ua=0;ua<Ta.length;ua++){var ya=Ta[ua],Na=document.createElement("option");Na.value=mxUtils.htmlEntities(ya.val);mxUtils.write(Na,mxResources.get(ya.dispName,null,ya.dispName));Ma.appendChild(Na)}Ma.value=oa;u.appendChild(Ma);mxEvent.addListener(Ma,"change",function(){var Fa=
-mxUtils.htmlEntities(Ma.value);W(ha,Fa,ra)});Ma.focus();mxEvent.addListener(Ma,"blur",function(){u.removeChild(Ma)})}))}else"dynamicArr"==La?Oa.appendChild(Z(ha,oa,ra.subType,ra.subDefVal,ra.countProperty,Pa,xa)):"staticArr"==La?Oa.appendChild(na(ha,oa,ra.subType,ra.subDefVal,ra.size,Pa,xa)):"readOnly"==La?(xa=document.createElement("input"),xa.setAttribute("readonly",""),xa.value=oa,xa.style.width="96px",xa.style.borderWidth="0px",Oa.appendChild(xa)):(Oa.innerHTML=mxUtils.htmlEntities(decodeURIComponent(oa)),
-mxEvent.addListener(Oa,"click",mxUtils.bind(sa,function(){function Ma(){var ya=ua.value;ya=0==ya.length&&"string"!=La?0:ya;ra.allowAuto&&(null!=ya.trim&&"auto"==ya.trim().toLowerCase()?(ya="auto",La="string"):(ya=parseFloat(ya),ya=isNaN(ya)?0:ya));null!=ra.min&&ya<ra.min?ya=ra.min:null!=ra.max&&ya>ra.max&&(ya=ra.max);ya=encodeURIComponent(("int"==La?parseInt(ya):ya)+"");W(ha,ya,ra)}var ua=document.createElement("input");T(Oa,ua,!0);ua.value=decodeURIComponent(oa);ua.className="gePropEditor";"int"!=
-La&&"float"!=La||ra.allowAuto||(ua.type="number",ua.step="int"==La?"1":"any",null!=ra.min&&(ua.min=parseFloat(ra.min)),null!=ra.max&&(ua.max=parseFloat(ra.max)));u.appendChild(ua);mxEvent.addListener(ua,"keypress",function(ya){13==ya.keyCode&&Ma()});ua.focus();mxEvent.addListener(ua,"blur",function(){Ma()})})));ra.isDeletable&&(xa=mxUtils.button("-",mxUtils.bind(sa,function(Ma){W(ha,"",ra,ra.index);mxEvent.consume(Ma)})),xa.style.height="16px",xa.style.width="25px",xa.style.float="right",xa.className=
+mxUtils.htmlEntities(Ma.value);W(ia,Fa,ra)});Ma.focus();mxEvent.addListener(Ma,"blur",function(){u.removeChild(Ma)})}))}else"dynamicArr"==La?Oa.appendChild(Z(ia,oa,ra.subType,ra.subDefVal,ra.countProperty,Pa,xa)):"staticArr"==La?Oa.appendChild(na(ia,oa,ra.subType,ra.subDefVal,ra.size,Pa,xa)):"readOnly"==La?(xa=document.createElement("input"),xa.setAttribute("readonly",""),xa.value=oa,xa.style.width="96px",xa.style.borderWidth="0px",Oa.appendChild(xa)):(Oa.innerHTML=mxUtils.htmlEntities(decodeURIComponent(oa)),
+mxEvent.addListener(Oa,"click",mxUtils.bind(sa,function(){function Ma(){var ya=ua.value;ya=0==ya.length&&"string"!=La?0:ya;ra.allowAuto&&(null!=ya.trim&&"auto"==ya.trim().toLowerCase()?(ya="auto",La="string"):(ya=parseFloat(ya),ya=isNaN(ya)?0:ya));null!=ra.min&&ya<ra.min?ya=ra.min:null!=ra.max&&ya>ra.max&&(ya=ra.max);ya=encodeURIComponent(("int"==La?parseInt(ya):ya)+"");W(ia,ya,ra)}var ua=document.createElement("input");T(Oa,ua,!0);ua.value=decodeURIComponent(oa);ua.className="gePropEditor";"int"!=
+La&&"float"!=La||ra.allowAuto||(ua.type="number",ua.step="int"==La?"1":"any",null!=ra.min&&(ua.min=parseFloat(ra.min)),null!=ra.max&&(ua.max=parseFloat(ra.max)));u.appendChild(ua);mxEvent.addListener(ua,"keypress",function(ya){13==ya.keyCode&&Ma()});ua.focus();mxEvent.addListener(ua,"blur",function(){Ma()})})));ra.isDeletable&&(xa=mxUtils.button("-",mxUtils.bind(sa,function(Ma){W(ia,"",ra,ra.index);mxEvent.consume(Ma)})),xa.style.height="16px",xa.style.width="25px",xa.style.float="right",xa.className=
"geColorBtn",Oa.appendChild(xa));Pa.appendChild(Oa);return Pa}var sa=this,Da=this.editorUi.editor.graph,Aa=[];u.style.position="relative";u.style.padding="0";var za=document.createElement("table");za.className="geProperties";za.style.whiteSpace="nowrap";za.style.width="100%";var Ca=document.createElement("tr");Ca.className="gePropHeader";var Qa=document.createElement("th");Qa.className="gePropHeaderCell";var Za=document.createElement("img");Za.src=Sidebar.prototype.expandedImage;Za.style.verticalAlign=
-"middle";Qa.appendChild(Za);mxUtils.write(Qa,mxResources.get("property"));Ca.style.cursor="pointer";var cb=function(){var ha=za.querySelectorAll(".gePropNonHeaderRow");if(sa.editorUi.propertiesCollapsed){Za.src=Sidebar.prototype.collapsedImage;var oa="none";for(var ra=u.childNodes.length-1;0<=ra;ra--)try{var qa=u.childNodes[ra],xa=qa.nodeName.toUpperCase();"INPUT"!=xa&&"SELECT"!=xa||u.removeChild(qa)}catch(Ga){}}else Za.src=Sidebar.prototype.expandedImage,oa="";for(ra=0;ra<ha.length;ra++)ha[ra].style.display=
+"middle";Qa.appendChild(Za);mxUtils.write(Qa,mxResources.get("property"));Ca.style.cursor="pointer";var cb=function(){var ia=za.querySelectorAll(".gePropNonHeaderRow");if(sa.editorUi.propertiesCollapsed){Za.src=Sidebar.prototype.collapsedImage;var oa="none";for(var ra=u.childNodes.length-1;0<=ra;ra--)try{var qa=u.childNodes[ra],xa=qa.nodeName.toUpperCase();"INPUT"!=xa&&"SELECT"!=xa||u.removeChild(qa)}catch(Ga){}}else Za.src=Sidebar.prototype.expandedImage,oa="";for(ra=0;ra<ia.length;ra++)ia[ra].style.display=
oa};mxEvent.addListener(Ca,"click",function(){sa.editorUi.propertiesCollapsed=!sa.editorUi.propertiesCollapsed;cb()});Ca.appendChild(Qa);Qa=document.createElement("th");Qa.className="gePropHeaderCell";Qa.innerHTML=mxResources.get("value");Ca.appendChild(Qa);za.appendChild(Ca);var Ja=!1,Ua=!1;Ca=null;1==N.vertices.length&&0==N.edges.length?Ca=N.vertices[0].id:0==N.vertices.length&&1==N.edges.length&&(Ca=N.edges[0].id);null!=Ca&&za.appendChild(Ba("id",mxUtils.htmlEntities(Ca),{dispName:"ID",type:"readOnly"},
!0,!1));for(var $a in I)if(Ca=I[$a],"function"!=typeof Ca.isVisible||Ca.isVisible(N,this)){var z=null!=N.style[$a]?mxUtils.htmlEntities(N.style[$a]+""):null!=Ca.getDefaultValue?Ca.getDefaultValue(N,this):Ca.defVal;if("separator"==Ca.type)Ua=!Ua;else{if("staticArr"==Ca.type)Ca.size=parseInt(N.style[Ca.sizeProperty]||I[Ca.sizeProperty].defVal)||0;else if(null!=Ca.dependentProps){var L=Ca.dependentProps,M=[],S=[];for(Qa=0;Qa<L.length;Qa++){var ca=N.style[L[Qa]];S.push(I[L[Qa]].subDefVal);M.push(null!=
ca?ca.split(","):[])}Ca.dependentPropsDefVal=S;Ca.dependentPropsVals=M}za.appendChild(Ba($a,z,Ca,Ja,Ua));Ja=!Ja}}for(Qa=0;Qa<Aa.length;Qa++)for(Ca=Aa[Qa],I=Ca.parentRow,N=0;N<Ca.values.length;N++)$a=Ba(Ca.name,Ca.values[N],{type:Ca.type,parentRow:Ca.parentRow,isDeletable:Ca.isDeletable,index:N,defVal:Ca.defVal,countProperty:Ca.countProperty,size:Ca.size},0==N%2,Ca.flipBkg),I.parentNode.insertBefore($a,I.nextSibling),I=$a;u.appendChild(za);cb();return u};StyleFormatPanel.prototype.addStyles=function(u){function I(Ca){mxEvent.addListener(Ca,
"mouseenter",function(){Ca.style.opacity="1"});mxEvent.addListener(Ca,"mouseleave",function(){Ca.style.opacity="0.5"})}var N=this.editorUi,W=N.editor.graph,T=document.createElement("div");T.style.whiteSpace="nowrap";T.style.paddingLeft="24px";T.style.paddingRight="20px";u.style.paddingLeft="16px";u.style.paddingBottom="6px";u.style.position="relative";u.appendChild(T);var Q="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),
Z=document.createElement("div");Z.style.whiteSpace="nowrap";Z.style.position="relative";Z.style.textAlign="center";Z.style.width="210px";for(var na=[],va=0;va<this.defaultColorSchemes.length;va++){var Ba=document.createElement("div");Ba.style.display="inline-block";Ba.style.width="6px";Ba.style.height="6px";Ba.style.marginLeft="4px";Ba.style.marginRight="3px";Ba.style.borderRadius="3px";Ba.style.cursor="pointer";Ba.style.background="transparent";Ba.style.border="1px solid #b5b6b7";mxUtils.bind(this,
function(Ca){mxEvent.addListener(Ba,"click",mxUtils.bind(this,function(){sa(Ca)}))})(va);na.push(Ba);Z.appendChild(Ba)}var sa=mxUtils.bind(this,function(Ca){null!=na[Ca]&&(null!=this.format.currentScheme&&null!=na[this.format.currentScheme]&&(na[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=Ca,Da(this.defaultColorSchemes[this.format.currentScheme]),na[this.format.currentScheme].style.background="#84d7ff")}),Da=mxUtils.bind(this,function(Ca){var Qa=mxUtils.bind(this,
-function(cb){var Ja=mxUtils.button("",mxUtils.bind(this,function(z){W.getModel().beginUpdate();try{for(var L=N.getSelectionState().cells,M=0;M<L.length;M++){for(var S=W.getModel().getStyle(L[M]),ca=0;ca<Q.length;ca++)S=mxUtils.removeStylename(S,Q[ca]);var ha=W.getModel().isVertex(L[M])?W.defaultVertexStyle:W.defaultEdgeStyle;null!=cb?(mxEvent.isShiftDown(z)||(S=""==cb.fill?mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,cb.fill||mxUtils.getValue(ha,
-mxConstants.STYLE_FILLCOLOR,null)),S=mxUtils.setStyle(S,mxConstants.STYLE_GRADIENTCOLOR,cb.gradient||mxUtils.getValue(ha,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(z)||mxClient.IS_MAC&&mxEvent.isMetaDown(z)||!W.getModel().isVertex(L[M])||(S=mxUtils.setStyle(S,mxConstants.STYLE_FONTCOLOR,cb.font||mxUtils.getValue(ha,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(z)||(S=""==cb.stroke?mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,
-cb.stroke||mxUtils.getValue(ha,mxConstants.STYLE_STROKECOLOR,null)))):(S=mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(ha,mxConstants.STYLE_FILLCOLOR,"#ffffff")),S=mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(ha,mxConstants.STYLE_STROKECOLOR,"#000000")),S=mxUtils.setStyle(S,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(ha,mxConstants.STYLE_GRADIENTCOLOR,null)),W.getModel().isVertex(L[M])&&(S=mxUtils.setStyle(S,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(ha,
+function(cb){var Ja=mxUtils.button("",mxUtils.bind(this,function(z){W.getModel().beginUpdate();try{for(var L=N.getSelectionState().cells,M=0;M<L.length;M++){for(var S=W.getModel().getStyle(L[M]),ca=0;ca<Q.length;ca++)S=mxUtils.removeStylename(S,Q[ca]);var ia=W.getModel().isVertex(L[M])?W.defaultVertexStyle:W.defaultEdgeStyle;null!=cb?(mxEvent.isShiftDown(z)||(S=""==cb.fill?mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,cb.fill||mxUtils.getValue(ia,
+mxConstants.STYLE_FILLCOLOR,null)),S=mxUtils.setStyle(S,mxConstants.STYLE_GRADIENTCOLOR,cb.gradient||mxUtils.getValue(ia,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(z)||mxClient.IS_MAC&&mxEvent.isMetaDown(z)||!W.getModel().isVertex(L[M])||(S=mxUtils.setStyle(S,mxConstants.STYLE_FONTCOLOR,cb.font||mxUtils.getValue(ia,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(z)||(S=""==cb.stroke?mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,
+cb.stroke||mxUtils.getValue(ia,mxConstants.STYLE_STROKECOLOR,null)))):(S=mxUtils.setStyle(S,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(ia,mxConstants.STYLE_FILLCOLOR,"#ffffff")),S=mxUtils.setStyle(S,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(ia,mxConstants.STYLE_STROKECOLOR,"#000000")),S=mxUtils.setStyle(S,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(ia,mxConstants.STYLE_GRADIENTCOLOR,null)),W.getModel().isVertex(L[M])&&(S=mxUtils.setStyle(S,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(ia,
mxConstants.STYLE_FONTCOLOR,null))));W.getModel().setStyle(L[M],S)}}finally{W.getModel().endUpdate()}}));Ja.className="geStyleButton";Ja.style.width="36px";Ja.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";Ja.style.margin="0px 6px 6px 0px";if(null!=cb){var Ua="1"==urlParams.sketch?"2px solid":"1px solid";null!=cb.gradient?mxClient.IS_IE&&10>document.documentMode?Ja.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+cb.fill+"', EndColorStr='"+cb.gradient+"', GradientType=0)":
Ja.style.backgroundImage="linear-gradient("+cb.fill+" 0px,"+cb.gradient+" 100%)":cb.fill==mxConstants.NONE?Ja.style.background="url('"+Dialog.prototype.noColorImage+"')":Ja.style.backgroundColor=""==cb.fill?mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):cb.fill||mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");Ja.style.border=cb.stroke==mxConstants.NONE?Ua+" transparent":
""==cb.stroke?Ua+" "+mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):Ua+" "+(cb.stroke||mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=cb.title&&Ja.setAttribute("title",cb.title)}else{Ua=mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff");var $a=mxUtils.getValue(W.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");Ja.style.backgroundColor=
@@ -3275,9 +3276,9 @@ Q.marginBottom||0;Z.allowGaps=Q.allowGaps||0;Z.horizontal="1"==mxUtils.getValue(
Graph.processFontAttributes(sa)};var da=mxText.prototype.redraw;mxText.prototype.redraw=function(){da.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(u,I,N){function W(){for(var Ca=Z.getSelectionCells(),Qa=[],Za=0;Za<Ca.length;Za++)Z.isCellVisible(Ca[Za])&&Qa.push(Ca[Za]);Z.setSelectionCells(Qa)}function T(Ca){Z.setHiddenTags(Ca?[]:na.slice());W();Z.refresh()}function Q(Ca,Qa){Ba.innerText="";if(0<
Ca.length){var Za=document.createElement("table");Za.setAttribute("cellpadding","2");Za.style.boxSizing="border-box";Za.style.tableLayout="fixed";Za.style.width="100%";var cb=document.createElement("tbody");if(null!=Ca&&0<Ca.length)for(var Ja=0;Ja<Ca.length;Ja++)(function(Ua){var $a=0>mxUtils.indexOf(Z.hiddenTags,Ua),z=document.createElement("tr"),L=document.createElement("td");L.style.align="center";L.style.width="16px";var M=document.createElement("img");M.setAttribute("src",$a?Editor.visibleImage:
Editor.hiddenImage);M.setAttribute("title",mxResources.get($a?"hideIt":"show",[Ua]));mxUtils.setOpacity(M,$a?75:25);M.style.verticalAlign="middle";M.style.cursor="pointer";M.style.width="16px";if(I||Editor.isDarkMode())M.style.filter="invert(100%)";L.appendChild(M);mxEvent.addListener(M,"click",function(ca){mxEvent.isShiftDown(ca)?T(0<=mxUtils.indexOf(Z.hiddenTags,Ua)):(Z.toggleHiddenTag(Ua),W(),Z.refresh());mxEvent.consume(ca)});z.appendChild(L);L=document.createElement("td");L.style.overflow="hidden";
-L.style.whiteSpace="nowrap";L.style.textOverflow="ellipsis";L.style.verticalAlign="middle";L.style.cursor="pointer";L.setAttribute("title",Ua);a=document.createElement("a");mxUtils.write(a,Ua);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,$a?100:40);L.appendChild(a);mxEvent.addListener(L,"click",function(ca){if(mxEvent.isShiftDown(ca)){T(!0);var ha=Z.getCellsForTags([Ua],null,null,!0);Z.isEnabled()?Z.setSelectionCells(ha):Z.highlightCells(ha)}else if($a&&0<Z.hiddenTags.length)T(!0);
-else{ha=na.slice();var oa=mxUtils.indexOf(ha,Ua);ha.splice(oa,1);Z.setHiddenTags(ha);W();Z.refresh()}mxEvent.consume(ca)});z.appendChild(L);if(Z.isEnabled()){L=document.createElement("td");L.style.verticalAlign="middle";L.style.textAlign="center";L.style.width="18px";if(null==Qa){L.style.align="center";L.style.width="16px";M=document.createElement("img");M.setAttribute("src",Editor.crossImage);M.setAttribute("title",mxResources.get("removeIt",[Ua]));mxUtils.setOpacity(M,$a?75:25);M.style.verticalAlign=
-"middle";M.style.cursor="pointer";M.style.width="16px";if(I||Editor.isDarkMode())M.style.filter="invert(100%)";mxEvent.addListener(M,"click",function(ca){var ha=mxUtils.indexOf(na,Ua);0<=ha&&na.splice(ha,1);Z.removeTagsForCells(Z.model.getDescendants(Z.model.getRoot()),[Ua]);Z.refresh();mxEvent.consume(ca)});L.appendChild(M)}else{var S=document.createElement("input");S.setAttribute("type","checkbox");S.style.margin="0px";S.defaultChecked=null!=Qa&&0<=mxUtils.indexOf(Qa,Ua);S.checked=S.defaultChecked;
+L.style.whiteSpace="nowrap";L.style.textOverflow="ellipsis";L.style.verticalAlign="middle";L.style.cursor="pointer";L.setAttribute("title",Ua);a=document.createElement("a");mxUtils.write(a,Ua);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,$a?100:40);L.appendChild(a);mxEvent.addListener(L,"click",function(ca){if(mxEvent.isShiftDown(ca)){T(!0);var ia=Z.getCellsForTags([Ua],null,null,!0);Z.isEnabled()?Z.setSelectionCells(ia):Z.highlightCells(ia)}else if($a&&0<Z.hiddenTags.length)T(!0);
+else{ia=na.slice();var oa=mxUtils.indexOf(ia,Ua);ia.splice(oa,1);Z.setHiddenTags(ia);W();Z.refresh()}mxEvent.consume(ca)});z.appendChild(L);if(Z.isEnabled()){L=document.createElement("td");L.style.verticalAlign="middle";L.style.textAlign="center";L.style.width="18px";if(null==Qa){L.style.align="center";L.style.width="16px";M=document.createElement("img");M.setAttribute("src",Editor.crossImage);M.setAttribute("title",mxResources.get("removeIt",[Ua]));mxUtils.setOpacity(M,$a?75:25);M.style.verticalAlign=
+"middle";M.style.cursor="pointer";M.style.width="16px";if(I||Editor.isDarkMode())M.style.filter="invert(100%)";mxEvent.addListener(M,"click",function(ca){var ia=mxUtils.indexOf(na,Ua);0<=ia&&na.splice(ia,1);Z.removeTagsForCells(Z.model.getDescendants(Z.model.getRoot()),[Ua]);Z.refresh();mxEvent.consume(ca)});L.appendChild(M)}else{var S=document.createElement("input");S.setAttribute("type","checkbox");S.style.margin="0px";S.defaultChecked=null!=Qa&&0<=mxUtils.indexOf(Qa,Ua);S.checked=S.defaultChecked;
S.style.background="transparent";S.setAttribute("title",mxResources.get(S.defaultChecked?"removeIt":"add",[Ua]));mxEvent.addListener(S,"change",function(ca){S.checked?Z.addTagsForCells(Z.getSelectionCells(),[Ua]):Z.removeTagsForCells(Z.getSelectionCells(),[Ua]);mxEvent.consume(ca)});L.appendChild(S)}z.appendChild(L)}cb.appendChild(z)})(Ca[Ja]);Za.appendChild(cb);Ba.appendChild(Za)}}var Z=this,na=Z.hiddenTags.slice(),va=document.createElement("div");va.style.userSelect="none";va.style.overflow="hidden";
va.style.padding="10px";va.style.height="100%";var Ba=document.createElement("div");Ba.style.boxSizing="border-box";Ba.style.borderRadius="4px";Ba.style.userSelect="none";Ba.style.overflow="auto";Ba.style.position="absolute";Ba.style.left="10px";Ba.style.right="10px";Ba.style.top="10px";Ba.style.border=Z.isEnabled()?"1px solid #808080":"none";Ba.style.bottom=Z.isEnabled()?"48px":"10px";va.appendChild(Ba);var sa=mxUtils.button(mxResources.get("reset"),function(Ca){Z.setHiddenTags([]);mxEvent.isShiftDown(Ca)||
(na=Z.hiddenTags.slice());W();Z.refresh()});sa.setAttribute("title",mxResources.get("reset"));sa.className="geBtn";sa.style.margin="0 4px 0 0";var Da=mxUtils.button(mxResources.get("add"),function(){null!=N&&N(na,function(Ca){na=Ca;Aa()})});Da.setAttribute("title",mxResources.get("add"));Da.className="geBtn";Da.style.margin="0";Z.addListener(mxEvent.ROOT,function(){na=Z.hiddenTags.slice()});var Aa=mxUtils.bind(this,function(Ca,Qa){if(u()){Ca=Z.getAllTags();for(Qa=0;Qa<Ca.length;Qa++)0>mxUtils.indexOf(na,
@@ -3348,16 +3349,16 @@ Ba.setAttribute("name","pages-printdialog");Z.appendChild(Ba);I=document.createE
I+1;Da.value=va;Aa.value=va;break}Da.setAttribute("max",na);Aa.setAttribute("max",na);u.isPagesEnabled()?1<na&&(Q.appendChild(Z),sa.checked=!0):sa.checked=!0;mxUtils.br(Z);var za=document.createElement("input");za.setAttribute("value","all");za.setAttribute("type","radio");za.style.marginRight="8px";T.isSelectionEmpty()&&za.setAttribute("disabled","disabled");var Ca=document.createElement("div");Ca.style.marginBottom="10px";1==na?(za.setAttribute("type","checkbox"),za.style.marginBottom="12px",Ca.appendChild(za)):
(za.setAttribute("name","pages-printdialog"),za.style.marginBottom="8px",Z.appendChild(za));I=document.createElement("span");mxUtils.write(I,mxResources.get("selectionOnly"));za.parentNode.appendChild(I);1==na&&mxUtils.br(za.parentNode);var Qa=document.createElement("input");Qa.style.marginRight="8px";Qa.setAttribute("value","adjust");Qa.setAttribute("type","radio");Qa.setAttribute("name","printZoom");Ca.appendChild(Qa);I=document.createElement("span");mxUtils.write(I,mxResources.get("adjustTo"));
Ca.appendChild(I);var Za=document.createElement("input");Za.style.cssText="margin:0 8px 0 8px;";Za.setAttribute("value","100 %");Za.style.width="50px";Ca.appendChild(Za);mxEvent.addListener(Za,"focus",function(){Qa.checked=!0});Q.appendChild(Ca);Z=Z.cloneNode(!1);var cb=Qa.cloneNode(!0);cb.setAttribute("value","fit");Qa.setAttribute("checked","checked");I=document.createElement("div");I.style.cssText="display:inline-block;vertical-align:top;padding-top:2px;";I.appendChild(cb);Z.appendChild(I);Ca=
-document.createElement("table");Ca.style.display="inline-block";var Ja=document.createElement("tbody"),Ua=document.createElement("tr"),$a=Ua.cloneNode(!0),z=document.createElement("td"),L=z.cloneNode(!0),M=z.cloneNode(!0),S=z.cloneNode(!0),ca=z.cloneNode(!0),ha=z.cloneNode(!0);z.style.textAlign="right";S.style.textAlign="right";mxUtils.write(z,mxResources.get("fitTo"));var oa=document.createElement("input");oa.style.cssText="margin:0 8px 0 8px;";oa.setAttribute("value","1");oa.setAttribute("min",
-"1");oa.setAttribute("type","number");oa.style.width="40px";L.appendChild(oa);I=document.createElement("span");mxUtils.write(I,mxResources.get("fitToSheetsAcross"));M.appendChild(I);mxUtils.write(S,mxResources.get("fitToBy"));var ra=oa.cloneNode(!0);ca.appendChild(ra);mxEvent.addListener(oa,"focus",function(){cb.checked=!0});mxEvent.addListener(ra,"focus",function(){cb.checked=!0});I=document.createElement("span");mxUtils.write(I,mxResources.get("fitToSheetsDown"));ha.appendChild(I);Ua.appendChild(z);
-Ua.appendChild(L);Ua.appendChild(M);$a.appendChild(S);$a.appendChild(ca);$a.appendChild(ha);Ja.appendChild(Ua);Ja.appendChild($a);Ca.appendChild(Ja);Z.appendChild(Ca);Q.appendChild(Z);Z=document.createElement("div");I=document.createElement("div");I.style.fontWeight="bold";I.style.marginBottom="12px";mxUtils.write(I,mxResources.get("paperSize"));Z.appendChild(I);I=document.createElement("div");I.style.marginBottom="12px";var qa=PageSetupDialog.addPageFormatPanel(I,"printdialog",u.editor.graph.pageFormat||
+document.createElement("table");Ca.style.display="inline-block";var Ja=document.createElement("tbody"),Ua=document.createElement("tr"),$a=Ua.cloneNode(!0),z=document.createElement("td"),L=z.cloneNode(!0),M=z.cloneNode(!0),S=z.cloneNode(!0),ca=z.cloneNode(!0),ia=z.cloneNode(!0);z.style.textAlign="right";S.style.textAlign="right";mxUtils.write(z,mxResources.get("fitTo"));var oa=document.createElement("input");oa.style.cssText="margin:0 8px 0 8px;";oa.setAttribute("value","1");oa.setAttribute("min",
+"1");oa.setAttribute("type","number");oa.style.width="40px";L.appendChild(oa);I=document.createElement("span");mxUtils.write(I,mxResources.get("fitToSheetsAcross"));M.appendChild(I);mxUtils.write(S,mxResources.get("fitToBy"));var ra=oa.cloneNode(!0);ca.appendChild(ra);mxEvent.addListener(oa,"focus",function(){cb.checked=!0});mxEvent.addListener(ra,"focus",function(){cb.checked=!0});I=document.createElement("span");mxUtils.write(I,mxResources.get("fitToSheetsDown"));ia.appendChild(I);Ua.appendChild(z);
+Ua.appendChild(L);Ua.appendChild(M);$a.appendChild(S);$a.appendChild(ca);$a.appendChild(ia);Ja.appendChild(Ua);Ja.appendChild($a);Ca.appendChild(Ja);Z.appendChild(Ca);Q.appendChild(Z);Z=document.createElement("div");I=document.createElement("div");I.style.fontWeight="bold";I.style.marginBottom="12px";mxUtils.write(I,mxResources.get("paperSize"));Z.appendChild(I);I=document.createElement("div");I.style.marginBottom="12px";var qa=PageSetupDialog.addPageFormatPanel(I,"printdialog",u.editor.graph.pageFormat||
mxConstants.PAGE_FORMAT_A4_PORTRAIT);Z.appendChild(I);I=document.createElement("span");mxUtils.write(I,mxResources.get("pageScale"));Z.appendChild(I);var xa=document.createElement("input");xa.style.cssText="margin:0 8px 0 8px;";xa.setAttribute("value","100 %");xa.style.width="60px";Z.appendChild(xa);Q.appendChild(Z);I=document.createElement("div");I.style.cssText="text-align:right;margin:48px 0 0 0;";Z=mxUtils.button(mxResources.get("cancel"),function(){u.hideDialog()});Z.className="geBtn";u.editor.cancelFirst&&
I.appendChild(Z);u.isOffline()||(Ca=mxUtils.button(mxResources.get("help"),function(){T.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),Ca.className="geBtn",I.appendChild(Ca));PrintDialog.previewEnabled&&(Ca=mxUtils.button(mxResources.get("preview"),function(){u.hideDialog();W(!1)}),Ca.className="geBtn",I.appendChild(Ca));Ca=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){u.hideDialog();W(!0)});Ca.className="geBtn gePrimaryBtn";I.appendChild(Ca);u.editor.cancelFirst||
-I.appendChild(Z);Q.appendChild(I);this.container=Q};var ia=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var u=this.image;null!=u&&null!=u.src&&Graph.isPageLink(u.src)&&(u={originalSrc:u.src});this.page.viewState.backgroundImage=u}null!=this.format&&(this.page.viewState.pageFormat=
-this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else ia.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=
+I.appendChild(Z);Q.appendChild(I);this.container=Q};var ha=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var u=this.image;null!=u&&null!=u.src&&Graph.isPageLink(u.src)&&(u={originalSrc:u.src});this.page.viewState.backgroundImage=u}null!=this.format&&(this.page.viewState.pageFormat=
+this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else ha.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=
!this.shadowVisible)};Editor.prototype.useCanvasForExport=!1;try{var la=document.createElement("canvas"),ta=new Image;ta.onload=function(){try{la.getContext("2d").drawImage(ta,0,0);var u=la.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=u&&6<u.length}catch(I){}};ta.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(u){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};b.afterDecode=function(e,k,n){n.previousColor=n.color;n.previousImage=n.image;n.previousFormat=n.format;null!=n.foldingEnabled&&(n.foldingEnabled=!n.foldingEnabled);null!=n.mathEnabled&&(n.mathEnabled=!n.mathEnabled);null!=n.shadowVisible&&(n.shadowVisible=!n.shadowVisible);return n};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="19.0.2";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="19.0.3";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&
"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(d,f,g,m,q,y,F){y=null!=y?y:0<=d.indexOf("NetworkError")||0<=d.indexOf("SecurityError")||0<=d.indexOf("NS_ERROR_FAILURE")||0<=d.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -3409,7 +3410,7 @@ urlParams.pages&&null==this.fileNode&&null!=f&&(this.fileNode=f.ownerDocument.cr
F=y.getChildren(y.root);for(m=0;m<F.length;m++){var C=F[m];y.setVisible(C,f[C.id]||!1)}}catch(H){}};EditorUi.prototype.getBaseFilename=function(d){var f=this.getCurrentFile();f=null!=f&&null!=f.getTitle()?f.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(f)||/(\.html)$/i.test(f)||/(\.svg)$/i.test(f)||/(\.png)$/i.test(f))f=f.substring(0,f.lastIndexOf("."));/(\.drawio)$/i.test(f)&&(f=f.substring(0,f.lastIndexOf(".")));!d&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
0<this.currentPage.getName().length&&(f=f+"-"+this.currentPage.getName());return f};EditorUi.prototype.downloadFile=function(d,f,g,m,q,y,F,C,H,G,aa,da){try{m=null!=m?m:this.editor.graph.isSelectionEmpty();var ba=this.getBaseFilename("remoteSvg"==d?!1:!q),Y=ba+("xml"==d||"pdf"==d&&aa?".drawio":"")+"."+d;if("xml"==d){var pa=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,m,q,null,null,null,f);this.saveData(Y,d,pa,"text/xml")}else if("html"==d)pa=this.getHtml2(this.getFileData(!0),this.editor.graph,
ba),this.saveData(Y,d,pa,"text/html");else if("svg"!=d&&"xmlsvg"!=d||!this.spinner.spin(document.body,mxResources.get("export"))){if("xmlpng"==d)Y=ba+".png";else if("jpeg"==d)Y=ba+".jpg";else if("remoteSvg"==d){Y=ba+".svg";d="svg";var O=parseInt(H);"string"===typeof C&&0<C.indexOf("%")&&(C=parseInt(C)/100);if(0<O){var X=this.editor.graph,ea=X.getGraphBounds();var ka=Math.ceil(ea.width*C/X.view.scale+2*O);var ja=Math.ceil(ea.height*C/X.view.scale+2*O)}}this.saveRequest(Y,d,mxUtils.bind(this,function(R,
-ia){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var ta=this.createDownloadRequest(R,d,m,ia,F,q,C,H,G,aa,da,ka,ja);this.editor.graph.pageVisible=la;return ta}catch(u){this.handleError(u)}}))}else{var U=null,J=mxUtils.bind(this,function(R){R.length<=MAX_REQUEST_SIZE?this.saveData(Y,"svg",R,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(U)}))});if("svg"==d){var V=this.editor.graph.background;
+ha){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var ta=this.createDownloadRequest(R,d,m,ha,F,q,C,H,G,aa,da,ka,ja);this.editor.graph.pageVisible=la;return ta}catch(u){this.handleError(u)}}))}else{var U=null,J=mxUtils.bind(this,function(R){R.length<=MAX_REQUEST_SIZE?this.saveData(Y,"svg",R,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(U)}))});if("svg"==d){var V=this.editor.graph.background;
if(F||V==mxConstants.NONE)V=null;var P=this.editor.graph.getSvg(V,null,null,null,null,m);g&&this.editor.graph.addSvgShadow(P);this.editor.convertImages(P,mxUtils.bind(this,mxUtils.bind(this,function(R){this.spinner.stop();J(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(R))})))}else Y=ba+".svg",U=this.getFileData(!1,!0,null,mxUtils.bind(this,function(R){this.spinner.stop();J(R)}),m)}}catch(R){this.handleError(R)}};EditorUi.prototype.createDownloadRequest=function(d,f,g,m,q,y,F,C,H,
G,aa,da,ba){var Y=this.editor.graph,pa=Y.getGraphBounds();g=this.getFileData(!0,null,null,null,g,0==y?!1:"xmlpng"!=f,null,null,null,!1,"pdf"==f);var O="",X="";if(pa.width*pa.height>MAX_AREA||g.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};G=G?"1":"0";"pdf"==f&&(null!=aa?X="&from="+aa.from+"&to="+aa.to:0==y&&(X="&allPages=1"));"xmlpng"==f&&(G="1",f="png");if(("xmlpng"==f||"svg"==f)&&null!=this.pages&&null!=this.currentPage)for(y=0;y<this.pages.length;y++)if(this.pages[y]==
this.currentPage){O="&from="+y;break}y=Y.background;"png"!=f&&"pdf"!=f&&"svg"!=f||!q?q||null!=y&&y!=mxConstants.NONE||(y="#ffffff"):y=mxConstants.NONE;q={globalVars:Y.getExportVariables()};H&&(q.grid={size:Y.gridSize,steps:Y.view.gridSteps,color:Y.view.gridColor});Graph.translateDiagram&&(q.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+f+O+X+"&bg="+(null!=y?y:mxConstants.NONE)+"&base64="+m+"&embedXml="+G+"&xml="+encodeURIComponent(g)+(null!=d?"&filename="+encodeURIComponent(d):
@@ -3445,10 +3446,10 @@ LocalLibrary,!0,function(){null==da||d.isModified()||(H.style.paddingRight=18*G.
U=ba.view.getBounds(ja),J=ba.view.scale;U.x/=J;U.y/=J;U.width/=J;U.height/=J;U.x-=ba.view.translate.x;U.y-=ba.view.translate.y;X(ja,U)}mxEvent.consume(ka)});mxEvent.addGestureListeners(C,function(){},mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.panningManager&&null!=ba.graphHandler.first&&(ba.graphHandler.suspend(),null!=ba.graphHandler.hint&&(ba.graphHandler.hint.style.visibility="hidden"),C.style.backgroundColor="#f1f3f4",C.style.cursor="copy",ba.panningManager.stop(),ba.autoScroll=!1,
mxEvent.consume(ka))}),mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.panningManager&&null!=ba.graphHandler&&(C.style.backgroundColor="",C.style.cursor="default",this.sidebar.showTooltips=!0,ba.panningManager.stop(),ba.graphHandler.reset(),ba.isMouseDown=!1,ba.autoScroll=!0,ea(ka),mxEvent.consume(ka))}));mxEvent.addListener(C,"mouseleave",mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.graphHandler.first&&(ba.graphHandler.resume(),null!=ba.graphHandler.hint&&(ba.graphHandler.hint.style.visibility=
"visible"),C.style.backgroundColor="",C.style.cursor="",ba.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(C,"dragover",mxUtils.bind(this,function(ka){C.style.backgroundColor="#f1f3f4";ka.dataTransfer.dropEffect="copy";C.style.cursor="copy";this.sidebar.hideTooltip();ka.stopPropagation();ka.preventDefault()})),mxEvent.addListener(C,"drop",mxUtils.bind(this,function(ka){C.style.cursor="";C.style.backgroundColor="";0<ka.dataTransfer.files.length&&this.importFiles(ka.dataTransfer.files,0,0,
-this.maxImageSize,mxUtils.bind(this,function(ja,U,J,V,P,R,ia,la,ta){if(null!=ja&&"image/"==U.substring(0,6))ja="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(ja),ja=[new mxCell("",new mxGeometry(0,0,P,R),ja)],ja[0].vertex=!0,X(ja,new mxRectangle(0,0,P,R),ka,mxEvent.isAltDown(ka)?null:ia.substring(0,ia.lastIndexOf(".")).replace(/_/g," ")),null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null);else{var u=!1,I=
+this.maxImageSize,mxUtils.bind(this,function(ja,U,J,V,P,R,ha,la,ta){if(null!=ja&&"image/"==U.substring(0,6))ja="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(ja),ja=[new mxCell("",new mxGeometry(0,0,P,R),ja)],ja[0].vertex=!0,X(ja,new mxRectangle(0,0,P,R),ka,mxEvent.isAltDown(ka)?null:ha.substring(0,ha.lastIndexOf(".")).replace(/_/g," ")),null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null);else{var u=!1,I=
mxUtils.bind(this,function(N,W){null!=N&&"application/pdf"==W&&(W=Editor.extractGraphModelFromPdf(N),null!=W&&0<W.length&&(N=W));if(null!=N)if(N=mxUtils.parseXml(N),"mxlibrary"==N.documentElement.nodeName)try{var T=JSON.parse(mxUtils.getTextContent(N.documentElement));F(T,C);f=f.concat(T);O(ka);this.spinner.stop();u=!0}catch(va){}else if("mxfile"==N.documentElement.nodeName)try{var Q=N.documentElement.getElementsByTagName("diagram");for(T=0;T<Q.length;T++){var Z=this.stringToCells(Editor.getDiagramNodeXml(Q[T])),
-na=this.editor.graph.getBoundingBoxFromGeometry(Z);X(Z,new mxRectangle(0,0,na.width,na.height),ka)}u=!0}catch(va){null!=window.console&&console.log("error in drop handler:",va)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)});null!=ta&&null!=ia&&(/(\.v(dx|sdx?))($|\?)/i.test(ia)||/(\.vs(x|sx?))($|\?)/i.test(ia))?this.importVisio(ta,function(N){I(N,"text/xml")},null,ia):(new XMLHttpRequest).upload&&
-this.isRemoteFileFormat(ja,ia)&&null!=ta?this.isExternalDataComms()?this.parseFile(ta,mxUtils.bind(this,function(N){4==N.readyState&&(this.spinner.stop(),200<=N.status&&299>=N.status?I(N.responseText,"text/xml"):this.handleError({message:mxResources.get(413==N.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):I(ja,U)}}));ka.stopPropagation();ka.preventDefault()})),
+na=this.editor.graph.getBoundingBoxFromGeometry(Z);X(Z,new mxRectangle(0,0,na.width,na.height),ka)}u=!0}catch(va){null!=window.console&&console.log("error in drop handler:",va)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)});null!=ta&&null!=ha&&(/(\.v(dx|sdx?))($|\?)/i.test(ha)||/(\.vs(x|sx?))($|\?)/i.test(ha))?this.importVisio(ta,function(N){I(N,"text/xml")},null,ha):(new XMLHttpRequest).upload&&
+this.isRemoteFileFormat(ja,ha)&&null!=ta?this.isExternalDataComms()?this.parseFile(ta,mxUtils.bind(this,function(N){4==N.readyState&&(this.spinner.stop(),200<=N.status&&299>=N.status?I(N.responseText,"text/xml"):this.handleError({message:mxResources.get(413==N.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):I(ja,U)}}));ka.stopPropagation();ka.preventDefault()})),
mxEvent.addListener(C,"dragleave",function(ka){C.style.cursor="";C.style.backgroundColor="";ka.stopPropagation();ka.preventDefault()}));aa=aa.cloneNode(!1);aa.setAttribute("src",Editor.editImage);aa.setAttribute("title",mxResources.get("edit"));G.insertBefore(aa,G.firstChild);mxEvent.addListener(aa,"click",pa);mxEvent.addListener(C,"dblclick",function(ka){mxEvent.getSource(ka)==C&&pa(ka)});m=aa.cloneNode(!1);m.setAttribute("src",Editor.plusImage);m.setAttribute("title",mxResources.get("add"));G.insertBefore(m,
G.firstChild);mxEvent.addListener(m,"click",ea);this.isOffline()||".scratchpad"!=d.title||null==EditorUi.scratchpadHelpLink||(m=document.createElement("span"),m.setAttribute("title",mxResources.get("help")),m.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(m,"?"),mxEvent.addGestureListeners(m,mxUtils.bind(this,function(ka){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(ka)})),G.insertBefore(m,G.firstChild))}H.appendChild(G);H.style.paddingRight=
18*G.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(d,f){for(var g=0;g<d.length;g++){var m=d[g],q=m.data;if(null!=q){q=this.convertDataUri(q);var y="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==m.aspect&&(y+="aspect=fixed;");f.appendChild(this.sidebar.createVertexTemplate(y+"image="+q,m.w,m.h,"",m.title||"",!1,null,!0))}else null!=m.xml&&(q=this.stringToCells(Graph.decompress(m.xml)),0<q.length&&f.appendChild(this.sidebar.createVertexTemplateFromCells(q,
@@ -3532,12 +3533,12 @@ function(d,f,g,m,q,y,F,C,H){F=null!=F?F:Editor.defaultIncludeDiagram;var G=docum
"8px";X.style.marginLeft="24px";X.setAttribute("disabled","disabled");X.setAttribute("type","checkbox");var ea=document.createElement("select");ea.style.marginTop="16px";ea.style.marginLeft="8px";d=["selectionOnly","diagram","page"];var ka={};for(ba=0;ba<d.length;ba++)if(!aa.isSelectionEmpty()||"selectionOnly"!=d[ba]){var ja=document.createElement("option");mxUtils.write(ja,mxResources.get(d[ba]));ja.setAttribute("value",d[ba]);ea.appendChild(ja);ka[d[ba]]=ja}H?(mxUtils.write(G,mxResources.get("size")+
":"),G.appendChild(ea),mxUtils.br(G),da+=26,mxEvent.addListener(ea,"change",function(){"selectionOnly"==ea.value&&(O.checked=!0)})):y&&(G.appendChild(X),mxUtils.write(G,mxResources.get("crop")),mxUtils.br(G),da+=30,mxEvent.addListener(O,"change",function(){O.checked?X.removeAttribute("disabled"):X.setAttribute("disabled","disabled")}));aa.isSelectionEmpty()?H&&(O.style.display="none",O.nextSibling.style.display="none",O.nextSibling.nextSibling.style.display="none",da-=30):(ea.value="diagram",X.setAttribute("checked",
"checked"),X.defaultChecked=!0,mxEvent.addListener(O,"change",function(){ea.value=O.checked?"selectionOnly":"diagram"}));var U=this.addCheckbox(G,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=C),J=null;Editor.isDarkMode()&&(J=this.addCheckbox(G,mxResources.get("dark"),!0),da+=26);var V=this.addCheckbox(G,mxResources.get("shadow"),aa.shadowVisible),P=null;if("png"==C||"jpeg"==C)P=this.addCheckbox(G,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),da+=30;var R=
-this.addCheckbox(G,mxResources.get("includeCopyOfMyDiagram"),F,null,null,"jpeg"!=C);R.style.marginBottom="16px";var ia=document.createElement("input");ia.style.marginBottom="16px";ia.style.marginRight="8px";ia.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ia.setAttribute("disabled","disabled");var la=document.createElement("select");la.style.maxWidth="260px";la.style.marginLeft="8px";la.style.marginRight="10px";la.style.marginBottom="16px";la.className="geBtn";y=document.createElement("option");
-y.setAttribute("value","none");mxUtils.write(y,mxResources.get("noChange"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","embedFonts");mxUtils.write(y,mxResources.get("embedFonts"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","lblToSvg");mxUtils.write(y,mxResources.get("lblToSvg"));this.isOffline()||EditorUi.isElectronApp||la.appendChild(y);mxEvent.addListener(la,"change",mxUtils.bind(this,function(){"lblToSvg"==la.value?(ia.checked=!0,
-ia.setAttribute("disabled","disabled"),ka.page.style.display="none","page"==ea.value&&(ea.value="diagram"),V.checked=!1,V.setAttribute("disabled","disabled"),u.style.display="inline-block",ta.style.display="none"):"disabled"==ia.getAttribute("disabled")&&(ia.checked=!1,ia.removeAttribute("disabled"),V.removeAttribute("disabled"),ka.page.style.display="",u.style.display="none",ta.style.display="")}));f&&(G.appendChild(ia),mxUtils.write(G,mxResources.get("embedImages")),mxUtils.br(G),mxUtils.write(G,
+this.addCheckbox(G,mxResources.get("includeCopyOfMyDiagram"),F,null,null,"jpeg"!=C);R.style.marginBottom="16px";var ha=document.createElement("input");ha.style.marginBottom="16px";ha.style.marginRight="8px";ha.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ha.setAttribute("disabled","disabled");var la=document.createElement("select");la.style.maxWidth="260px";la.style.marginLeft="8px";la.style.marginRight="10px";la.style.marginBottom="16px";la.className="geBtn";y=document.createElement("option");
+y.setAttribute("value","none");mxUtils.write(y,mxResources.get("noChange"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","embedFonts");mxUtils.write(y,mxResources.get("embedFonts"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","lblToSvg");mxUtils.write(y,mxResources.get("lblToSvg"));this.isOffline()||EditorUi.isElectronApp||la.appendChild(y);mxEvent.addListener(la,"change",mxUtils.bind(this,function(){"lblToSvg"==la.value?(ha.checked=!0,
+ha.setAttribute("disabled","disabled"),ka.page.style.display="none","page"==ea.value&&(ea.value="diagram"),V.checked=!1,V.setAttribute("disabled","disabled"),u.style.display="inline-block",ta.style.display="none"):"disabled"==ha.getAttribute("disabled")&&(ha.checked=!1,ha.removeAttribute("disabled"),V.removeAttribute("disabled"),ka.page.style.display="",u.style.display="none",ta.style.display="")}));f&&(G.appendChild(ha),mxUtils.write(G,mxResources.get("embedImages")),mxUtils.br(G),mxUtils.write(G,
mxResources.get("txtSettings")+":"),G.appendChild(la),mxUtils.br(G),da+=60);var ta=document.createElement("select");ta.style.maxWidth="260px";ta.style.marginLeft="8px";ta.style.marginRight="10px";ta.className="geBtn";f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));ta.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));ta.appendChild(f);f=document.createElement("option");
f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));ta.appendChild(f);var u=document.createElement("div");mxUtils.write(u,mxResources.get("LinksLost"));u.style.margin="7px";u.style.display="none";"svg"==C&&(mxUtils.write(G,mxResources.get("links")+":"),G.appendChild(ta),G.appendChild(u),mxUtils.br(G),mxUtils.br(G),da+=50);g=new CustomDialog(this,G,mxUtils.bind(this,function(){this.lastExportBorder=pa.value;this.lastExportZoom=Y.value;q(Y.value,U.checked,!O.checked,
-V.checked,R.checked,ia.checked,pa.value,X.checked,!1,ta.value,null!=P?P.checked:null,null!=J?J.checked:null,ea.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,m);this.showDialog(g.container,340,da,!0,!0,null,null,null,null,!0);Y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Y.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;
+V.checked,R.checked,ha.checked,pa.value,X.checked,!1,ta.value,null!=P?P.checked:null,null!=J?J.checked:null,ea.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,m);this.showDialog(g.container,340,da,!0,!0,null,null,null,null,!0);Y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Y.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;
if(null!=f){var C=document.createElement("h3");mxUtils.write(C,f);C.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";y.appendChild(C)}var H=this.addCheckbox(y,mxResources.get("fit"),!0),G=this.addCheckbox(y,mxResources.get("shadow"),F.shadowVisible&&m,!m),aa=this.addCheckbox(y,g),da=this.addCheckbox(y,mxResources.get("lightbox"),!0),ba=this.addEditButton(y,da),Y=ba.getEditInput(),pa=1<F.model.getChildCount(F.model.getRoot()),O=this.addCheckbox(y,mxResources.get("layers"),
pa,!pa);O.style.marginLeft=Y.style.marginLeft;O.style.marginBottom="12px";O.style.marginTop="8px";mxEvent.addListener(da,"change",function(){da.checked?(pa&&O.removeAttribute("disabled"),Y.removeAttribute("disabled")):(O.setAttribute("disabled","disabled"),Y.setAttribute("disabled","disabled"));Y.checked&&da.checked?ba.getEditSelect().removeAttribute("disabled"):ba.getEditSelect().setAttribute("disabled","disabled")});f=new CustomDialog(this,y,mxUtils.bind(this,function(){d(H.checked,G.checked,aa.checked,
da.checked,ba.getLink(),O.checked)}),null,mxResources.get("embed"),q);this.showDialog(f.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(d,f,g,m,q,y,F,C){function H(Y){var pa=" ",O="";m&&(pa=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
@@ -3594,13 +3595,13 @@ d+";")])):/(\.*<graphml )/.test(d)?(ba=!0,this.importGraphML(d,pa)):null!=H&&nul
q,F)):0==d.indexOf("PK")&&null!=H?(ba=!0,this.importZipFile(H,pa,mxUtils.bind(this,function(){Y=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G);C(Y)}))):/(\.v(sd|dx))($|\?)/i.test(F)||/(\.vs(s|x))($|\?)/i.test(F)||(Y=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G,null,null!=da?mxEvent.isControlDown(da):null));ba||null==C||C(Y);return Y};EditorUi.prototype.importFiles=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba){m=null!=m?m:this.maxImageSize;G=null!=G?G:this.maxImageBytes;var Y=null!=
f&&null!=g,pa=!0;f=null!=f?f:0;g=null!=g?g:0;var O=!1;if(!mxClient.IS_CHROMEAPP&&null!=d)for(var X=aa||this.resampleThreshold,ea=0;ea<d.length;ea++)if("image/svg"!==d[ea].type.substring(0,9)&&"image/"===d[ea].type.substring(0,6)&&d[ea].size>X){O=!0;break}var ka=mxUtils.bind(this,function(){var ja=this.editor.graph,U=ja.gridSize;q=null!=q?q:mxUtils.bind(this,function(la,ta,u,I,N,W,T,Q,Z){try{return null!=la&&"<mxlibrary"==la.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,
la,T)),null):this.importFile(la,ta,u,I,N,W,T,Q,Z,Y,da,ba)}catch(na){return this.handleError(na),null}});y=null!=y?y:mxUtils.bind(this,function(la){ja.setSelectionCells(la)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var J=d.length,V=J,P=[],R=mxUtils.bind(this,function(la,ta){P[la]=ta;if(0==--V){this.spinner.stop();if(null!=C)C(P);else{var u=[];ja.getModel().beginUpdate();try{for(la=0;la<P.length;la++){var I=P[la]();null!=I&&(u=u.concat(I))}}finally{ja.getModel().endUpdate()}}y(u)}}),
-ia=0;ia<J;ia++)mxUtils.bind(this,function(la){var ta=d[la];if(null!=ta){var u=new FileReader;u.onload=mxUtils.bind(this,function(I){if(null==F||F(ta))if("image/"==ta.type.substring(0,6))if("image/svg"==ta.type.substring(0,9)){var N=Graph.clipSvgDataUri(I.target.result),W=N.indexOf(",");W=decodeURIComponent(escape(atob(N.substring(W+1))));var T=mxUtils.parseXml(W);W=T.getElementsByTagName("svg");if(0<W.length){W=W[0];var Q=da?null:W.getAttribute("content");null!=Q&&"<"!=Q.charAt(0)&&"%"!=Q.charAt(0)&&
+ha=0;ha<J;ha++)mxUtils.bind(this,function(la){var ta=d[la];if(null!=ta){var u=new FileReader;u.onload=mxUtils.bind(this,function(I){if(null==F||F(ta))if("image/"==ta.type.substring(0,6))if("image/svg"==ta.type.substring(0,9)){var N=Graph.clipSvgDataUri(I.target.result),W=N.indexOf(",");W=decodeURIComponent(escape(atob(N.substring(W+1))));var T=mxUtils.parseXml(W);W=T.getElementsByTagName("svg");if(0<W.length){W=W[0];var Q=da?null:W.getAttribute("content");null!=Q&&"<"!=Q.charAt(0)&&"%"!=Q.charAt(0)&&
(Q=unescape(window.atob?atob(Q):Base64.decode(Q,!0)));null!=Q&&"%"==Q.charAt(0)&&(Q=decodeURIComponent(Q));null==Q||"<mxfile "!==Q.substring(0,8)&&"<mxGraphModel "!==Q.substring(0,14)?R(la,mxUtils.bind(this,function(){try{if(null!=T){var va=T.getElementsByTagName("svg");if(0<va.length){var Ba=va[0],sa=Ba.getAttribute("width"),Da=Ba.getAttribute("height");sa=null!=sa&&"%"!=sa.charAt(sa.length-1)?parseFloat(sa):NaN;Da=null!=Da&&"%"!=Da.charAt(Da.length-1)?parseFloat(Da):NaN;var Aa=Ba.getAttribute("viewBox");
if(null==Aa||0==Aa.length)Ba.setAttribute("viewBox","0 0 "+sa+" "+Da);else if(isNaN(sa)||isNaN(Da)){var za=Aa.split(" ");3<za.length&&(sa=parseFloat(za[2]),Da=parseFloat(za[3]))}N=Editor.createSvgDataUri(mxUtils.getXml(Ba));var Ca=Math.min(1,Math.min(m/Math.max(1,sa)),m/Math.max(1,Da)),Qa=q(N,ta.type,f+la*U,g+la*U,Math.max(1,Math.round(sa*Ca)),Math.max(1,Math.round(Da*Ca)),ta.name);if(isNaN(sa)||isNaN(Da)){var Za=new Image;Za.onload=mxUtils.bind(this,function(){sa=Math.max(1,Za.width);Da=Math.max(1,
Za.height);Qa[0].geometry.width=sa;Qa[0].geometry.height=Da;Ba.setAttribute("viewBox","0 0 "+sa+" "+Da);N=Editor.createSvgDataUri(mxUtils.getXml(Ba));var cb=N.indexOf(";");0<cb&&(N=N.substring(0,cb)+N.substring(N.indexOf(",",cb+1)));ja.setCellStyles("image",N,[Qa[0]])});Za.src=Editor.createSvgDataUri(mxUtils.getXml(Ba))}return Qa}}}catch(cb){}return null})):R(la,mxUtils.bind(this,function(){return q(Q,"text/xml",f+la*U,g+la*U,0,0,ta.name)}))}else R(la,mxUtils.bind(this,function(){return null}))}else{W=
!1;if("image/png"==ta.type){var Z=da?null:this.extractGraphModelFromPng(I.target.result);if(null!=Z&&0<Z.length){var na=new Image;na.src=I.target.result;R(la,mxUtils.bind(this,function(){return q(Z,"text/xml",f+la*U,g+la*U,na.width,na.height,ta.name)}));W=!0}}W||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):
this.loadImage(I.target.result,mxUtils.bind(this,function(va){this.resizeImage(va,I.target.result,mxUtils.bind(this,function(Ba,sa,Da){R(la,mxUtils.bind(this,function(){if(null!=Ba&&Ba.length<G){var Aa=pa&&this.isResampleImageSize(ta.size,aa)?Math.min(1,Math.min(m/sa,m/Da)):1;return q(Ba,ta.type,f+la*U,g+la*U,Math.round(sa*Aa),Math.round(Da*Aa),ta.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),pa,m,aa,ta.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else N=
-I.target.result,q(N,ta.type,f+la*U,g+la*U,240,160,ta.name,function(va){R(la,function(){return va})},ta)});/(\.v(dx|sdx?))($|\?)/i.test(ta.name)||/(\.vs(x|sx?))($|\?)/i.test(ta.name)?q(null,ta.type,f+la*U,g+la*U,240,160,ta.name,function(I){R(la,function(){return I})},ta):"image"==ta.type.substring(0,5)||"application/pdf"==ta.type?u.readAsDataURL(ta):u.readAsText(ta)}})(ia)});if(O){O=[];for(ea=0;ea<d.length;ea++)O.push(d[ea]);d=O;this.confirmImageResize(function(ja){pa=ja;ka()},H)}else ka()};EditorUi.prototype.isBlankFile=
+I.target.result,q(N,ta.type,f+la*U,g+la*U,240,160,ta.name,function(va){R(la,function(){return va})},ta)});/(\.v(dx|sdx?))($|\?)/i.test(ta.name)||/(\.vs(x|sx?))($|\?)/i.test(ta.name)?q(null,ta.type,f+la*U,g+la*U,240,160,ta.name,function(I){R(la,function(){return I})},ta):"image"==ta.type.substring(0,5)||"application/pdf"==ta.type?u.readAsDataURL(ta):u.readAsText(ta)}})(ha)});if(O){O=[];for(ea=0;ea<d.length;ea++)O.push(d[ea]);d=O;this.confirmImageResize(function(ja){pa=ja;ka()},H)}else ka()};EditorUi.prototype.isBlankFile=
function(){return null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1])};EditorUi.prototype.confirmImageResize=function(d,f){f=null!=f?f:!1;var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},m=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,q=function(y,F){if(y||f)mxSettings.setResizeImages(y?F:null),mxSettings.save();g();d(F)};null==m||f?this.showDialog((new ConfirmDialog(this,
mxResources.get("resizeLargeImages"),function(y){q(y,!0)},function(y){q(y,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):q(!1,m)};EditorUi.prototype.parseFile=function(d,f,g){g=null!=g?g:d.name;var m=new FileReader;m.onload=mxUtils.bind(this,function(){this.parseFileData(m.result,
f,g)});m.readAsText(d)};EditorUi.prototype.parseFileData=function(d,f,g){var m=new XMLHttpRequest;m.open("POST",OPEN_URL);m.setRequestHeader("Content-Type","application/x-www-form-urlencoded");m.onreadystatechange=function(){f(m)};m.send("format=xml&filename="+encodeURIComponent(g)+"&data="+encodeURIComponent(d));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(d,f){f=null!=f?f:this.resampleThreshold;return d>
@@ -3622,7 +3623,7 @@ null!=ea&&(X.filename=ea.getTitle());X.pagecount=null!=d.pages?d.pages.length:1;
1:1:"pagecount"==X?null!=d.pages?d.pages.length:1:da.apply(this,arguments)};var ba=f.labelLinkClicked;f.labelLinkClicked=function(X,ea,ka){var ja=ea.getAttribute("href");if(null==ja||!f.isCustomLink(ja)||!mxEvent.isTouchEvent(ka)&&mxEvent.isPopupTrigger(ka))ba.apply(this,arguments);else{if(!f.isEnabled()||null!=X&&f.isCellLocked(X.cell))f.customLinkClicked(ja),f.getRubberband().reset();mxEvent.consume(ka)}};this.editor.getOrCreateFilename=function(){var X=d.defaultFilename,ea=d.getCurrentFile();null!=
ea&&(X=null!=ea.getTitle()?ea.getTitle():X);return X};var Y=this.actions.get("print");Y.setEnabled(!mxClient.IS_IOS||!navigator.standalone);Y.visible=Y.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),
this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.addListener("realtimeStateChanged",mxUtils.bind(this,function(){this.updateUserElement()}));this.spinner=this.createSpinner(null,null,24);Graph.fileSupport&&f.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(X){var ea=f.cellEditor.text2,ka=null;null!=ea&&(mxEvent.addListener(ea,"dragleave",function(ja){null!=ka&&(ka.parentNode.removeChild(ka),
-ka=null);ja.stopPropagation();ja.preventDefault()}),mxEvent.addListener(ea,"dragover",mxUtils.bind(this,function(ja){null==ka&&(!mxClient.IS_IE||10<document.documentMode)&&(ka=this.highlightElement(ea));ja.stopPropagation();ja.preventDefault()})),mxEvent.addListener(ea,"drop",mxUtils.bind(this,function(ja){null!=ka&&(ka.parentNode.removeChild(ka),ka=null);if(0<ja.dataTransfer.files.length)this.importFiles(ja.dataTransfer.files,0,0,this.maxImageSize,function(J,V,P,R,ia,la){f.insertImage(J,ia,la)},
+ka=null);ja.stopPropagation();ja.preventDefault()}),mxEvent.addListener(ea,"dragover",mxUtils.bind(this,function(ja){null==ka&&(!mxClient.IS_IE||10<document.documentMode)&&(ka=this.highlightElement(ea));ja.stopPropagation();ja.preventDefault()})),mxEvent.addListener(ea,"drop",mxUtils.bind(this,function(ja){null!=ka&&(ka.parentNode.removeChild(ka),ka=null);if(0<ja.dataTransfer.files.length)this.importFiles(ja.dataTransfer.files,0,0,this.maxImageSize,function(J,V,P,R,ha,la){f.insertImage(J,ha,la)},
function(){},function(J){return"image/"==J.type.substring(0,6)},function(J){for(var V=0;V<J.length;V++)J[V]()},mxEvent.isControlDown(ja));else if(0<=mxUtils.indexOf(ja.dataTransfer.types,"text/uri-list")){var U=ja.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(U)?this.loadImage(decodeURIComponent(U),mxUtils.bind(this,function(J){var V=Math.max(1,J.width);J=Math.max(1,J.height);var P=this.maxImageSize;P=Math.min(1,Math.min(P/Math.max(1,V)),P/Math.max(1,J));f.insertImage(decodeURIComponent(U),
V*P,J*P)})):document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(ja.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(ja.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/plain"));ja.stopPropagation();ja.preventDefault()})))}));this.isSettingsEnabled()&&(Y=this.editor.graph.view,Y.setUnit(mxSettings.getUnit()),Y.addListener("unitChanged",
function(X,ea){mxSettings.setUnit(ea.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,Y.unit),this.refresh());if("1"==urlParams.styledev){Y=document.getElementById("geFooter");null!=Y&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top=
@@ -3631,8 +3632,8 @@ X=this.editor.graph.getModel().getStyle(X),this.styleInput.value=X||"",this.styl
function(X){f.isEnabled()&&(null!=O&&(O.parentNode.removeChild(O),O=null),X.stopPropagation(),X.preventDefault())});mxEvent.addListener(f.container,"dragover",mxUtils.bind(this,function(X){null==O&&(!mxClient.IS_IE||10<document.documentMode)&&(O=this.highlightElement(f.container));null!=this.sidebar&&this.sidebar.hideTooltip();X.stopPropagation();X.preventDefault()}));mxEvent.addListener(f.container,"drop",mxUtils.bind(this,function(X){null!=O&&(O.parentNode.removeChild(O),O=null);if(f.isEnabled()){var ea=
mxUtils.convertPoint(f.container,mxEvent.getClientX(X),mxEvent.getClientY(X)),ka=X.dataTransfer.files,ja=f.view.translate,U=f.view.scale,J=ea.x/U-ja.x,V=ea.y/U-ja.y;if(0<ka.length)ea=1==ka.length&&this.isBlankFile()&&!this.canUndo()&&("image/svg"===ka[0].type.substring(0,9)||"image/"!==ka[0].type.substring(0,6)||/(\.drawio.png)$/i.test(ka[0].name)),"1"!=urlParams.embed&&(mxEvent.isShiftDown(X)||ea)?(!mxEvent.isShiftDown(X)&&ea&&null!=this.getCurrentFile()&&this.fileLoaded(null),this.openFiles(ka,
!0)):(mxEvent.isAltDown(X)&&(V=J=null),this.importFiles(ka,J,V,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(X),null,null,mxEvent.isShiftDown(X),X));else{mxEvent.isAltDown(X)&&(V=J=0);var P=0<=mxUtils.indexOf(X.dataTransfer.types,"text/uri-list")?X.dataTransfer.getData("text/uri-list"):null;ka=this.extractGraphModelFromEvent(X,null!=this.pages);if(null!=ka)f.setSelectionCells(this.importXml(ka,J,V,!0));else if(0<=mxUtils.indexOf(X.dataTransfer.types,"text/html")){var R=X.dataTransfer.getData("text/html");
-ka=document.createElement("div");ka.innerHTML=f.sanitizeHtml(R);var ia=null;ea=ka.getElementsByTagName("img");null!=ea&&1==ea.length?(R=ea[0].getAttribute("src"),null==R&&(R=ea[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(R)||(ia=!0)):(ea=ka.getElementsByTagName("a"),null!=ea&&1==ea.length?R=ea[0].getAttribute("href"):(ka=ka.getElementsByTagName("pre"),null!=ka&&1==ka.length&&(R=mxUtils.getTextContent(ka[0]))));var la=!0,ta=mxUtils.bind(this,function(){f.setSelectionCells(this.insertTextAt(R,
-J,V,!0,ia,null,la,mxEvent.isControlDown(X)))});ia&&null!=R&&R.length>this.resampleThreshold?this.confirmImageResize(function(u){la=u;ta()},mxEvent.isControlDown(X)):ta()}else null!=P&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(P)?this.loadImage(decodeURIComponent(P),mxUtils.bind(this,function(u){var I=Math.max(1,u.width);u=Math.max(1,u.height);var N=this.maxImageSize;N=Math.min(1,Math.min(N/Math.max(1,I)),N/Math.max(1,u));f.setSelectionCell(f.insertVertex(null,null,"",J,V,I*N,u*N,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
+ka=document.createElement("div");ka.innerHTML=f.sanitizeHtml(R);var ha=null;ea=ka.getElementsByTagName("img");null!=ea&&1==ea.length?(R=ea[0].getAttribute("src"),null==R&&(R=ea[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(R)||(ha=!0)):(ea=ka.getElementsByTagName("a"),null!=ea&&1==ea.length?R=ea[0].getAttribute("href"):(ka=ka.getElementsByTagName("pre"),null!=ka&&1==ka.length&&(R=mxUtils.getTextContent(ka[0]))));var la=!0,ta=mxUtils.bind(this,function(){f.setSelectionCells(this.insertTextAt(R,
+J,V,!0,ha,null,la,mxEvent.isControlDown(X)))});ha&&null!=R&&R.length>this.resampleThreshold?this.confirmImageResize(function(u){la=u;ta()},mxEvent.isControlDown(X)):ta()}else null!=P&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(P)?this.loadImage(decodeURIComponent(P),mxUtils.bind(this,function(u){var I=Math.max(1,u.width);u=Math.max(1,u.height);var N=this.maxImageSize;N=Math.min(1,Math.min(N/Math.max(1,I)),N/Math.max(1,u));f.setSelectionCell(f.insertVertex(null,null,"",J,V,I*N,u*N,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
P+";"))}),mxUtils.bind(this,function(u){f.setSelectionCells(this.insertTextAt(P,J,V,!0))})):0<=mxUtils.indexOf(X.dataTransfer.types,"text/plain")&&f.setSelectionCells(this.insertTextAt(X.dataTransfer.getData("text/plain"),J,V,!0))}}X.stopPropagation();X.preventDefault()}),!1)}f.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var d=this.editor.graph;d.container.addEventListener("paste",
mxUtils.bind(this,function(f){if(!mxEvent.isConsumed(f))try{for(var g=f.clipboardData||f.originalEvent.clipboardData,m=!1,q=0;q<g.types.length;q++)if("text/"===g.types[q].substring(0,5)){m=!0;break}if(!m){var y=g.items;for(index in y){var F=y[index];if("file"===F.kind){if(d.isEditing())this.importFiles([F.getAsFile()],0,0,this.maxImageSize,function(H,G,aa,da,ba,Y){d.insertImage(H,ba,Y)},function(){},function(H){return"image/"==H.type.substring(0,6)},function(H){for(var G=0;G<H.length;G++)H[G]()});
else{var C=this.editor.graph.getInsertPoint();this.importFiles([F.getAsFile()],C.x,C.y,this.maxImageSize);mxEvent.consume(f)}break}}}}catch(H){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function d(){window.setTimeout(function(){g.innerHTML="&nbsp;";g.focus();document.execCommand("selectAll",!1,null)},0)}var f=this.editor.graph,g=document.createElement("div");g.setAttribute("autocomplete","off");g.setAttribute("autocorrect","off");g.setAttribute("autocapitalize","off");g.setAttribute("spellcheck",
@@ -3695,11 +3696,11 @@ ka?ka.id:null,O?mxUtils.bind(this,function(Q,Z,na){this.remoteInvoke("getRecentD
null,Q,function(){Q(null,"Network Error!")})}):null,X?mxUtils.bind(this,function(Q,Z){this.remoteInvoke("searchDiagrams",[Q,null],null,Z,function(){Z(null,"Network Error!")})}):null,mxUtils.bind(this,function(Q,Z,na){F.postMessage(JSON.stringify({event:"template",docUrl:Q,info:Z,name:na}),"*")}),null,null,ea?mxUtils.bind(this,function(Q){this.remoteInvoke("getCustomTemplates",null,null,Q,function(){Q({},0)})}):null,1==G.withoutType);this.showDialog(Y.container,620,460,!0,!1,mxUtils.bind(this,function(Q){this.sidebar.hideTooltip();
Q&&this.actions.get("exit").funct()}));Y.init();return}if("textContent"==G.action){var U=this.getDiagramTextContent();F.postMessage(JSON.stringify({event:"textContent",data:U,message:G}),"*");return}if("status"==G.action){null!=G.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(G.messageKey))):null!=G.message&&this.editor.setStatus(mxUtils.htmlEntities(G.message));null!=G.modified&&(this.editor.modified=G.modified);return}if("spinner"==G.action){var J=null!=G.messageKey?mxResources.get(G.messageKey):
G.message;null==G.show||G.show?this.spinner.spin(document.body,J):this.spinner.stop();return}if("exit"==G.action){this.actions.get("exit").funct();return}if("viewport"==G.action){null!=G.viewport&&(this.embedViewport=G.viewport);return}if("snapshot"==G.action){this.sendEmbeddedSvgExport(!0);return}if("export"==G.action){if("png"==G.format||"xmlpng"==G.format){if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin)){var V=null!=G.xml?G.xml:
-this.getFileData(!0);this.editor.graph.setEnabled(!1);var P=this.editor.graph,R=mxUtils.bind(this,function(Q){this.editor.graph.setEnabled(!0);this.spinner.stop();var Z=this.createLoadMessage("export");Z.format=G.format;Z.message=G;Z.data=Q;Z.xml=V;F.postMessage(JSON.stringify(Z),"*")}),ia=mxUtils.bind(this,function(Q){null==Q&&(Q=Editor.blankImage);"xmlpng"==G.format&&(Q=Editor.writeGraphModelToPng(Q,"tEXt","mxfile",encodeURIComponent(V)));P!=this.editor.graph&&P.container.parentNode.removeChild(P.container);
+this.getFileData(!0);this.editor.graph.setEnabled(!1);var P=this.editor.graph,R=mxUtils.bind(this,function(Q){this.editor.graph.setEnabled(!0);this.spinner.stop();var Z=this.createLoadMessage("export");Z.format=G.format;Z.message=G;Z.data=Q;Z.xml=V;F.postMessage(JSON.stringify(Z),"*")}),ha=mxUtils.bind(this,function(Q){null==Q&&(Q=Editor.blankImage);"xmlpng"==G.format&&(Q=Editor.writeGraphModelToPng(Q,"tEXt","mxfile",encodeURIComponent(V)));P!=this.editor.graph&&P.container.parentNode.removeChild(P.container);
R(Q)}),la=G.pageId||(null!=this.pages?G.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var ta=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=la){var Q=P.getGlobalVariable;P=this.createTemporaryGraph(P.getStylesheet());for(var Z,na=0;na<this.pages.length;na++)if(this.pages[na].getId()==la){Z=this.updatePageRoot(this.pages[na]);break}null==Z&&(Z=this.currentPage);P.getGlobalVariable=function(Da){return"page"==Da?Z.getName():
-"pagenumber"==Da?1:Q.apply(this,arguments)};document.body.appendChild(P.container);P.model.setRoot(Z.root)}if(null!=G.layerIds){var va=P.model,Ba=va.getChildCells(va.getRoot()),sa={};for(na=0;na<G.layerIds.length;na++)sa[G.layerIds[na]]=!0;for(na=0;na<Ba.length;na++)va.setVisible(Ba[na],sa[Ba[na].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Da){ia(Da.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){ia(null)}),null,null,G.scale,G.transparent,G.shadow,
+"pagenumber"==Da?1:Q.apply(this,arguments)};document.body.appendChild(P.container);P.model.setRoot(Z.root)}if(null!=G.layerIds){var va=P.model,Ba=va.getChildCells(va.getRoot()),sa={};for(na=0;na<G.layerIds.length;na++)sa[G.layerIds[na]]=!0;for(na=0;na<Ba.length;na++)va.setVisible(Ba[na],sa[Ba[na].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Da){ha(Da.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){ha(null)}),null,null,G.scale,G.transparent,G.shadow,
null,P,G.border,null,G.grid,G.keepTheme)});null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(V),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ta)},0):ta()):ta()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==G.format?"1":"0")+(null!=la?"&pageId="+la:"")+(null!=G.layerIds&&0<G.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:G.layerIds})):"")+(null!=G.scale?"&scale="+G.scale:"")+"&base64=1&xml="+encodeURIComponent(V))).send(mxUtils.bind(this,
-function(Q){200<=Q.getStatus()&&299>=Q.getStatus()?R("data:image/png;base64,"+Q.getText()):ia(null)}),mxUtils.bind(this,function(){ia(null)}))}}else ta=mxUtils.bind(this,function(){var Q=this.createLoadMessage("export");Q.message=G;if("html2"==G.format||"html"==G.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var Z=this.getXmlFileData();Q.xml=mxUtils.getXml(Z);Q.data=this.getFileData(null,null,!0,null,null,null,Z);Q.format=G.format}else if("html"==G.format)Z=this.editor.getGraphXml(),
+function(Q){200<=Q.getStatus()&&299>=Q.getStatus()?R("data:image/png;base64,"+Q.getText()):ha(null)}),mxUtils.bind(this,function(){ha(null)}))}}else ta=mxUtils.bind(this,function(){var Q=this.createLoadMessage("export");Q.message=G;if("html2"==G.format||"html"==G.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var Z=this.getXmlFileData();Q.xml=mxUtils.getXml(Z);Q.data=this.getFileData(null,null,!0,null,null,null,Z);Q.format=G.format}else if("html"==G.format)Z=this.editor.getGraphXml(),
Q.data=this.getHtml(Z,this.editor.graph),Q.xml=mxUtils.getXml(Z),Q.format=G.format;else{mxSvgCanvas2D.prototype.foAltText=null;Z=null!=G.background?G.background:this.editor.graph.background;Z==mxConstants.NONE&&(Z=null);Q.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);Q.format="svg";var na=mxUtils.bind(this,function(va){this.editor.graph.setEnabled(!0);this.spinner.stop();Q.data=Editor.createSvgDataUri(va);F.postMessage(JSON.stringify(Q),"*")});if("xmlsvg"==G.format)(null==G.spin&&
null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin))&&this.getEmbeddedSvg(Q.xml,this.editor.graph,null,!0,na,null,null,G.embedImages,Z,G.scale,G.border,G.shadow,G.keepTheme);else if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin))this.editor.graph.setEnabled(!1),Z=this.editor.graph.getSvg(Z,G.scale,G.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||G.shadow,null,G.keepTheme),
(this.editor.graph.shadowVisible||G.shadow)&&this.editor.graph.addSvgShadow(Z),this.embedFonts(Z,mxUtils.bind(this,function(va){G.embedImages||null==G.embedImages?this.editor.convertImages(va,mxUtils.bind(this,function(Ba){na(mxUtils.getXml(Ba))})):na(mxUtils.getXml(va))}));return}F.postMessage(JSON.stringify(Q),"*")}),null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(G.xml),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ta)},0):ta()):ta();return}if("load"==
@@ -3719,22 +3720,22 @@ urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit")
g),f.className="geBigButton geBigStandardButton",f.style.marginLeft="6px",mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),d.appendChild(f),g=f);g.style.marginRight="20px";this.toolbar.container.appendChild(d);this.toolbar.staticElements.push(d);d.style.right="atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+
":",Editor.defaultCsvValue,mxUtils.bind(this,function(d){this.importCsv(d)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.loadOrgChartLayouts=function(d){var f=mxUtils.bind(this,function(){this.loadingOrgChart=!1;this.spinner.stop();d()});"undefined"!==typeof mxOrgChartLayout||this.loadingOrgChart||
this.isOffline(!0)?f():this.spinner.spin(document.body,mxResources.get("loading"))&&(this.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",f)})})}):mxscript("js/extensions.min.js",f))};EditorUi.prototype.importCsv=function(d,f){this.loadOrgChartLayouts(mxUtils.bind(this,function(){this.doImportCsv(d,f)}))};
-EditorUi.prototype.doImportCsv=function(d,f){try{var g=d.split("\n"),m=[],q=[],y=[],F={};if(0<g.length){var C={},H=this.editor.graph,G=null,aa=null,da=null,ba=null,Y=null,pa=null,O=null,X="whiteSpace=wrap;html=1;",ea=null,ka=null,ja="",U="auto",J="auto",V=!1,P=null,R=null,ia=40,la=40,ta=100,u=0,I=function(){null!=f?f(ra):(H.setSelectionCells(ra),H.scrollCellToVisible(H.getSelectionCell()))},N=H.getFreeInsertPoint(),W=N.x,T=N.y;N=T;var Q=null,Z="auto";ka=null;for(var na=[],va=null,Ba=null,sa=0;sa<
+EditorUi.prototype.doImportCsv=function(d,f){try{var g=d.split("\n"),m=[],q=[],y=[],F={};if(0<g.length){var C={},H=this.editor.graph,G=null,aa=null,da=null,ba=null,Y=null,pa=null,O=null,X="whiteSpace=wrap;html=1;",ea=null,ka=null,ja="",U="auto",J="auto",V=!1,P=null,R=null,ha=40,la=40,ta=100,u=0,I=function(){null!=f?f(ra):(H.setSelectionCells(ra),H.scrollCellToVisible(H.getSelectionCell()))},N=H.getFreeInsertPoint(),W=N.x,T=N.y;N=T;var Q=null,Z="auto";ka=null;for(var na=[],va=null,Ba=null,sa=0;sa<
g.length&&"#"==g[sa].charAt(0);){d=g[sa].replace(/\r$/,"");for(sa++;sa<g.length&&"\\"==d.charAt(d.length-1)&&"#"==g[sa].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(g[sa].substring(1)),sa++;if("#"!=d.charAt(1)){var Da=d.indexOf(":");if(0<Da){var Aa=mxUtils.trim(d.substring(1,Da)),za=mxUtils.trim(d.substring(Da+1));"label"==Aa?Q=H.sanitizeHtml(za):"labelname"==Aa&&0<za.length&&"-"!=za?Y=za:"labels"==Aa&&0<za.length&&"-"!=za?O=JSON.parse(za):"style"==Aa?aa=za:"parentstyle"==Aa?X=za:"unknownStyle"==
Aa&&"-"!=za?pa=za:"stylename"==Aa&&0<za.length&&"-"!=za?ba=za:"styles"==Aa&&0<za.length&&"-"!=za?da=JSON.parse(za):"vars"==Aa&&0<za.length&&"-"!=za?G=JSON.parse(za):"identity"==Aa&&0<za.length&&"-"!=za?ea=za:"parent"==Aa&&0<za.length&&"-"!=za?ka=za:"namespace"==Aa&&0<za.length&&"-"!=za?ja=za:"width"==Aa?U=za:"height"==Aa?J=za:"collapsed"==Aa&&"-"!=za?V="true"==za:"left"==Aa&&0<za.length?P=za:"top"==Aa&&0<za.length?R=za:"ignore"==Aa?Ba=za.split(","):"connect"==Aa?na.push(JSON.parse(za)):"link"==Aa?
-va=za:"padding"==Aa?u=parseFloat(za):"edgespacing"==Aa?ia=parseFloat(za):"nodespacing"==Aa?la=parseFloat(za):"levelspacing"==Aa?ta=parseFloat(za):"layout"==Aa&&(Z=za)}}}if(null==g[sa])throw Error(mxResources.get("invalidOrMissingFile"));var Ca=this.editor.csvToArray(g[sa].replace(/\r$/,""));Da=d=null;Aa=[];for(za=0;za<Ca.length;za++)ea==Ca[za]&&(d=za),ka==Ca[za]&&(Da=za),Aa.push(mxUtils.trim(Ca[za]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==Q&&(Q="%"+Aa[0]+"%");if(null!=
+va=za:"padding"==Aa?u=parseFloat(za):"edgespacing"==Aa?ha=parseFloat(za):"nodespacing"==Aa?la=parseFloat(za):"levelspacing"==Aa?ta=parseFloat(za):"layout"==Aa&&(Z=za)}}}if(null==g[sa])throw Error(mxResources.get("invalidOrMissingFile"));var Ca=this.editor.csvToArray(g[sa].replace(/\r$/,""));Da=d=null;Aa=[];for(za=0;za<Ca.length;za++)ea==Ca[za]&&(d=za),ka==Ca[za]&&(Da=za),Aa.push(mxUtils.trim(Ca[za]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==Q&&(Q="%"+Aa[0]+"%");if(null!=
na)for(var Qa=0;Qa<na.length;Qa++)null==C[na[Qa].to]&&(C[na[Qa].to]={});ea=[];for(za=sa+1;za<g.length;za++){var Za=this.editor.csvToArray(g[za].replace(/\r$/,""));if(null==Za){var cb=40<g[za].length?g[za].substring(0,40)+"...":g[za];throw Error(cb+" ("+za+"):\n"+mxResources.get("containsValidationErrors"));}0<Za.length&&ea.push(Za)}H.model.beginUpdate();try{for(za=0;za<ea.length;za++){Za=ea[za];var Ja=null,Ua=null!=d?ja+Za[d]:null;g=!1;null!=Ua&&(Ja=H.model.getCell(Ua),g=null==Ja||0<=mxUtils.indexOf(m,
Ja));var $a=new mxCell(Q,new mxGeometry(W,N,0,0),aa||"whiteSpace=wrap;html=1;");$a.collapsed=V;$a.vertex=!0;$a.id=Ua;null==Ja||g||H.model.setCollapsed(Ja,V);for(var z=0;z<Za.length;z++)H.setAttributeForCell($a,Aa[z],Za[z]),null==Ja||g||H.setAttributeForCell(Ja,Aa[z],Za[z]);if(null!=Y&&null!=O){var L=O[$a.getAttribute(Y)];null!=L&&(H.labelChanged($a,L),null==Ja||g||H.cellLabelChanged(Ja,L))}if(null!=ba&&null!=da){var M=da[$a.getAttribute(ba)];null!=M&&($a.style=M)}H.setAttributeForCell($a,"placeholders",
"1");$a.style=H.replacePlaceholders($a,$a.style,G);null!=Ja?(H.model.setStyle(Ja,$a.style),0>mxUtils.indexOf(y,Ja)&&y.push(Ja),H.fireEvent(new mxEventObject("cellsInserted","cells",[Ja]))):H.fireEvent(new mxEventObject("cellsInserted","cells",[$a]));g=null!=Ja;Ja=$a;if(!g)for(Qa=0;Qa<na.length;Qa++)C[na[Qa].to][Ja.getAttribute(na[Qa].to)]=Ja;null!=va&&"link"!=va&&(H.setLinkForCell(Ja,Ja.getAttribute(va)),H.setAttributeForCell(Ja,va,null));var S=this.editor.graph.getPreferredSizeForCell(Ja);ka=null!=
-Da?H.model.getCell(ja+Za[Da]):null;if(Ja.vertex){cb=null!=ka?0:W;sa=null!=ka?0:T;null!=P&&null!=Ja.getAttribute(P)&&(Ja.geometry.x=cb+parseFloat(Ja.getAttribute(P)));null!=R&&null!=Ja.getAttribute(R)&&(Ja.geometry.y=sa+parseFloat(Ja.getAttribute(R)));var ca="@"==U.charAt(0)?Ja.getAttribute(U.substring(1)):null;Ja.geometry.width=null!=ca&&"auto"!=ca?parseFloat(Ja.getAttribute(U.substring(1))):"auto"==U||"auto"==ca?S.width+u:parseFloat(U);var ha="@"==J.charAt(0)?Ja.getAttribute(J.substring(1)):null;
-Ja.geometry.height=null!=ha&&"auto"!=ha?parseFloat(ha):"auto"==J||"auto"==ha?S.height+u:parseFloat(J);N+=Ja.geometry.height+la}g?(null==F[Ua]&&(F[Ua]=[]),F[Ua].push(Ja)):(m.push(Ja),null!=ka?(ka.style=H.replacePlaceholders(ka,X,G),H.addCell(Ja,ka),q.push(ka)):y.push(H.addCell(Ja)))}for(za=0;za<q.length;za++)ca="@"==U.charAt(0)?q[za].getAttribute(U.substring(1)):null,ha="@"==J.charAt(0)?q[za].getAttribute(J.substring(1)):null,"auto"!=U&&"auto"!=ca||"auto"!=J&&"auto"!=ha||H.updateGroupBounds([q[za]],
+Da?H.model.getCell(ja+Za[Da]):null;if(Ja.vertex){cb=null!=ka?0:W;sa=null!=ka?0:T;null!=P&&null!=Ja.getAttribute(P)&&(Ja.geometry.x=cb+parseFloat(Ja.getAttribute(P)));null!=R&&null!=Ja.getAttribute(R)&&(Ja.geometry.y=sa+parseFloat(Ja.getAttribute(R)));var ca="@"==U.charAt(0)?Ja.getAttribute(U.substring(1)):null;Ja.geometry.width=null!=ca&&"auto"!=ca?parseFloat(Ja.getAttribute(U.substring(1))):"auto"==U||"auto"==ca?S.width+u:parseFloat(U);var ia="@"==J.charAt(0)?Ja.getAttribute(J.substring(1)):null;
+Ja.geometry.height=null!=ia&&"auto"!=ia?parseFloat(ia):"auto"==J||"auto"==ia?S.height+u:parseFloat(J);N+=Ja.geometry.height+la}g?(null==F[Ua]&&(F[Ua]=[]),F[Ua].push(Ja)):(m.push(Ja),null!=ka?(ka.style=H.replacePlaceholders(ka,X,G),H.addCell(Ja,ka),q.push(ka)):y.push(H.addCell(Ja)))}for(za=0;za<q.length;za++)ca="@"==U.charAt(0)?q[za].getAttribute(U.substring(1)):null,ia="@"==J.charAt(0)?q[za].getAttribute(J.substring(1)):null,"auto"!=U&&"auto"!=ca||"auto"!=J&&"auto"!=ia||H.updateGroupBounds([q[za]],
u,!0);var oa=y.slice(),ra=y.slice();for(Qa=0;Qa<na.length;Qa++){var qa=na[Qa];for(za=0;za<m.length;za++){Ja=m[za];var xa=mxUtils.bind(this,function(db,Va,fb){var kb=Va.getAttribute(fb.from);if(null!=kb&&""!=kb){kb=kb.split(",");for(var ub=0;ub<kb.length;ub++){var nb=C[fb.to][kb[ub]];if(null==nb&&null!=pa){nb=new mxCell(kb[ub],new mxGeometry(W,T,0,0),pa);nb.style=H.replacePlaceholders(Va,nb.style,G);var Ya=this.editor.graph.getPreferredSizeForCell(nb);nb.geometry.width=Ya.width+u;nb.geometry.height=
Ya.height+u;C[fb.to][kb[ub]]=nb;nb.vertex=!0;nb.id=kb[ub];y.push(H.addCell(nb))}if(null!=nb){Ya=fb.label;null!=fb.fromlabel&&(Ya=(Va.getAttribute(fb.fromlabel)||"")+(Ya||""));null!=fb.sourcelabel&&(Ya=H.replacePlaceholders(Va,fb.sourcelabel,G)+(Ya||""));null!=fb.tolabel&&(Ya=(Ya||"")+(nb.getAttribute(fb.tolabel)||""));null!=fb.targetlabel&&(Ya=(Ya||"")+H.replacePlaceholders(nb,fb.targetlabel,G));var gb="target"==fb.placeholders==!fb.invert?nb:db;gb=null!=fb.style?H.replacePlaceholders(gb,fb.style,
G):H.createCurrentEdgeStyle();Ya=H.insertEdge(null,null,Ya||"",fb.invert?nb:db,fb.invert?db:nb,gb);if(null!=fb.labels)for(gb=0;gb<fb.labels.length;gb++){var hb=fb.labels[gb],ob=new mxCell(hb.label||gb,new mxGeometry(null!=hb.x?hb.x:0,null!=hb.y?hb.y:0,0,0),"resizable=0;html=1;");ob.vertex=!0;ob.connectable=!1;ob.geometry.relative=!0;null!=hb.placeholders&&(ob.value=H.replacePlaceholders("target"==hb.placeholders==!fb.invert?nb:db,ob.value,G));if(null!=hb.dx||null!=hb.dy)ob.geometry.offset=new mxPoint(null!=
-hb.dx?hb.dx:0,null!=hb.dy?hb.dy:0);Ya.insert(ob)}ra.push(Ya);mxUtils.remove(fb.invert?db:nb,oa)}}}});xa(Ja,Ja,qa);if(null!=F[Ja.id])for(z=0;z<F[Ja.id].length;z++)xa(Ja,F[Ja.id][z],qa)}}if(null!=Ba)for(za=0;za<m.length;za++)for(Ja=m[za],z=0;z<Ba.length;z++)H.setAttributeForCell(Ja,mxUtils.trim(Ba[z]),null);if(0<y.length){var Ga=new mxParallelEdgeLayout(H);Ga.spacing=ia;Ga.checkOverlap=!0;var La=function(){0<Ga.spacing&&Ga.execute(H.getDefaultParent());for(var db=0;db<y.length;db++){var Va=H.getCellGeometry(y[db]);
+hb.dx?hb.dx:0,null!=hb.dy?hb.dy:0);Ya.insert(ob)}ra.push(Ya);mxUtils.remove(fb.invert?db:nb,oa)}}}});xa(Ja,Ja,qa);if(null!=F[Ja.id])for(z=0;z<F[Ja.id].length;z++)xa(Ja,F[Ja.id][z],qa)}}if(null!=Ba)for(za=0;za<m.length;za++)for(Ja=m[za],z=0;z<Ba.length;z++)H.setAttributeForCell(Ja,mxUtils.trim(Ba[z]),null);if(0<y.length){var Ga=new mxParallelEdgeLayout(H);Ga.spacing=ha;Ga.checkOverlap=!0;var La=function(){0<Ga.spacing&&Ga.execute(H.getDefaultParent());for(var db=0;db<y.length;db++){var Va=H.getCellGeometry(y[db]);
Va.x=Math.round(H.snap(Va.x));Va.y=Math.round(H.snap(Va.y));"auto"==U&&(Va.width=Math.round(H.snap(Va.width)));"auto"==J&&(Va.height=Math.round(H.snap(Va.height)))}};if("["==Z.charAt(0)){var Pa=I;H.view.validate();this.executeLayouts(H.createLayouts(JSON.parse(Z)),function(){La();Pa()});I=null}else if("circle"==Z){var Oa=new mxCircleLayout(H);Oa.disableEdgeStyle=!1;Oa.resetEdges=!1;var Ta=Oa.isVertexIgnored;Oa.isVertexIgnored=function(db){return Ta.apply(this,arguments)||0>mxUtils.indexOf(y,db)};
this.executeLayout(function(){Oa.execute(H.getDefaultParent());La()},!0,I);I=null}else if("horizontaltree"==Z||"verticaltree"==Z||"auto"==Z&&ra.length==2*y.length-1&&1==oa.length){H.view.validate();var Ma=new mxCompactTreeLayout(H,"horizontaltree"==Z);Ma.levelDistance=la;Ma.edgeRouting=!1;Ma.resetEdges=!1;this.executeLayout(function(){Ma.execute(H.getDefaultParent(),0<oa.length?oa[0]:null)},!0,I);I=null}else if("horizontalflow"==Z||"verticalflow"==Z||"auto"==Z&&1==oa.length){H.view.validate();var ua=
-new mxHierarchicalLayout(H,"horizontalflow"==Z?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ua.intraCellSpacing=la;ua.parallelEdgeSpacing=ia;ua.interRankCellSpacing=ta;ua.disableEdgeStyle=!1;this.executeLayout(function(){ua.execute(H.getDefaultParent(),ra);H.moveCells(ra,W,T)},!0,I);I=null}else if("orgchart"==Z){H.view.validate();var ya=new mxOrgChartLayout(H,2,ta,la),Na=ya.isVertexIgnored;ya.isVertexIgnored=function(db){return Na.apply(this,arguments)||0>mxUtils.indexOf(y,db)};this.executeLayout(function(){ya.execute(H.getDefaultParent());
+new mxHierarchicalLayout(H,"horizontalflow"==Z?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ua.intraCellSpacing=la;ua.parallelEdgeSpacing=ha;ua.interRankCellSpacing=ta;ua.disableEdgeStyle=!1;this.executeLayout(function(){ua.execute(H.getDefaultParent(),ra);H.moveCells(ra,W,T)},!0,I);I=null}else if("orgchart"==Z){H.view.validate();var ya=new mxOrgChartLayout(H,2,ta,la),Na=ya.isVertexIgnored;ya.isVertexIgnored=function(db){return Na.apply(this,arguments)||0>mxUtils.indexOf(y,db)};this.executeLayout(function(){ya.execute(H.getDefaultParent());
La()},!0,I);I=null}else if("organic"==Z||"auto"==Z&&ra.length>y.length){H.view.validate();var Fa=new mxFastOrganicLayout(H);Fa.forceConstant=3*la;Fa.disableEdgeStyle=!1;Fa.resetEdges=!1;var Ra=Fa.isVertexIgnored;Fa.isVertexIgnored=function(db){return Ra.apply(this,arguments)||0>mxUtils.indexOf(y,db)};this.executeLayout(function(){Fa.execute(H.getDefaultParent());La()},!0,I);I=null}}this.hideDialog()}finally{H.model.endUpdate()}null!=I&&I()}}catch(db){this.handleError(db)}};EditorUi.prototype.getSearch=
function(d){var f="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var g="?",m;for(m in urlParams)0>mxUtils.indexOf(d,m)&&null!=urlParams[m]&&(f+=g+m+"="+urlParams[m],g="&")}else f=window.location.search;return f};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var f=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),
m;for(m in urlParams)0>mxUtils.indexOf(g,m)&&(d=0==f?d+"?":d+"&",null!=urlParams[m]&&(d+=m+"="+urlParams[m],f++))}return d};EditorUi.prototype.showLinkDialog=function(d,f,g,m,q){d=new LinkDialog(this,d,f,g,!0,m,q);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var f=1;null==this.drive&&"function"!==typeof window.DriveClient||f++;null==this.dropbox&&"function"!==typeof window.DropboxClient||f++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||
@@ -3775,17 +3776,17 @@ f,g,m,q,y,F,C,H,G,aa,da,ba,Y,pa,O){EditorUi.logEvent("SHOULD NOT BE CALLED: expo
function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,f)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(d,f,g,m)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};
EditorUi.prototype.writeGraphModelToPng=function(d,f,g,m,q){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,f,g,m,q)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],f=0;f<localStorage.length;f++){var g=localStorage.key(f),m=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<m.length){var q="<mxfile "===
m.substring(0,8)||"<?xml"===m.substring(0,5)||"\x3c!--[if IE]>"===m.substring(0,12);m="<mxlibrary>"===m.substring(0,11);(q||m)&&d.push(g)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var f=localStorage.getItem(d);return{title:d,data:f,isLib:"<mxlibrary>"===f.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
-var CommentsWindow=function(b,e,k,n,D,t){function E(){for(var ja=da.getElementsByTagName("div"),U=0,J=0;J<ja.length;J++)"none"!=ja[J].style.display&&ja[J].parentNode==da&&U++;ba.style.display=0==U?"block":"none"}function d(ja,U,J,V){function P(){U.removeChild(la);U.removeChild(ta);ia.style.display="block";R.style.display="block"}H={div:U,comment:ja,saveCallback:J,deleteOnCancel:V};var R=U.querySelector(".geCommentTxt"),ia=U.querySelector(".geCommentActionsList"),la=document.createElement("textarea");
+var CommentsWindow=function(b,e,k,n,D,t){function E(){for(var ja=da.getElementsByTagName("div"),U=0,J=0;J<ja.length;J++)"none"!=ja[J].style.display&&ja[J].parentNode==da&&U++;ba.style.display=0==U?"block":"none"}function d(ja,U,J,V){function P(){U.removeChild(la);U.removeChild(ta);ha.style.display="block";R.style.display="block"}H={div:U,comment:ja,saveCallback:J,deleteOnCancel:V};var R=U.querySelector(".geCommentTxt"),ha=U.querySelector(".geCommentActionsList"),la=document.createElement("textarea");
la.className="geCommentEditTxtArea";la.style.minHeight=R.offsetHeight+"px";la.value=ja.content;U.insertBefore(la,R);var ta=document.createElement("div");ta.className="geCommentEditBtns";var u=mxUtils.button(mxResources.get("cancel"),function(){V?(U.parentNode.removeChild(U),E()):P();H=null});u.className="geCommentEditBtn";ta.appendChild(u);var I=mxUtils.button(mxResources.get("save"),function(){R.innerText="";ja.content=la.value;mxUtils.write(R,ja.content);P();J(ja);H=null});mxEvent.addListener(la,
-"keydown",mxUtils.bind(this,function(N){mxEvent.isConsumed(N)||((mxEvent.isControlDown(N)||mxClient.IS_MAC&&mxEvent.isMetaDown(N))&&13==N.keyCode?(I.click(),mxEvent.consume(N)):27==N.keyCode&&(u.click(),mxEvent.consume(N)))}));I.focus();I.className="geCommentEditBtn gePrimaryBtn";ta.appendChild(I);U.insertBefore(ta,R);ia.style.display="none";R.style.display="none";la.focus()}function f(ja,U){U.innerText="";ja=new Date(ja.modifiedDate);var J=b.timeSince(ja);null==J&&(J=mxResources.get("lessThanAMinute"));
+"keydown",mxUtils.bind(this,function(N){mxEvent.isConsumed(N)||((mxEvent.isControlDown(N)||mxClient.IS_MAC&&mxEvent.isMetaDown(N))&&13==N.keyCode?(I.click(),mxEvent.consume(N)):27==N.keyCode&&(u.click(),mxEvent.consume(N)))}));I.focus();I.className="geCommentEditBtn gePrimaryBtn";ta.appendChild(I);U.insertBefore(ta,R);ha.style.display="none";R.style.display="none";la.focus()}function f(ja,U){U.innerText="";ja=new Date(ja.modifiedDate);var J=b.timeSince(ja);null==J&&(J=mxResources.get("lessThanAMinute"));
mxUtils.write(U,mxResources.get("timeAgo",[J],"{1} ago"));U.setAttribute("title",ja.toLocaleDateString()+" "+ja.toLocaleTimeString())}function g(ja){var U=document.createElement("img");U.className="geCommentBusyImg";U.src=IMAGE_PATH+"/spin.gif";ja.appendChild(U);ja.busyImg=U}function m(ja){ja.style.border="1px solid red";ja.removeChild(ja.busyImg)}function q(ja){ja.style.border="";ja.removeChild(ja.busyImg)}function y(ja,U,J,V,P){function R(T,Q,Z){var na=document.createElement("li");na.className=
-"geCommentAction";var va=document.createElement("a");va.className="geCommentActionLnk";mxUtils.write(va,T);na.appendChild(va);mxEvent.addListener(va,"click",function(Ba){Q(Ba,ja);Ba.preventDefault();mxEvent.consume(Ba)});W.appendChild(na);Z&&(na.style.display="none")}function ia(){function T(na){Q.push(Z);if(null!=na.replies)for(var va=0;va<na.replies.length;va++)Z=Z.nextSibling,T(na.replies[va])}var Q=[],Z=ta;T(ja);return{pdiv:Z,replies:Q}}function la(T,Q,Z,na,va){function Ba(){g(za);ja.addReply(Aa,
-function(Ca){Aa.id=Ca;ja.replies.push(Aa);q(za);Z&&Z()},function(Ca){sa();m(za);b.handleError(Ca,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},na,va)}function sa(){d(Aa,za,function(Ca){Ba()},!0)}var Da=ia().pdiv,Aa=b.newComment(T,b.getCurrentUser());Aa.pCommentId=ja.id;null==ja.replies&&(ja.replies=[]);var za=y(Aa,ja.replies,Da,V+1);Q?sa():Ba()}if(P||!ja.isResolved){ba.style.display="none";var ta=document.createElement("div");ta.className="geCommentContainer";ta.setAttribute("data-commentId",
+"geCommentAction";var va=document.createElement("a");va.className="geCommentActionLnk";mxUtils.write(va,T);na.appendChild(va);mxEvent.addListener(va,"click",function(Ba){Q(Ba,ja);Ba.preventDefault();mxEvent.consume(Ba)});W.appendChild(na);Z&&(na.style.display="none")}function ha(){function T(na){Q.push(Z);if(null!=na.replies)for(var va=0;va<na.replies.length;va++)Z=Z.nextSibling,T(na.replies[va])}var Q=[],Z=ta;T(ja);return{pdiv:Z,replies:Q}}function la(T,Q,Z,na,va){function Ba(){g(za);ja.addReply(Aa,
+function(Ca){Aa.id=Ca;ja.replies.push(Aa);q(za);Z&&Z()},function(Ca){sa();m(za);b.handleError(Ca,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},na,va)}function sa(){d(Aa,za,function(Ca){Ba()},!0)}var Da=ha().pdiv,Aa=b.newComment(T,b.getCurrentUser());Aa.pCommentId=ja.id;null==ja.replies&&(ja.replies=[]);var za=y(Aa,ja.replies,Da,V+1);Q?sa():Ba()}if(P||!ja.isResolved){ba.style.display="none";var ta=document.createElement("div");ta.className="geCommentContainer";ta.setAttribute("data-commentId",
ja.id);ta.style.marginLeft=20*V+5+"px";ja.isResolved&&!Editor.isDarkMode()&&(ta.style.backgroundColor="ghostWhite");var u=document.createElement("div");u.className="geCommentHeader";var I=document.createElement("img");I.className="geCommentUserImg";I.src=ja.user.pictureUrl||Editor.userImage;u.appendChild(I);I=document.createElement("div");I.className="geCommentHeaderTxt";u.appendChild(I);var N=document.createElement("div");N.className="geCommentUsername";mxUtils.write(N,ja.user.displayName||"");I.appendChild(N);
N=document.createElement("div");N.className="geCommentDate";N.setAttribute("data-commentId",ja.id);f(ja,N);I.appendChild(N);ta.appendChild(u);u=document.createElement("div");u.className="geCommentTxt";mxUtils.write(u,ja.content||"");ta.appendChild(u);ja.isLocked&&(ta.style.opacity="0.5");u=document.createElement("div");u.className="geCommentActions";var W=document.createElement("ul");W.className="geCommentActionsList";u.appendChild(W);F||ja.isLocked||0!=V&&!C||R(mxResources.get("reply"),function(){la("",
!0)},ja.isResolved);I=b.getCurrentUser();null==I||I.id!=ja.user.id||F||ja.isLocked||(R(mxResources.get("edit"),function(){function T(){d(ja,ta,function(){g(ta);ja.editComment(ja.content,function(){q(ta)},function(Q){m(ta);T();b.handleError(Q,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}T()},ja.isResolved),R(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(ta);ja.deleteComment(function(T){if(!0===T){T=ta.querySelector(".geCommentTxt");
-T.innerText="";mxUtils.write(T,mxResources.get("msgDeleted"));var Q=ta.querySelectorAll(".geCommentAction");for(T=0;T<Q.length;T++)Q[T].parentNode.removeChild(Q[T]);q(ta);ta.style.opacity="0.5"}else{Q=ia(ja).replies;for(T=0;T<Q.length;T++)da.removeChild(Q[T]);for(T=0;T<U.length;T++)if(U[T]==ja){U.splice(T,1);break}ba.style.display=0==da.getElementsByTagName("div").length?"block":"none"}},function(T){m(ta);b.handleError(T,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
-ja.isResolved));F||ja.isLocked||0!=V||R(ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(T){function Q(){var Z=T.target;Z.innerText="";ja.isResolved=!ja.isResolved;mxUtils.write(Z,ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var na=ja.isResolved?"none":"",va=ia(ja).replies,Ba=Editor.isDarkMode()?"transparent":ja.isResolved?"ghostWhite":"white",sa=0;sa<va.length;sa++){va[sa].style.backgroundColor=Ba;for(var Da=va[sa].querySelectorAll(".geCommentAction"),
+T.innerText="";mxUtils.write(T,mxResources.get("msgDeleted"));var Q=ta.querySelectorAll(".geCommentAction");for(T=0;T<Q.length;T++)Q[T].parentNode.removeChild(Q[T]);q(ta);ta.style.opacity="0.5"}else{Q=ha(ja).replies;for(T=0;T<Q.length;T++)da.removeChild(Q[T]);for(T=0;T<U.length;T++)if(U[T]==ja){U.splice(T,1);break}ba.style.display=0==da.getElementsByTagName("div").length?"block":"none"}},function(T){m(ta);b.handleError(T,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
+ja.isResolved));F||ja.isLocked||0!=V||R(ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(T){function Q(){var Z=T.target;Z.innerText="";ja.isResolved=!ja.isResolved;mxUtils.write(Z,ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var na=ja.isResolved?"none":"",va=ha(ja).replies,Ba=Editor.isDarkMode()?"transparent":ja.isResolved?"ghostWhite":"white",sa=0;sa<va.length;sa++){va[sa].style.backgroundColor=Ba;for(var Da=va[sa].querySelectorAll(".geCommentAction"),
Aa=0;Aa<Da.length;Aa++)Da[Aa]!=Z.parentNode&&(Da[Aa].style.display=na);O||(va[sa].style.display="none")}E()}ja.isResolved?la(mxResources.get("reOpened")+": ",!0,Q,!1,!0):la(mxResources.get("markedAsResolved"),!1,Q,!0)});ta.appendChild(u);null!=J?da.insertBefore(ta,J.nextSibling):da.appendChild(ta);for(J=0;null!=ja.replies&&J<ja.replies.length;J++)u=ja.replies[J],u.isResolved=ja.isResolved,y(u,ja.replies,null,V+1,P);null!=H&&(H.comment.id==ja.id?(P=ja.content,ja.content=H.comment.content,d(ja,ta,H.saveCallback,
H.deleteOnCancel),ja.content=P):null==H.comment.id&&H.comment.pCommentId==ja.id&&(da.appendChild(H.div),d(H.comment,H.div,H.saveCallback,H.deleteOnCancel)));return ta}}var F=!b.canComment(),C=b.canReplyToReplies(),H=null,G=document.createElement("div");G.className="geCommentsWin";G.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var aa=EditorUi.compactUi?"26px":"30px",da=document.createElement("div");da.className="geCommentsList";da.style.backgroundColor=Editor.isDarkMode()?
Dialog.backdropColor:"whiteSmoke";da.style.bottom=parseInt(aa)+7+"px";G.appendChild(da);var ba=document.createElement("span");ba.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(ba,mxResources.get("noCommentsFound"));var Y=document.createElement("div");Y.className="geToolbarContainer geCommentsToolbar";Y.style.height=aa;Y.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";Y.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";aa=document.createElement("a");
@@ -3793,8 +3794,8 @@ aa.className="geButton";if(!F){var pa=aa.cloneNode();pa.innerHTML='<div class="g
U();ja.preventDefault();mxEvent.consume(ja)});Y.appendChild(pa)}pa=aa.cloneNode();pa.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';pa.setAttribute("title",mxResources.get("showResolved"));var O=!1;Editor.isDarkMode()&&(pa.style.filter="invert(100%)");mxEvent.addListener(pa,"click",function(ja){this.className=(O=!O)?"geButton geCheckedBtn":"geButton";ea();ja.preventDefault();mxEvent.consume(ja)});Y.appendChild(pa);b.commentsRefreshNeeded()&&(pa=aa.cloneNode(),
pa.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',pa.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(pa.style.filter="invert(100%)"),mxEvent.addListener(pa,"click",function(ja){ea();ja.preventDefault();mxEvent.consume(ja)}),Y.appendChild(pa));b.commentsSaveNeeded()&&(aa=aa.cloneNode(),aa.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',aa.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&
(aa.style.filter="invert(100%)"),mxEvent.addListener(aa,"click",function(ja){t();ja.preventDefault();mxEvent.consume(ja)}),Y.appendChild(aa));G.appendChild(Y);var X=[],ea=mxUtils.bind(this,function(){this.hasError=!1;if(null!=H)try{H.div=H.div.cloneNode(!0);var ja=H.div.querySelector(".geCommentEditTxtArea"),U=H.div.querySelector(".geCommentEditBtns");H.comment.content=ja.value;ja.parentNode.removeChild(ja);U.parentNode.removeChild(U)}catch(J){b.handleError(J)}da.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+
-IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";C=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(J){function V(P){if(null!=P){P.sort(function(ia,la){return new Date(ia.modifiedDate)-new Date(la.modifiedDate)});for(var R=0;R<P.length;R++)V(P[R].replies)}}J.sort(function(P,R){return new Date(P.modifiedDate)-new Date(R.modifiedDate)});da.innerText="";da.appendChild(ba);ba.style.display="block";X=J;for(J=0;J<X.length;J++)V(X[J].replies),
-y(X[J],X,null,0,O);null!=H&&null==H.comment.id&&null==H.comment.pCommentId&&(da.appendChild(H.div),d(H.comment,H.div,H.saveCallback,H.deleteOnCancel))},mxUtils.bind(this,function(J){da.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(J&&J.message?": "+J.message:""));this.hasError=!0})):da.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});ea();this.refreshComments=ea;Y=mxUtils.bind(this,function(){function ja(R){var ia=J[R.id];if(null!=ia)for(f(R,ia),ia=0;null!=R.replies&&ia<R.replies.length;ia++)ja(R.replies[ia])}
+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";C=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(J){function V(P){if(null!=P){P.sort(function(ha,la){return new Date(ha.modifiedDate)-new Date(la.modifiedDate)});for(var R=0;R<P.length;R++)V(P[R].replies)}}J.sort(function(P,R){return new Date(P.modifiedDate)-new Date(R.modifiedDate)});da.innerText="";da.appendChild(ba);ba.style.display="block";X=J;for(J=0;J<X.length;J++)V(X[J].replies),
+y(X[J],X,null,0,O);null!=H&&null==H.comment.id&&null==H.comment.pCommentId&&(da.appendChild(H.div),d(H.comment,H.div,H.saveCallback,H.deleteOnCancel))},mxUtils.bind(this,function(J){da.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(J&&J.message?": "+J.message:""));this.hasError=!0})):da.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});ea();this.refreshComments=ea;Y=mxUtils.bind(this,function(){function ja(R){var ha=J[R.id];if(null!=ha)for(f(R,ha),ha=0;null!=R.replies&&ha<R.replies.length;ha++)ja(R.replies[ha])}
if(this.window.isVisible()){for(var U=da.querySelectorAll(".geCommentDate"),J={},V=0;V<U.length;V++){var P=U[V];J[P.getAttribute("data-commentId")]=P}for(V=0;V<X.length;V++)ja(X[V])}});setInterval(Y,6E4);this.refreshCommentsTime=Y;this.window=new mxWindow(mxResources.get("comments"),G,e,k,n,D,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,
mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(ja,U){var J=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;ja=Math.max(0,Math.min(ja,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));U=Math.max(0,Math.min(U,J-this.table.clientHeight-48));this.getX()==ja&&this.getY()==U||mxWindow.prototype.setLocation.apply(this,arguments)};var ka=mxUtils.bind(this,function(){var ja=
this.window.getX(),U=this.window.getY();this.window.setLocation(ja,U)});mxEvent.addListener(window,"resize",ka);this.destroy=function(){mxEvent.removeListener(window,"resize",ka);this.window.destroy()}},ConfirmDialog=function(b,e,k,n,D,t,E,d,f,g,m){var q=document.createElement("div");q.style.textAlign="center";m=null!=m?m:44;var y=document.createElement("div");y.style.padding="6px";y.style.overflow="auto";y.style.maxHeight=m+"px";y.style.lineHeight="1.2em";mxUtils.write(y,e);q.appendChild(y);null!=
@@ -3874,30 +3875,30 @@ n));return n};b.beforeDecode=function(e,k,n){n.ui=e.ui;n.relatedPage=n.ui.getPag
function(n,D){this.model.beginUpdate();try{var t=[];this.traverse(D,!0,mxUtils.bind(this,function(d,f){var g=null!=f&&this.isTreeEdge(f);g&&t.push(f);d==D||null!=f&&!g||t.push(d);return(null==f||g)&&(d==D||!this.model.isCollapsed(d))}));this.model.setCollapsed(D,n);for(var E=0;E<t.length;E++)this.model.setVisible(t[E],!n)}finally{this.model.endUpdate()}};Graph.prototype.isTreeEdge=function(n){return!this.isEdgeIgnored(n)};Graph.prototype.getTreeEdges=function(n,D,t,E,d,f){return this.model.filterCells(this.getEdges(n,
D,t,E,d,f),mxUtils.bind(this,function(g){return this.isTreeEdge(g)}))};Graph.prototype.getIncomingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!0,!1,!1)};Graph.prototype.getOutgoingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!1,!0,!1)};var e=EditorUi.prototype.init;EditorUi.prototype.init=function(){e.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function n(J){return H.isVertex(J)&&t(J)}function D(J){var V=
!1;null!=J&&(V="1"==C.getCurrentCellStyle(J).treeMoving);return V}function t(J){var V=!1;null!=J&&(J=H.getParent(J),V=C.view.getState(J),V="tree"==(null!=V?V.style:C.getCellStyle(J)).containerType);return V}function E(J){var V=!1;null!=J&&(J=H.getParent(J),V=C.view.getState(J),C.view.getState(J),V=null!=(null!=V?V.style:C.getCellStyle(J)).childLayout);return V}function d(J){J=C.view.getState(J);if(null!=J){var V=C.getIncomingTreeEdges(J.cell);if(0<V.length&&(V=C.view.getState(V[0]),null!=V&&(V=V.absolutePoints,
-null!=V&&0<V.length&&(V=V[V.length-1],null!=V)))){if(V.y==J.y&&Math.abs(V.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_SOUTH;if(V.y==J.y+J.height&&Math.abs(V.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_NORTH;if(V.x>J.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function f(J,V){V=null!=V?V:!0;C.model.beginUpdate();try{var P=C.model.getParent(J),R=C.getIncomingTreeEdges(J),ia=C.cloneCells([R[0],J]);C.model.setTerminal(ia[0],C.model.getTerminal(R[0],
-!0),!0);var la=d(J),ta=P.geometry;la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?ia[1].geometry.x+=V?J.geometry.width+10:-ia[1].geometry.width-10:ia[1].geometry.y+=V?J.geometry.height+10:-ia[1].geometry.height-10;C.view.currentRoot!=P&&(ia[1].geometry.x-=ta.x,ia[1].geometry.y-=ta.y);var u=C.view.getState(J),I=C.view.scale;if(null!=u){var N=mxRectangle.fromRectangle(u);la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?N.x+=(V?J.geometry.width+10:-ia[1].geometry.width-
-10)*I:N.y+=(V?J.geometry.height+10:-ia[1].geometry.height-10)*I;var W=C.getOutgoingTreeEdges(C.model.getTerminal(R[0],!0));if(null!=W){for(var T=la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH,Q=ta=R=0;Q<W.length;Q++){var Z=C.model.getTerminal(W[Q],!1);if(la==d(Z)){var na=C.view.getState(Z);Z!=J&&null!=na&&(T&&V!=na.getCenterX()<u.getCenterX()||!T&&V!=na.getCenterY()<u.getCenterY())&&mxUtils.intersects(N,na)&&(R=10+Math.max(R,(Math.min(N.x+N.width,na.x+na.width)-Math.max(N.x,na.x))/
-I),ta=10+Math.max(ta,(Math.min(N.y+N.height,na.y+na.height)-Math.max(N.y,na.y))/I))}}T?ta=0:R=0;for(Q=0;Q<W.length;Q++)if(Z=C.model.getTerminal(W[Q],!1),la==d(Z)&&(na=C.view.getState(Z),Z!=J&&null!=na&&(T&&V!=na.getCenterX()<u.getCenterX()||!T&&V!=na.getCenterY()<u.getCenterY()))){var va=[];C.traverse(na.cell,!0,function(Ba,sa){var Da=null!=sa&&C.isTreeEdge(sa);Da&&va.push(sa);(null==sa||Da)&&va.push(Ba);return null==sa||Da});C.moveCells(va,(V?1:-1)*R,(V?1:-1)*ta)}}}return C.addCells(ia,P)}finally{C.model.endUpdate()}}
-function g(J){C.model.beginUpdate();try{var V=d(J),P=C.getIncomingTreeEdges(J),R=C.cloneCells([P[0],J]);C.model.setTerminal(P[0],R[1],!1);C.model.setTerminal(R[0],R[1],!0);C.model.setTerminal(R[0],J,!1);var ia=C.model.getParent(J),la=ia.geometry,ta=[];C.view.currentRoot!=ia&&(R[1].geometry.x-=la.x,R[1].geometry.y-=la.y);C.traverse(J,!0,function(N,W){var T=null!=W&&C.isTreeEdge(W);T&&ta.push(W);(null==W||T)&&ta.push(N);return null==W||T});var u=J.geometry.width+40,I=J.geometry.height+40;V==mxConstants.DIRECTION_SOUTH?
-u=0:V==mxConstants.DIRECTION_NORTH?(u=0,I=-I):V==mxConstants.DIRECTION_WEST?(u=-u,I=0):V==mxConstants.DIRECTION_EAST&&(I=0);C.moveCells(ta,u,I);return C.addCells(R,ia)}finally{C.model.endUpdate()}}function m(J,V){C.model.beginUpdate();try{var P=C.model.getParent(J),R=C.getIncomingTreeEdges(J),ia=d(J);0==R.length&&(R=[C.createEdge(P,null,"",null,null,C.createCurrentEdgeStyle())],ia=V);var la=C.cloneCells([R[0],J]);C.model.setTerminal(la[0],J,!0);if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],
-la[1],!1);var ta=C.getCellStyle(la[1]).newEdgeStyle;if(null!=ta)try{var u=JSON.parse(ta),I;for(I in u)C.setCellStyles(I,u[I],[la[0]]),"edgeStyle"==I&&"elbowEdgeStyle"==u[I]&&C.setCellStyles("elbow",ia==mxConstants.DIRECTION_SOUTH||ia==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[la[0]])}catch(na){}}R=C.getOutgoingTreeEdges(J);var N=P.geometry;V=[];C.view.currentRoot==P&&(N=new mxRectangle);for(ta=0;ta<R.length;ta++){var W=C.model.getTerminal(R[ta],!1);null!=W&&V.push(W)}var T=C.view.getBounds(V),
-Q=C.view.translate,Z=C.view.scale;ia==mxConstants.DIRECTION_SOUTH?(la[1].geometry.x=null==T?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(T.x+T.width)/Z-Q.x-N.x+10,la[1].geometry.y+=la[1].geometry.height-N.y+40):ia==mxConstants.DIRECTION_NORTH?(la[1].geometry.x=null==T?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(T.x+T.width)/Z-Q.x+-N.x+10,la[1].geometry.y-=la[1].geometry.height+N.y+40):(la[1].geometry.x=ia==mxConstants.DIRECTION_WEST?la[1].geometry.x-(la[1].geometry.width+N.x+
-40):la[1].geometry.x+(la[1].geometry.width-N.x+40),la[1].geometry.y=null==T?J.geometry.y+(J.geometry.height-la[1].geometry.height)/2:(T.y+T.height)/Z-Q.y+-N.y+10);return C.addCells(la,P)}finally{C.model.endUpdate()}}function q(J,V,P){J=C.getOutgoingTreeEdges(J);P=C.view.getState(P);var R=[];if(null!=P&&null!=J){for(var ia=0;ia<J.length;ia++){var la=C.view.getState(C.model.getTerminal(J[ia],!1));null!=la&&(!V&&Math.min(la.x+la.width,P.x+P.width)>=Math.max(la.x,P.x)||V&&Math.min(la.y+la.height,P.y+
+null!=V&&0<V.length&&(V=V[V.length-1],null!=V)))){if(V.y==J.y&&Math.abs(V.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_SOUTH;if(V.y==J.y+J.height&&Math.abs(V.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_NORTH;if(V.x>J.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function f(J,V){V=null!=V?V:!0;C.model.beginUpdate();try{var P=C.model.getParent(J),R=C.getIncomingTreeEdges(J),ha=C.cloneCells([R[0],J]);C.model.setTerminal(ha[0],C.model.getTerminal(R[0],
+!0),!0);var la=d(J),ta=P.geometry;la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?ha[1].geometry.x+=V?J.geometry.width+10:-ha[1].geometry.width-10:ha[1].geometry.y+=V?J.geometry.height+10:-ha[1].geometry.height-10;C.view.currentRoot!=P&&(ha[1].geometry.x-=ta.x,ha[1].geometry.y-=ta.y);var u=C.view.getState(J),I=C.view.scale;if(null!=u){var N=mxRectangle.fromRectangle(u);la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?N.x+=(V?J.geometry.width+10:-ha[1].geometry.width-
+10)*I:N.y+=(V?J.geometry.height+10:-ha[1].geometry.height-10)*I;var W=C.getOutgoingTreeEdges(C.model.getTerminal(R[0],!0));if(null!=W){for(var T=la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH,Q=ta=R=0;Q<W.length;Q++){var Z=C.model.getTerminal(W[Q],!1);if(la==d(Z)){var na=C.view.getState(Z);Z!=J&&null!=na&&(T&&V!=na.getCenterX()<u.getCenterX()||!T&&V!=na.getCenterY()<u.getCenterY())&&mxUtils.intersects(N,na)&&(R=10+Math.max(R,(Math.min(N.x+N.width,na.x+na.width)-Math.max(N.x,na.x))/
+I),ta=10+Math.max(ta,(Math.min(N.y+N.height,na.y+na.height)-Math.max(N.y,na.y))/I))}}T?ta=0:R=0;for(Q=0;Q<W.length;Q++)if(Z=C.model.getTerminal(W[Q],!1),la==d(Z)&&(na=C.view.getState(Z),Z!=J&&null!=na&&(T&&V!=na.getCenterX()<u.getCenterX()||!T&&V!=na.getCenterY()<u.getCenterY()))){var va=[];C.traverse(na.cell,!0,function(Ba,sa){var Da=null!=sa&&C.isTreeEdge(sa);Da&&va.push(sa);(null==sa||Da)&&va.push(Ba);return null==sa||Da});C.moveCells(va,(V?1:-1)*R,(V?1:-1)*ta)}}}return C.addCells(ha,P)}finally{C.model.endUpdate()}}
+function g(J){C.model.beginUpdate();try{var V=d(J),P=C.getIncomingTreeEdges(J),R=C.cloneCells([P[0],J]);C.model.setTerminal(P[0],R[1],!1);C.model.setTerminal(R[0],R[1],!0);C.model.setTerminal(R[0],J,!1);var ha=C.model.getParent(J),la=ha.geometry,ta=[];C.view.currentRoot!=ha&&(R[1].geometry.x-=la.x,R[1].geometry.y-=la.y);C.traverse(J,!0,function(N,W){var T=null!=W&&C.isTreeEdge(W);T&&ta.push(W);(null==W||T)&&ta.push(N);return null==W||T});var u=J.geometry.width+40,I=J.geometry.height+40;V==mxConstants.DIRECTION_SOUTH?
+u=0:V==mxConstants.DIRECTION_NORTH?(u=0,I=-I):V==mxConstants.DIRECTION_WEST?(u=-u,I=0):V==mxConstants.DIRECTION_EAST&&(I=0);C.moveCells(ta,u,I);return C.addCells(R,ha)}finally{C.model.endUpdate()}}function m(J,V){C.model.beginUpdate();try{var P=C.model.getParent(J),R=C.getIncomingTreeEdges(J),ha=d(J);0==R.length&&(R=[C.createEdge(P,null,"",null,null,C.createCurrentEdgeStyle())],ha=V);var la=C.cloneCells([R[0],J]);C.model.setTerminal(la[0],J,!0);if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],
+la[1],!1);var ta=C.getCellStyle(la[1]).newEdgeStyle;if(null!=ta)try{var u=JSON.parse(ta),I;for(I in u)C.setCellStyles(I,u[I],[la[0]]),"edgeStyle"==I&&"elbowEdgeStyle"==u[I]&&C.setCellStyles("elbow",ha==mxConstants.DIRECTION_SOUTH||ha==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[la[0]])}catch(na){}}R=C.getOutgoingTreeEdges(J);var N=P.geometry;V=[];C.view.currentRoot==P&&(N=new mxRectangle);for(ta=0;ta<R.length;ta++){var W=C.model.getTerminal(R[ta],!1);null!=W&&V.push(W)}var T=C.view.getBounds(V),
+Q=C.view.translate,Z=C.view.scale;ha==mxConstants.DIRECTION_SOUTH?(la[1].geometry.x=null==T?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(T.x+T.width)/Z-Q.x-N.x+10,la[1].geometry.y+=la[1].geometry.height-N.y+40):ha==mxConstants.DIRECTION_NORTH?(la[1].geometry.x=null==T?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(T.x+T.width)/Z-Q.x+-N.x+10,la[1].geometry.y-=la[1].geometry.height+N.y+40):(la[1].geometry.x=ha==mxConstants.DIRECTION_WEST?la[1].geometry.x-(la[1].geometry.width+N.x+
+40):la[1].geometry.x+(la[1].geometry.width-N.x+40),la[1].geometry.y=null==T?J.geometry.y+(J.geometry.height-la[1].geometry.height)/2:(T.y+T.height)/Z-Q.y+-N.y+10);return C.addCells(la,P)}finally{C.model.endUpdate()}}function q(J,V,P){J=C.getOutgoingTreeEdges(J);P=C.view.getState(P);var R=[];if(null!=P&&null!=J){for(var ha=0;ha<J.length;ha++){var la=C.view.getState(C.model.getTerminal(J[ha],!1));null!=la&&(!V&&Math.min(la.x+la.width,P.x+P.width)>=Math.max(la.x,P.x)||V&&Math.min(la.y+la.height,P.y+
P.height)>=Math.max(la.y,P.y))&&R.push(la)}R.sort(function(ta,u){return V?ta.x+ta.width-u.x-u.width:ta.y+ta.height-u.y-u.height})}return R}function y(J,V){var P=d(J),R=V==mxConstants.DIRECTION_EAST||V==mxConstants.DIRECTION_WEST;(P==mxConstants.DIRECTION_EAST||P==mxConstants.DIRECTION_WEST)==R&&P!=V?F.actions.get("selectParent").funct():P==V?(V=C.getOutgoingTreeEdges(J),null!=V&&0<V.length&&C.setSelectionCell(C.model.getTerminal(V[0],!1))):(P=C.getIncomingTreeEdges(J),null!=P&&0<P.length&&(R=q(C.model.getTerminal(P[0],
!0),R,J),J=C.view.getState(J),null!=J&&(J=mxUtils.indexOf(R,J),0<=J&&(J+=V==mxConstants.DIRECTION_NORTH||V==mxConstants.DIRECTION_WEST?-1:1,0<=J&&J<=R.length-1&&C.setSelectionCell(R[J].cell)))))}var F=this,C=F.editor.graph,H=C.getModel(),G=F.menus.createPopupMenu;F.menus.createPopupMenu=function(J,V,P){G.apply(this,arguments);if(1==C.getSelectionCount()){V=C.getSelectionCell();var R=C.getOutgoingTreeEdges(V);J.addSeparator();0<R.length&&(n(C.getSelectionCell())&&this.addMenuItems(J,["selectChildren"],
null,P),this.addMenuItems(J,["selectDescendants"],null,P));n(C.getSelectionCell())?(J.addSeparator(),0<C.getIncomingTreeEdges(V).length&&this.addMenuItems(J,["selectSiblings","selectParent"],null,P)):0<C.model.getEdgeCount(V)&&this.addMenuItems(J,["selectConnections"],null,P)}};F.actions.addAction("selectChildren",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=C.getSelectionCell();J=C.getOutgoingTreeEdges(J);if(null!=J){for(var V=[],P=0;P<J.length;P++)V.push(C.model.getTerminal(J[P],
!1));C.setSelectionCells(V)}}},null,null,"Alt+Shift+X");F.actions.addAction("selectSiblings",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=C.getSelectionCell();J=C.getIncomingTreeEdges(J);if(null!=J&&0<J.length&&(J=C.getOutgoingTreeEdges(C.model.getTerminal(J[0],!0)),null!=J)){for(var V=[],P=0;P<J.length;P++)V.push(C.model.getTerminal(J[P],!1));C.setSelectionCells(V)}}},null,null,"Alt+Shift+S");F.actions.addAction("selectParent",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=
-C.getSelectionCell();J=C.getIncomingTreeEdges(J);null!=J&&0<J.length&&C.setSelectionCell(C.model.getTerminal(J[0],!0))}},null,null,"Alt+Shift+P");F.actions.addAction("selectDescendants",function(J,V){J=C.getSelectionCell();if(C.isEnabled()&&C.model.isVertex(J)){if(null!=V&&mxEvent.isAltDown(V))C.setSelectionCells(C.model.getTreeEdges(J,null==V||!mxEvent.isShiftDown(V),null==V||!mxEvent.isControlDown(V)));else{var P=[];C.traverse(J,!0,function(R,ia){var la=null!=ia&&C.isTreeEdge(ia);la&&P.push(ia);
-null!=ia&&!la||null!=V&&mxEvent.isShiftDown(V)||P.push(R);return null==ia||la})}C.setSelectionCells(P)}},null,null,"Alt+Shift+D");var aa=C.removeCells;C.removeCells=function(J,V){V=null!=V?V:!0;null==J&&(J=this.getDeletableCells(this.getSelectionCells()));V&&(J=this.getDeletableCells(this.addAllEdges(J)));for(var P=[],R=0;R<J.length;R++){var ia=J[R];H.isEdge(ia)&&t(ia)&&(P.push(ia),ia=H.getTerminal(ia,!1));if(n(ia)){var la=[];C.traverse(ia,!0,function(ta,u){var I=null!=u&&C.isTreeEdge(u);I&&la.push(u);
-(null==u||I)&&la.push(ta);return null==u||I});0<la.length&&(P=P.concat(la),ia=C.getIncomingTreeEdges(J[R]),J=J.concat(ia))}else null!=ia&&P.push(J[R])}J=P;return aa.apply(this,arguments)};F.hoverIcons.getStateAt=function(J,V,P){return n(J.cell)?null:this.graph.view.getState(this.graph.getCellAt(V,P))};var da=C.duplicateCells;C.duplicateCells=function(J,V){J=null!=J?J:this.getSelectionCells();for(var P=J.slice(0),R=0;R<P.length;R++){var ia=C.view.getState(P[R]);if(null!=ia&&n(ia.cell)){var la=C.getIncomingTreeEdges(ia.cell);
-for(ia=0;ia<la.length;ia++)mxUtils.remove(la[ia],J)}}this.model.beginUpdate();try{var ta=da.call(this,J,V);if(ta.length==J.length)for(R=0;R<J.length;R++)if(n(J[R])){var u=C.getIncomingTreeEdges(ta[R]);la=C.getIncomingTreeEdges(J[R]);if(0==u.length&&0<la.length){var I=this.cloneCell(la[0]);this.addEdge(I,C.getDefaultParent(),this.model.getTerminal(la[0],!0),ta[R])}}}finally{this.model.endUpdate()}return ta};var ba=C.moveCells;C.moveCells=function(J,V,P,R,ia,la,ta){var u=null;this.model.beginUpdate();
-try{var I=ia,N=this.getCurrentCellStyle(ia);if(null!=J&&n(ia)&&"1"==mxUtils.getValue(N,"treeFolding","0")){for(var W=0;W<J.length;W++)if(n(J[W])||C.model.isEdge(J[W])&&null==C.model.getTerminal(J[W],!0)){ia=C.model.getParent(J[W]);break}if(null!=I&&ia!=I&&null!=this.view.getState(J[0])){var T=C.getIncomingTreeEdges(J[0]);if(0<T.length){var Q=C.view.getState(C.model.getTerminal(T[0],!0));if(null!=Q){var Z=C.view.getState(I);null!=Z&&(V=(Z.getCenterX()-Q.getCenterX())/C.view.scale,P=(Z.getCenterY()-
+C.getSelectionCell();J=C.getIncomingTreeEdges(J);null!=J&&0<J.length&&C.setSelectionCell(C.model.getTerminal(J[0],!0))}},null,null,"Alt+Shift+P");F.actions.addAction("selectDescendants",function(J,V){J=C.getSelectionCell();if(C.isEnabled()&&C.model.isVertex(J)){if(null!=V&&mxEvent.isAltDown(V))C.setSelectionCells(C.model.getTreeEdges(J,null==V||!mxEvent.isShiftDown(V),null==V||!mxEvent.isControlDown(V)));else{var P=[];C.traverse(J,!0,function(R,ha){var la=null!=ha&&C.isTreeEdge(ha);la&&P.push(ha);
+null!=ha&&!la||null!=V&&mxEvent.isShiftDown(V)||P.push(R);return null==ha||la})}C.setSelectionCells(P)}},null,null,"Alt+Shift+D");var aa=C.removeCells;C.removeCells=function(J,V){V=null!=V?V:!0;null==J&&(J=this.getDeletableCells(this.getSelectionCells()));V&&(J=this.getDeletableCells(this.addAllEdges(J)));for(var P=[],R=0;R<J.length;R++){var ha=J[R];H.isEdge(ha)&&t(ha)&&(P.push(ha),ha=H.getTerminal(ha,!1));if(n(ha)){var la=[];C.traverse(ha,!0,function(ta,u){var I=null!=u&&C.isTreeEdge(u);I&&la.push(u);
+(null==u||I)&&la.push(ta);return null==u||I});0<la.length&&(P=P.concat(la),ha=C.getIncomingTreeEdges(J[R]),J=J.concat(ha))}else null!=ha&&P.push(J[R])}J=P;return aa.apply(this,arguments)};F.hoverIcons.getStateAt=function(J,V,P){return n(J.cell)?null:this.graph.view.getState(this.graph.getCellAt(V,P))};var da=C.duplicateCells;C.duplicateCells=function(J,V){J=null!=J?J:this.getSelectionCells();for(var P=J.slice(0),R=0;R<P.length;R++){var ha=C.view.getState(P[R]);if(null!=ha&&n(ha.cell)){var la=C.getIncomingTreeEdges(ha.cell);
+for(ha=0;ha<la.length;ha++)mxUtils.remove(la[ha],J)}}this.model.beginUpdate();try{var ta=da.call(this,J,V);if(ta.length==J.length)for(R=0;R<J.length;R++)if(n(J[R])){var u=C.getIncomingTreeEdges(ta[R]);la=C.getIncomingTreeEdges(J[R]);if(0==u.length&&0<la.length){var I=this.cloneCell(la[0]);this.addEdge(I,C.getDefaultParent(),this.model.getTerminal(la[0],!0),ta[R])}}}finally{this.model.endUpdate()}return ta};var ba=C.moveCells;C.moveCells=function(J,V,P,R,ha,la,ta){var u=null;this.model.beginUpdate();
+try{var I=ha,N=this.getCurrentCellStyle(ha);if(null!=J&&n(ha)&&"1"==mxUtils.getValue(N,"treeFolding","0")){for(var W=0;W<J.length;W++)if(n(J[W])||C.model.isEdge(J[W])&&null==C.model.getTerminal(J[W],!0)){ha=C.model.getParent(J[W]);break}if(null!=I&&ha!=I&&null!=this.view.getState(J[0])){var T=C.getIncomingTreeEdges(J[0]);if(0<T.length){var Q=C.view.getState(C.model.getTerminal(T[0],!0));if(null!=Q){var Z=C.view.getState(I);null!=Z&&(V=(Z.getCenterX()-Q.getCenterX())/C.view.scale,P=(Z.getCenterY()-
Q.getCenterY())/C.view.scale)}}}}u=ba.apply(this,arguments);if(null!=u&&null!=J&&u.length==J.length)for(W=0;W<u.length;W++)if(this.model.isEdge(u[W]))n(I)&&0>mxUtils.indexOf(u,this.model.getTerminal(u[W],!0))&&this.model.setTerminal(u[W],I,!0);else if(n(J[W])&&(T=C.getIncomingTreeEdges(J[W]),0<T.length))if(!R)n(I)&&0>mxUtils.indexOf(J,this.model.getTerminal(T[0],!0))&&this.model.setTerminal(T[0],I,!0);else if(0==C.getIncomingTreeEdges(u[W]).length){N=I;if(null==N||N==C.model.getParent(J[W]))N=C.model.getTerminal(T[0],
-!0);R=this.cloneCell(T[0]);this.addEdge(R,C.getDefaultParent(),N,u[W])}}finally{this.model.endUpdate()}return u};if(null!=F.sidebar){var Y=F.sidebar.dropAndConnect;F.sidebar.dropAndConnect=function(J,V,P,R){var ia=C.model,la=null;ia.beginUpdate();try{if(la=Y.apply(this,arguments),n(J))for(var ta=0;ta<la.length;ta++)if(ia.isEdge(la[ta])&&null==ia.getTerminal(la[ta],!0)){ia.setTerminal(la[ta],J,!0);var u=C.getCellGeometry(la[ta]);u.points=null;null!=u.getTerminalPoint(!0)&&u.setTerminalPoint(null,!0)}}finally{ia.endUpdate()}return la}}var pa=
+!0);R=this.cloneCell(T[0]);this.addEdge(R,C.getDefaultParent(),N,u[W])}}finally{this.model.endUpdate()}return u};if(null!=F.sidebar){var Y=F.sidebar.dropAndConnect;F.sidebar.dropAndConnect=function(J,V,P,R){var ha=C.model,la=null;ha.beginUpdate();try{if(la=Y.apply(this,arguments),n(J))for(var ta=0;ta<la.length;ta++)if(ha.isEdge(la[ta])&&null==ha.getTerminal(la[ta],!0)){ha.setTerminal(la[ta],J,!0);var u=C.getCellGeometry(la[ta]);u.points=null;null!=u.getTerminalPoint(!0)&&u.setTerminalPoint(null,!0)}}finally{ha.endUpdate()}return la}}var pa=
{88:F.actions.get("selectChildren"),84:F.actions.get("selectSubtree"),80:F.actions.get("selectParent"),83:F.actions.get("selectSiblings")},O=F.onKeyDown;F.onKeyDown=function(J){try{if(C.isEnabled()&&!C.isEditing()&&n(C.getSelectionCell())&&1==C.getSelectionCount()){var V=null;0<C.getIncomingTreeEdges(C.getSelectionCell()).length&&(9==J.which?V=mxEvent.isShiftDown(J)?g(C.getSelectionCell()):m(C.getSelectionCell()):13==J.which&&(V=f(C.getSelectionCell(),!mxEvent.isShiftDown(J))));if(null!=V&&0<V.length)1==
V.length&&C.model.isEdge(V[0])?C.setSelectionCell(C.model.getTerminal(V[0],!1)):C.setSelectionCell(V[V.length-1]),null!=F.hoverIcons&&F.hoverIcons.update(C.view.getState(C.getSelectionCell())),C.startEditingAtCell(C.getSelectionCell()),mxEvent.consume(J);else if(mxEvent.isAltDown(J)&&mxEvent.isShiftDown(J)){var P=pa[J.keyCode];null!=P&&(P.funct(J),mxEvent.consume(J))}else 37==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(J)):38==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_NORTH),
-mxEvent.consume(J)):39==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(J)):40==J.keyCode&&(y(C.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(J))}}catch(R){F.handleError(R)}mxEvent.isConsumed(J)||O.apply(this,arguments)};var X=C.connectVertex;C.connectVertex=function(J,V,P,R,ia,la,ta){var u=C.getIncomingTreeEdges(J);if(n(J)){var I=d(J),N=I==mxConstants.DIRECTION_EAST||I==mxConstants.DIRECTION_WEST,W=V==mxConstants.DIRECTION_EAST||V==mxConstants.DIRECTION_WEST;
-return I==V||0==u.length?m(J,V):N==W?g(J):f(J,V!=mxConstants.DIRECTION_NORTH&&V!=mxConstants.DIRECTION_WEST)}return X.apply(this,arguments)};C.getSubtree=function(J){var V=[J];!D(J)&&!n(J)||E(J)||C.traverse(J,!0,function(P,R){var ia=null!=R&&C.isTreeEdge(R);ia&&0>mxUtils.indexOf(V,R)&&V.push(R);(null==R||ia)&&0>mxUtils.indexOf(V,P)&&V.push(P);return null==R||ia});return V};var ea=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ea.apply(this,arguments);(D(this.state.cell)||
+mxEvent.consume(J)):39==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(J)):40==J.keyCode&&(y(C.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(J))}}catch(R){F.handleError(R)}mxEvent.isConsumed(J)||O.apply(this,arguments)};var X=C.connectVertex;C.connectVertex=function(J,V,P,R,ha,la,ta){var u=C.getIncomingTreeEdges(J);if(n(J)){var I=d(J),N=I==mxConstants.DIRECTION_EAST||I==mxConstants.DIRECTION_WEST,W=V==mxConstants.DIRECTION_EAST||V==mxConstants.DIRECTION_WEST;
+return I==V||0==u.length?m(J,V):N==W?g(J):f(J,V!=mxConstants.DIRECTION_NORTH&&V!=mxConstants.DIRECTION_WEST)}return X.apply(this,arguments)};C.getSubtree=function(J){var V=[J];!D(J)&&!n(J)||E(J)||C.traverse(J,!0,function(P,R){var ha=null!=R&&C.isTreeEdge(R);ha&&0>mxUtils.indexOf(V,R)&&V.push(R);(null==R||ha)&&0>mxUtils.indexOf(V,P)&&V.push(P);return null==R||ha});return V};var ea=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ea.apply(this,arguments);(D(this.state.cell)||
n(this.state.cell))&&!E(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(J){this.graph.graphHandler.start(this.state.cell,
mxEvent.getClientX(J),mxEvent.getClientY(J),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(J);this.graph.isMouseDown=!0;F.hoverIcons.reset();mxEvent.consume(J)})))};var ka=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){ka.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=
this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var ja=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(J){ja.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=J?"":"none")};var U=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(J,V){U.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==
@@ -3927,10 +3928,10 @@ J.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;heig
ka.className="geTitle",ja=document.createElement("span"),ja.style.cssText="position:relative;top:6px;",mxUtils.write(ja,mxResources.get("newLibrary")),ka.appendChild(ja),X.appendChild(ka),mxEvent.addListener(ka,"click",O.actions.get("newLibrary").funct),ka=document.createElement("div"),ka.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;",ka.className="geTitle",ja=
document.createElement("span"),ja.style.cssText="position:relative;top:6px;",mxUtils.write(ja,mxResources.get("openLibrary")),ka.appendChild(ja),X.appendChild(ka),mxEvent.addListener(ka,"click",O.actions.get("openLibrary").funct)):(ka=ea("newLibrary",mxResources.get("newLibrary")),ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="0",ka=ea("openLibraryFrom",mxResources.get("openLibraryFrom")),ka.style.borderLeft="1px solid lightgray",
ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="50%");X.appendChild(O.sidebar.container);X.style.overflow="hidden"}function k(O,X){if(EditorUi.windowed){var ea=O.editor.graph;ea.popupMenuHandler.hideMenu();if(null==O.sidebarWindow){X=Math.min(ea.container.clientWidth-10,218);var ka="1"==urlParams.embedInline?650:Math.min(ea.container.clientHeight-40,650);O.sidebarWindow=new t(O,mxResources.get("shapes"),"1"==urlParams.sketch&&
-"1"!=urlParams.embedInline?66:10,"1"==urlParams.sketch&&"1"!=urlParams.embedInline?Math.max(30,(ea.container.clientHeight-ka)/2):56,X-6,ka-6,function(ja){e(O,ja)});O.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){O.sidebarWindow.window.fit()}));O.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);O.sidebarWindow.window.setVisible(!0);O.getLocalData("sidebar",function(ja){O.sidebar.showEntries(ja,null,!0)});O.restoreLibraries()}else O.sidebarWindow.window.setVisible(null!=
+"1"!=urlParams.embedInline?66:10,"1"==urlParams.sketch&&"1"!=urlParams.embedInline?Math.max(30,(ea.container.clientHeight-ka)/2):56,X-6,ka-6,function(ja){e(O,ja)});O.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){O.sidebarWindow.window.fit()}));O.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);O.sidebarWindow.window.setVisible(!0);isLocalStorage&&O.getLocalData("sidebar",function(ja){O.sidebar.showEntries(ja,null,!0)});O.restoreLibraries()}else O.sidebarWindow.window.setVisible(null!=
X?X:!O.sidebarWindow.window.isVisible())}else null==O.sidebarElt&&(O.sidebarElt=D(),e(O,O.sidebarElt),O.sidebarElt.style.border="none",O.sidebarElt.style.width="210px",O.sidebarElt.style.borderRight="1px solid gray"),ea=O.diagramContainer.parentNode,null!=O.sidebarElt.parentNode?(O.sidebarElt.parentNode.removeChild(O.sidebarElt),ea.style.left="0px"):(ea.parentNode.appendChild(O.sidebarElt),ea.style.left=O.sidebarElt.style.width)}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||
"undefined"===typeof window.Menus)window.uiTheme=null;else{var n=0;try{n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}catch(O){}var D=function(){var O=document.createElement("div");O.className="geSidebarContainer";O.style.position="absolute";O.style.width="100%";O.style.height="100%";O.style.border="1px solid whiteSmoke";O.style.overflowX="hidden";O.style.overflowY="auto";return O},t=function(O,X,ea,ka,ja,U,J){var V=D();J(V);this.window=new mxWindow(X,V,ea,ka,
-ja,U,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(P,R){var ia=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,la=this.table.firstChild.firstChild.firstChild;P=Math.max(0,Math.min(P,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-la.clientWidth-2));R=Math.max(0,Math.min(R,ia-la.clientHeight-
+ja,U,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(P,R){var ha=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,la=this.table.firstChild.firstChild.firstChild;P=Math.max(0,Math.min(P,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-la.clientWidth-2));R=Math.max(0,Math.min(R,ha-la.clientHeight-
2));this.getX()==P&&this.getY()==R||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&&(this.window.div.onselectstart=mxUtils.bind(this,function(P){null==P&&(P=window.event);return null!=P&&O.isSelectionAllowed(P)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=
Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src;mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke-width="2" style="stroke-opacity:0.4" stroke="#ffffff"/><path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');
mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR="#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity=
@@ -3970,21 +3971,21 @@ mxResources.get("outline")+"...";O.actions.get("layers").label=mxResources.get("
ea.setToggleAction(!0);ea.setSelectedCallback(function(){return Editor.sketchMode});ea=O.actions.put("togglePagesVisible",new Action(mxResources.get("pages"),function(R){O.setPagesVisible(!Editor.pagesVisible)}));ea.setToggleAction(!0);ea.setSelectedCallback(function(){return Editor.pagesVisible});O.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){X.popupMenuHandler.hideMenu();O.showImportCsvDialog()}));O.actions.put("importText",new Action(mxResources.get("text")+"...",
function(){var R=new ParseDialog(O,"Insert from Text");O.showDialog(R.container,620,420,!0,!1);R.init()}));O.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var R=new ParseDialog(O,"Insert from Text","formatSql");O.showDialog(R.container,620,420,!0,!1);R.init()}));O.actions.put("toggleShapes",new Action(mxResources.get("1"==urlParams.sketch?"moreShapes":"shapes")+"...",function(){k(O)},null,null,Editor.ctrlKey+"+Shift+K"));O.actions.put("toggleFormat",new Action(mxResources.get("format")+
"...",function(){b(O)})).shortcut=O.actions.get("formatPanel").shortcut;EditorUi.enablePlantUml&&!O.isOffline()&&O.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var R=new ParseDialog(O,mxResources.get("plantUml")+"...","plantUml");O.showDialog(R.container,620,420,!0,!1);R.init()}));O.actions.put("mermaid",new Action(mxResources.get("mermaid")+"...",function(){var R=new ParseDialog(O,mxResources.get("mermaid")+"...","mermaid");O.showDialog(R.container,620,420,!0,!1);
-R.init()}));var ka=this.addPopupMenuCellEditItems;this.put("editCell",new Menu(mxUtils.bind(this,function(R,ia){var la=this.editorUi.editor.graph,ta=la.getSelectionCell();ka.call(this,R,ta,null,ia);this.addMenuItems(R,["editTooltip"],ia);la.model.isVertex(ta)&&this.addMenuItems(R,["editGeometry"],ia);this.addMenuItems(R,["-","edit"],ia)})));this.addPopupMenuCellEditItems=function(R,ia,la,ta){R.addSeparator();this.addSubmenu("editCell",R,ta,mxResources.get("edit"))};this.put("file",new Menu(mxUtils.bind(this,
-function(R,ia){var la=O.getCurrentFile();O.menus.addMenuItems(R,["new"],ia);O.menus.addSubmenu("openFrom",R,ia);isLocalStorage&&this.addSubmenu("openRecent",R,ia);R.addSeparator(ia);null!=la&&la.constructor==DriveFile?O.menus.addMenuItems(R,["save","rename","makeCopy","moveToFolder"],ia):(O.menus.addMenuItems(R,["save","saveAs","-","rename"],ia),O.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(R,["upload"],ia):O.menus.addMenuItems(R,["makeCopy"],
-ia));R.addSeparator(ia);null!=la&&(la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["revisionHistory"],ia),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile&&null==la.fileHandle||O.menus.addMenuItems(R,["synchronize"],ia));O.menus.addMenuItems(R,["autosave"],ia);if(null!=la&&(R.addSeparator(ia),la.constructor==DriveFile&&O.menus.addMenuItems(R,["share"],ia),null!=O.fileNode&&"1"!=urlParams.embedInline)){var ta=null!=la.getTitle()?la.getTitle():O.defaultFilename;(la.constructor==
-DriveFile&&null!=la.sync&&la.sync.isConnected()||!/(\.html)$/i.test(ta)&&!/(\.svg)$/i.test(ta))&&this.addMenuItems(R,["-","properties"],ia)}})));this.put("diagram",new Menu(mxUtils.bind(this,function(R,ia){var la=O.getCurrentFile();O.menus.addSubmenu("extras",R,ia,mxResources.get("preferences"));R.addSeparator(ia);if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)O.menus.addMenuItems(R,"new open - synchronize - save saveAs -".split(" "),ia);else if("1"==urlParams.embed||O.mode==App.MODE_ATLAS){"1"!=
-urlParams.noSaveBtn&&"1"!=urlParams.embedInline&&O.menus.addMenuItems(R,["-","save"],ia);if("1"==urlParams.saveAndExit||"1"==urlParams.noSaveBtn&&"0"!=urlParams.saveAndExit||O.mode==App.MODE_ATLAS)O.menus.addMenuItems(R,["saveAndExit"],ia),null!=la&&la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["revisionHistory"],ia);R.addSeparator(ia)}else O.mode==App.MODE_ATLAS?O.menus.addMenuItems(R,["save","synchronize","-"],ia):"1"!=urlParams.noFileMenu&&("1"!=urlParams.sketch?(O.menus.addMenuItems(R,
-["new"],ia),O.menus.addSubmenu("openFrom",R,ia),isLocalStorage&&this.addSubmenu("openRecent",R,ia),R.addSeparator(ia),null!=la&&(la.constructor==DriveFile&&O.menus.addMenuItems(R,["share"],ia),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile||O.menus.addMenuItems(R,["synchronize"],ia)),R.addSeparator(ia),O.menus.addSubmenu("save",R,ia)):O.menus.addSubmenu("file",R,ia));O.menus.addSubmenu("exportAs",R,ia);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?O.menus.addMenuItems(R,
-["import"],ia):"1"!=urlParams.noFileMenu&&O.menus.addSubmenu("importFrom",R,ia);O.commentsSupported()&&O.menus.addMenuItems(R,["-","comments"],ia);O.menus.addMenuItems(R,"- findReplace outline layers tags - pageSetup".split(" "),ia);"1"==urlParams.noFileMenu||mxClient.IS_IOS&&navigator.standalone||O.menus.addMenuItems(R,["print"],ia);"1"!=urlParams.sketch&&null!=la&&null!=O.fileNode&&"1"!=urlParams.embedInline&&(la=null!=la.getTitle()?la.getTitle():O.defaultFilename,/(\.html)$/i.test(la)||/(\.svg)$/i.test(la)||
-this.addMenuItems(R,["-","properties"]));R.addSeparator(ia);O.menus.addSubmenu("help",R,ia);"1"==urlParams.embed||O.mode==App.MODE_ATLAS?("1"!=urlParams.noExitBtn||O.mode==App.MODE_ATLAS)&&O.menus.addMenuItems(R,["-","exit"],ia):"1"!=urlParams.noFileMenu&&O.menus.addMenuItems(R,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(R,ia){var la=O.getCurrentFile();null!=la&&la.constructor==DriveFile?O.menus.addMenuItems(R,["save","makeCopy","-","rename","moveToFolder"],ia):(O.menus.addMenuItems(R,
-["save","saveAs","-","rename"],ia),O.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(R,["upload"],ia):O.menus.addMenuItems(R,["makeCopy"],ia));O.menus.addMenuItems(R,["-","autosave"],ia);null!=la&&la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["-","revisionHistory"],ia)})));var ja=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(R,ia){ja.funct(R,ia);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||O.menus.addMenuItems(R,
-["publishLink"],ia);O.mode!=App.MODE_ATLAS&&"1"!=urlParams.extAuth&&(R.addSeparator(ia),O.menus.addSubmenu("embed",R,ia))})));var U=this.get("language");this.put("table",new Menu(mxUtils.bind(this,function(R,ia){O.menus.addInsertTableCellItem(R,ia)})));if("1"==urlParams.sketch){var J=this.get("units");this.put("units",new Menu(mxUtils.bind(this,function(R,ia){J.funct(R,ia);this.addMenuItems(R,["-","pageScale","-","ruler"],ia)})))}this.put("extras",new Menu(mxUtils.bind(this,function(R,ia){null!=U&&
-O.menus.addSubmenu("language",R,ia);"1"!=urlParams.embed&&"1"!=urlParams.extAuth&&O.mode!=App.MODE_ATLAS&&O.menus.addSubmenu("theme",R,ia);O.menus.addSubmenu("units",R,ia);R.addSeparator(ia);"1"!=urlParams.sketch&&O.menus.addMenuItems(R,"pageScale ruler scrollbars - tooltips copyConnect collapseExpand".split(" "),ia);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&O.mode!=App.MODE_ATLAS&&O.menus.addMenuItems(R,["-","showStartScreen",
-"search","scratchpad"],ia);R.addSeparator(ia);"1"==urlParams.sketch?O.menus.addMenuItems(R,"configuration - copyConnect collapseExpand tooltips -".split(" "),ia):(O.mode!=App.MODE_ATLAS&&O.menus.addMenuItem(R,"configuration",ia),!O.isOfflineApp()&&isLocalStorage&&O.mode!=App.MODE_ATLAS&&O.menus.addMenuItem(R,"plugins",ia));var la=O.getCurrentFile();null!=la&&la.isRealtimeEnabled()&&la.isRealtimeSupported()&&this.addMenuItems(R,["-","showRemoteCursors","shareCursor","-"],ia);R.addSeparator(ia);O.mode!=
-App.MODE_ATLAS&&this.addMenuItems(R,["fullscreen"],ia);("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(R,["toggleDarkMode"],ia);R.addSeparator(ia)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(R,ia){O.menus.addMenuItems(R,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),ia)})));mxUtils.bind(this,function(){var R=this.get("insert"),ia=R.funct;R.funct=function(la,ta){"1"==urlParams.sketch?
-(O.insertTemplateEnabled&&!O.isOffline()&&O.menus.addMenuItems(la,["insertTemplate"],ta),O.menus.addMenuItems(la,["insertImage","insertLink","-"],ta),O.menus.addSubmenu("insertAdvanced",la,ta,mxResources.get("advanced")),O.menus.addSubmenu("layout",la,ta)):(ia.apply(this,arguments),O.menus.addSubmenu("table",la,ta))}})();var V="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),P=function(R,ia,la,ta){R.addItem(la,null,mxUtils.bind(this,function(){var u=
-new CreateGraphDialog(O,la,ta);O.showDialog(u.container,620,420,!0,!1);u.init()}),ia)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(R,ia){for(var la=0;la<V.length;la++)"-"==V[la]?R.addSeparator(ia):P(R,ia,mxResources.get(V[la])+"...",V[la])})))};EditorUi.prototype.installFormatToolbar=function(O){var X=this.editor.graph,ea=document.createElement("div");ea.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
+R.init()}));var ka=this.addPopupMenuCellEditItems;this.put("editCell",new Menu(mxUtils.bind(this,function(R,ha){var la=this.editorUi.editor.graph,ta=la.getSelectionCell();ka.call(this,R,ta,null,ha);this.addMenuItems(R,["editTooltip"],ha);la.model.isVertex(ta)&&this.addMenuItems(R,["editGeometry"],ha);this.addMenuItems(R,["-","edit"],ha)})));this.addPopupMenuCellEditItems=function(R,ha,la,ta){R.addSeparator();this.addSubmenu("editCell",R,ta,mxResources.get("edit"))};this.put("file",new Menu(mxUtils.bind(this,
+function(R,ha){var la=O.getCurrentFile();O.menus.addMenuItems(R,["new"],ha);O.menus.addSubmenu("openFrom",R,ha);isLocalStorage&&this.addSubmenu("openRecent",R,ha);R.addSeparator(ha);null!=la&&la.constructor==DriveFile?O.menus.addMenuItems(R,["save","rename","makeCopy","moveToFolder"],ha):(O.menus.addMenuItems(R,["save","saveAs","-","rename"],ha),O.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(R,["upload"],ha):O.menus.addMenuItems(R,["makeCopy"],
+ha));R.addSeparator(ha);null!=la&&(la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["revisionHistory"],ha),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile&&null==la.fileHandle||O.menus.addMenuItems(R,["synchronize"],ha));O.menus.addMenuItems(R,["autosave"],ha);if(null!=la&&(R.addSeparator(ha),la.constructor==DriveFile&&O.menus.addMenuItems(R,["share"],ha),null!=O.fileNode&&"1"!=urlParams.embedInline)){var ta=null!=la.getTitle()?la.getTitle():O.defaultFilename;(la.constructor==
+DriveFile&&null!=la.sync&&la.sync.isConnected()||!/(\.html)$/i.test(ta)&&!/(\.svg)$/i.test(ta))&&this.addMenuItems(R,["-","properties"],ha)}})));this.put("diagram",new Menu(mxUtils.bind(this,function(R,ha){var la=O.getCurrentFile();O.menus.addSubmenu("extras",R,ha,mxResources.get("preferences"));R.addSeparator(ha);if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)O.menus.addMenuItems(R,"new open - synchronize - save saveAs -".split(" "),ha);else if("1"==urlParams.embed||O.mode==App.MODE_ATLAS){"1"!=
+urlParams.noSaveBtn&&"1"!=urlParams.embedInline&&O.menus.addMenuItems(R,["-","save"],ha);if("1"==urlParams.saveAndExit||"1"==urlParams.noSaveBtn&&"0"!=urlParams.saveAndExit||O.mode==App.MODE_ATLAS)O.menus.addMenuItems(R,["saveAndExit"],ha),null!=la&&la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["revisionHistory"],ha);R.addSeparator(ha)}else O.mode==App.MODE_ATLAS?O.menus.addMenuItems(R,["save","synchronize","-"],ha):"1"!=urlParams.noFileMenu&&("1"!=urlParams.sketch?(O.menus.addMenuItems(R,
+["new"],ha),O.menus.addSubmenu("openFrom",R,ha),isLocalStorage&&this.addSubmenu("openRecent",R,ha),R.addSeparator(ha),null!=la&&(la.constructor==DriveFile&&O.menus.addMenuItems(R,["share"],ha),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile||O.menus.addMenuItems(R,["synchronize"],ha)),R.addSeparator(ha),O.menus.addSubmenu("save",R,ha)):O.menus.addSubmenu("file",R,ha));O.menus.addSubmenu("exportAs",R,ha);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?O.menus.addMenuItems(R,
+["import"],ha):"1"!=urlParams.noFileMenu&&O.menus.addSubmenu("importFrom",R,ha);O.commentsSupported()&&O.menus.addMenuItems(R,["-","comments"],ha);O.menus.addMenuItems(R,"- findReplace outline layers tags - pageSetup".split(" "),ha);"1"==urlParams.noFileMenu||mxClient.IS_IOS&&navigator.standalone||O.menus.addMenuItems(R,["print"],ha);"1"!=urlParams.sketch&&null!=la&&null!=O.fileNode&&"1"!=urlParams.embedInline&&(la=null!=la.getTitle()?la.getTitle():O.defaultFilename,/(\.html)$/i.test(la)||/(\.svg)$/i.test(la)||
+this.addMenuItems(R,["-","properties"]));R.addSeparator(ha);O.menus.addSubmenu("help",R,ha);"1"==urlParams.embed||O.mode==App.MODE_ATLAS?("1"!=urlParams.noExitBtn||O.mode==App.MODE_ATLAS)&&O.menus.addMenuItems(R,["-","exit"],ha):"1"!=urlParams.noFileMenu&&O.menus.addMenuItems(R,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(R,ha){var la=O.getCurrentFile();null!=la&&la.constructor==DriveFile?O.menus.addMenuItems(R,["save","makeCopy","-","rename","moveToFolder"],ha):(O.menus.addMenuItems(R,
+["save","saveAs","-","rename"],ha),O.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(R,["upload"],ha):O.menus.addMenuItems(R,["makeCopy"],ha));O.menus.addMenuItems(R,["-","autosave"],ha);null!=la&&la.isRevisionHistorySupported()&&O.menus.addMenuItems(R,["-","revisionHistory"],ha)})));var ja=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(R,ha){ja.funct(R,ha);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||O.menus.addMenuItems(R,
+["publishLink"],ha);O.mode!=App.MODE_ATLAS&&"1"!=urlParams.extAuth&&(R.addSeparator(ha),O.menus.addSubmenu("embed",R,ha))})));var U=this.get("language");this.put("table",new Menu(mxUtils.bind(this,function(R,ha){O.menus.addInsertTableCellItem(R,ha)})));if("1"==urlParams.sketch){var J=this.get("units");this.put("units",new Menu(mxUtils.bind(this,function(R,ha){J.funct(R,ha);this.addMenuItems(R,["-","pageScale","-","ruler"],ha)})))}this.put("extras",new Menu(mxUtils.bind(this,function(R,ha){null!=U&&
+O.menus.addSubmenu("language",R,ha);"1"!=urlParams.embed&&"1"!=urlParams.extAuth&&O.mode!=App.MODE_ATLAS&&O.menus.addSubmenu("theme",R,ha);O.menus.addSubmenu("units",R,ha);R.addSeparator(ha);"1"!=urlParams.sketch&&O.menus.addMenuItems(R,"pageScale ruler scrollbars - tooltips copyConnect collapseExpand".split(" "),ha);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&O.mode!=App.MODE_ATLAS&&O.menus.addMenuItems(R,["-","showStartScreen",
+"search","scratchpad"],ha);R.addSeparator(ha);"1"==urlParams.sketch?O.menus.addMenuItems(R,"configuration - copyConnect collapseExpand tooltips -".split(" "),ha):(O.mode!=App.MODE_ATLAS&&O.menus.addMenuItem(R,"configuration",ha),!O.isOfflineApp()&&isLocalStorage&&O.mode!=App.MODE_ATLAS&&O.menus.addMenuItem(R,"plugins",ha));EditorUi.isElectronApp&&O.menus.addMenuItems(R,["-","spellCheck","autoBkp","drafts","-"],ha);var la=O.getCurrentFile();null!=la&&la.isRealtimeEnabled()&&la.isRealtimeSupported()&&
+this.addMenuItems(R,["-","showRemoteCursors","shareCursor","-"],ha);R.addSeparator(ha);O.mode!=App.MODE_ATLAS&&this.addMenuItems(R,["fullscreen"],ha);("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(R,["toggleDarkMode"],ha);R.addSeparator(ha)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(R,ha){O.menus.addMenuItems(R,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),ha)})));mxUtils.bind(this,
+function(){var R=this.get("insert"),ha=R.funct;R.funct=function(la,ta){"1"==urlParams.sketch?(O.insertTemplateEnabled&&!O.isOffline()&&O.menus.addMenuItems(la,["insertTemplate"],ta),O.menus.addMenuItems(la,["insertImage","insertLink","-"],ta),O.menus.addSubmenu("insertAdvanced",la,ta,mxResources.get("advanced")),O.menus.addSubmenu("layout",la,ta)):(ha.apply(this,arguments),O.menus.addSubmenu("table",la,ta))}})();var V="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),
+P=function(R,ha,la,ta){R.addItem(la,null,mxUtils.bind(this,function(){var u=new CreateGraphDialog(O,la,ta);O.showDialog(u.container,620,420,!0,!1);u.init()}),ha)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(R,ha){for(var la=0;la<V.length;la++)"-"==V[la]?R.addSeparator(ha):P(R,ha,mxResources.get(V[la])+"...",V[la])})))};EditorUi.prototype.installFormatToolbar=function(O){var X=this.editor.graph,ea=document.createElement("div");ea.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
X.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(ka,ja){0<X.getSelectionCount()?(O.appendChild(ea),ea.innerHTML="Selected: "+X.getSelectionCount()):null!=ea.parentNode&&ea.parentNode.removeChild(ea)}))};var Y=!1;EditorUi.prototype.initFormatWindow=function(){if(!Y&&null!=this.formatWindow){Y=!0;this.formatWindow.window.setClosable(!1);var O=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){O.apply(this,arguments);this.minimized?
(this.div.style.width="90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(X){mxEvent.getSource(X)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var pa=EditorUi.prototype.init;EditorUi.prototype.init=
function(){function O(ua,ya,Na){var Fa=U.menus.get(ua),Ra=R.addMenu(mxResources.get(ua),mxUtils.bind(this,function(){Fa.funct.apply(this,arguments)}),P);Ra.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";Ra.style.display="inline-block";Ra.style.boxSizing="border-box";Ra.style.top="6px";Ra.style.marginRight="6px";Ra.style.height="30px";Ra.style.paddingTop="6px";Ra.style.paddingBottom="6px";Ra.style.cursor="pointer";Ra.setAttribute("title",mxResources.get(ua));U.menus.menuCreated(Fa,
@@ -4002,7 +4003,7 @@ n&&"1"!=urlParams.sketch?(null==La&&(ya=R.addMenu("",ya.funct),ya.setAttribute("
urlParams.sketch&&1E3<=n||null!=urlParams.clibs||null!=urlParams.libs||null!=urlParams["search-shapes"])k(this,!0),null!=this.sidebar&&null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes&&(this.sidebar.searchShapes(urlParams["search-shapes"]),this.sidebar.showEntries("search"));var U=this;mxWindow.prototype.fit=function(){if(Editor.inlineFullscreen||null==U.embedViewport)mxUtils.fit(this.div);else{var ua=parseInt(this.div.offsetLeft),ya=parseInt(this.div.offsetWidth),Na=U.embedViewport.x+
U.embedViewport.width,Fa=parseInt(this.div.offsetTop),Ra=parseInt(this.div.offsetHeight),db=U.embedViewport.y+U.embedViewport.height;this.div.style.left=Math.max(U.embedViewport.x,Math.min(ua,Na-ya))+"px";this.div.style.top=Math.max(U.embedViewport.y,Math.min(Fa,db-Ra))+"px";this.div.style.height=Math.min(U.embedViewport.height,parseInt(this.div.style.height))+"px";this.div.style.width=Math.min(U.embedViewport.width,parseInt(this.div.style.width))+"px"}};this.keyHandler.bindAction(75,!0,"toggleShapes",
!0);EditorUi.windowed&&("1"==urlParams.sketch||1E3<=n)&&"1"!=urlParams.embedInline&&(b(this,!0),"1"==urlParams.sketch?(this.initFormatWindow(),ja=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,null!=this.formatWindow&&(1200>n||708>ja)?this.formatWindow.window.toggleMinimized():this.formatWindow.window.setVisible(!0)):this.formatWindow.window.setVisible(!0));U=this;var J=U.editor.graph;U.toolbar=this.createToolbar(U.createDiv("geToolbar"));U.defaultLibraryName=
-mxResources.get("untitledLibrary");var V=document.createElement("div");V.className="geMenubarContainer";var P=null,R=new Menubar(U,V);U.statusContainer=U.createStatusContainer();U.statusContainer.style.position="relative";U.statusContainer.style.maxWidth="";U.statusContainer.style.marginTop="7px";U.statusContainer.style.marginLeft="6px";U.statusContainer.style.color="gray";U.statusContainer.style.cursor="default";var ia=U.hideCurrentMenu;U.hideCurrentMenu=function(){ia.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};
+mxResources.get("untitledLibrary");var V=document.createElement("div");V.className="geMenubarContainer";var P=null,R=new Menubar(U,V);U.statusContainer=U.createStatusContainer();U.statusContainer.style.position="relative";U.statusContainer.style.maxWidth="";U.statusContainer.style.marginTop="7px";U.statusContainer.style.marginLeft="6px";U.statusContainer.style.color="gray";U.statusContainer.style.cursor="default";var ha=U.hideCurrentMenu;U.hideCurrentMenu=function(){ha.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};
var la=U.descriptorChanged;U.descriptorChanged=function(){la.apply(this,arguments);var ua=U.getCurrentFile();if(null!=ua&&null!=ua.getTitle()){var ya=ua.getMode();"google"==ya?ya="googleDrive":"github"==ya?ya="gitHub":"gitlab"==ya?ya="gitLab":"onedrive"==ya&&(ya="oneDrive");ya=mxResources.get(ya);V.setAttribute("title",ua.getTitle()+(null!=ya?" ("+ya+")":""))}else V.removeAttribute("title")};U.setStatusText(U.editor.getStatus());V.appendChild(U.statusContainer);U.buttonContainer=document.createElement("div");
U.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";V.appendChild(U.buttonContainer);U.menubarContainer=U.buttonContainer;U.tabContainer=document.createElement("div");U.tabContainer.className="geTabContainer";U.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";ja=U.diagramContainer.parentNode;var ta=document.createElement("div");
ta.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";U.diagramContainer.style.top="1"==urlParams.sketch?"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){ta.style.top="20px";U.titlebar=document.createElement("div");U.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var u=document.createElement("div");u.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";
@@ -4028,8 +4029,8 @@ Fa.geometry.setTerminalPoint(new mxPoint(0,0),!0);Fa.geometry.setTerminalPoint(n
"transform","translate(0, -50%)"),W.style.padding="8px 6px 4px",W.style.top="50%",W.style.bottom="",W.style.height="",Aa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Aa.style.width="40px",Aa.style.height="12px",Aa.setAttribute("title","Minimize"),za=!1,Ca()):(W.innerText="",W.appendChild(Aa),mxUtils.setPrefixedStyle(W.style,"transform","translate(0, 0)"),W.style.top="",W.style.bottom="12px",W.style.padding="0px",W.style.height="24px",Aa.style.height="24px",Aa.style.backgroundImage=
"url("+Editor.plusImage+")",Aa.setAttribute("title",mxResources.get("insert")),Aa.style.width="24px",za=!0)}));Ca();U.addListener("darkModeChanged",Ca);U.addListener("sketchModeChanged",Ca)}else U.editor.addListener("statusChanged",mxUtils.bind(this,function(){U.setStatusText(U.editor.getStatus())}));if(null!=u){var Qa=function(ua){mxEvent.isShiftDown(ua)?(U.hideCurrentMenu(),U.actions.get("smartFit").funct(),mxEvent.consume(ua)):mxEvent.isAltDown(ua)&&(U.hideCurrentMenu(),U.actions.get("customZoom").funct(),
mxEvent.consume(ua))},Za=U.actions.get("zoomIn"),cb=U.actions.get("zoomOut"),Ja=U.actions.get("resetView");Q=U.actions.get("fullscreen");var Ua=U.actions.get("undo"),$a=U.actions.get("redo"),z=X("",Ua.funct,null,mxResources.get("undo")+" ("+Ua.shortcut+")",Ua,Editor.undoImage),L=X("",$a.funct,null,mxResources.get("redo")+" ("+$a.shortcut+")",$a,Editor.redoImage),M=X("",Q.funct,null,mxResources.get("fullscreen"),Q,Editor.fullscreenImage);if(null!=N){Ja=function(){ra.style.display=null!=U.pages&&("0"!=
-urlParams.pages||1<U.pages.length||Editor.pagesVisible)?"inline-block":"none"};var S=function(){ra.innerText="";if(null!=U.currentPage){mxUtils.write(ra,U.currentPage.getName());var ua=null!=U.pages?U.pages.length:1,ya=U.getPageIndex(U.currentPage);ya=null!=ya?ya+1:1;var Na=U.currentPage.getId();ra.setAttribute("title",U.currentPage.getName()+" ("+ya+"/"+ua+")"+(null!=Na?" ["+Na+"]":""))}};M.parentNode.removeChild(M);var ca=U.actions.get("delete"),ha=X("",ca.funct,null,mxResources.get("delete"),ca,
-Editor.trashImage);ha.style.opacity="0.1";T.appendChild(ha);ca.addListener("stateChanged",function(){ha.style.opacity=ca.enabled?"":"0.1"});var oa=function(){z.style.display=0<U.editor.undoManager.history.length||J.isEditing()?"inline-block":"none";L.style.display=z.style.display;z.style.opacity=Ua.enabled?"":"0.1";L.style.opacity=$a.enabled?"":"0.1"};T.appendChild(z);T.appendChild(L);Ua.addListener("stateChanged",oa);$a.addListener("stateChanged",oa);oa();var ra=this.createPageMenuTab(!1,!0);ra.style.display=
+urlParams.pages||1<U.pages.length||Editor.pagesVisible)?"inline-block":"none"};var S=function(){ra.innerText="";if(null!=U.currentPage){mxUtils.write(ra,U.currentPage.getName());var ua=null!=U.pages?U.pages.length:1,ya=U.getPageIndex(U.currentPage);ya=null!=ya?ya+1:1;var Na=U.currentPage.getId();ra.setAttribute("title",U.currentPage.getName()+" ("+ya+"/"+ua+")"+(null!=Na?" ["+Na+"]":""))}};M.parentNode.removeChild(M);var ca=U.actions.get("delete"),ia=X("",ca.funct,null,mxResources.get("delete"),ca,
+Editor.trashImage);ia.style.opacity="0.1";T.appendChild(ia);ca.addListener("stateChanged",function(){ia.style.opacity=ca.enabled?"":"0.1"});var oa=function(){z.style.display=0<U.editor.undoManager.history.length||J.isEditing()?"inline-block":"none";L.style.display=z.style.display;z.style.opacity=Ua.enabled?"":"0.1";L.style.opacity=$a.enabled?"":"0.1"};T.appendChild(z);T.appendChild(L);Ua.addListener("stateChanged",oa);$a.addListener("stateChanged",oa);oa();var ra=this.createPageMenuTab(!1,!0);ra.style.display=
"none";ra.style.position="";ra.style.marginLeft="";ra.style.top="";ra.style.left="";ra.style.height="100%";ra.style.lineHeight="";ra.style.borderStyle="none";ra.style.padding="3px 0";ra.style.margin="0px";ra.style.background="";ra.style.border="";ra.style.boxShadow="none";ra.style.verticalAlign="top";ra.style.width="auto";ra.style.maxWidth="160px";ra.style.position="relative";ra.style.padding="6px";ra.style.textOverflow="ellipsis";ra.style.opacity="0.8";N.appendChild(ra);U.editor.addListener("pagesPatched",
S);U.editor.addListener("pageSelected",S);U.editor.addListener("pageRenamed",S);U.editor.addListener("fileLoaded",S);S();U.addListener("fileDescriptorChanged",Ja);U.addListener("pagesVisibleChanged",Ja);U.editor.addListener("pagesPatched",Ja);Ja();Ja=X("",cb.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",cb,Editor.zoomOutImage);N.appendChild(Ja);var qa=R.addMenu("100%",u.funct);qa.setAttribute("title",mxResources.get("zoom"));qa.innerHTML="100%";qa.style.display="inline-block";
qa.style.color="inherit";qa.style.cursor="pointer";qa.style.textAlign="center";qa.style.whiteSpace="nowrap";qa.style.paddingRight="10px";qa.style.textDecoration="none";qa.style.verticalAlign="top";qa.style.padding="6px 0";qa.style.fontSize="14px";qa.style.width="40px";qa.style.opacity="0.4";N.appendChild(qa);u=X("",Za.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",Za,Editor.zoomInImage);N.appendChild(u);Q.visible&&(N.appendChild(M),mxEvent.addListener(document,"fullscreenchange",
@@ -4044,7 +4045,7 @@ urlParams.embedInline){document.body.style.cursor="text";W.style.transform="";mx
ja.style.cursor="row-resize";U.diagramContainer.parentNode.appendChild(ja);U.bottomResizer=ja;var Pa=null,Oa=null,Ta=null,Ma=null;mxEvent.addGestureListeners(ja,function(ua){Ma=parseInt(U.diagramContainer.style.height);Oa=mxEvent.getClientY(ua);J.popupMenuHandler.hideMenu();mxEvent.consume(ua)});ja=ja.cloneNode(!1);ja.style.cursor="col-resize";U.diagramContainer.parentNode.appendChild(ja);U.rightResizer=ja;mxEvent.addGestureListeners(ja,function(ua){Ta=parseInt(U.diagramContainer.style.width);Pa=
mxEvent.getClientX(ua);J.popupMenuHandler.hideMenu();mxEvent.consume(ua)});mxEvent.addGestureListeners(document.body,null,function(ua){var ya=!1;null!=Pa&&(U.diagramContainer.style.width=Math.max(20,Ta+mxEvent.getClientX(ua)-Pa)+"px",ya=!0);null!=Oa&&(U.diagramContainer.style.height=Math.max(20,Ma+mxEvent.getClientY(ua)-Oa)+"px",ya=!0);ya&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:U.diagramContainer.getBoundingClientRect()}),
"*"),Z(),U.refresh())},function(ua){null==Pa&&null==Oa||mxEvent.consume(ua);Oa=Pa=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";U.bottomResizer.style.visibility="hidden";U.rightResizer.style.visibility="hidden";T.style.visibility="hidden";N.style.visibility="hidden";W.style.display="none"}"1"==urlParams.prefetchFonts&&U.editor.loadFonts()}}};
-(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var e=EditorUi.initTheme;EditorUi.initTheme=function(){e.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,e,k,n,D,t,E){this.file=b;this.id=e;this.content=k;this.modifiedDate=n;this.createdDate=D;this.isResolved=t;this.user=E;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,e,k,n,D){e()};DrawioComment.prototype.editComment=function(b,e,k){e()};DrawioComment.prototype.deleteComment=function(b,e){b()};DrawioUser=function(b,e,k,n,D){this.id=b;this.email=e;this.displayName=k;this.pictureUrl=n;this.locale=D};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nbeta=beta\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\nrealtimeCollaboration=Real-Time Collaboration\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlabels=Labels\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareCursor=Share Mouse Cursor\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowRemoteCursors=Show Remote Mouse Cursors\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsnapToGrid=Snap to Grid\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunmerge=Unmerge\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\ncreateODFile=Create OneDrive File\npickGDriveFile=Pick Google Drive File\ncreateGDriveFile=Create Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\nspellCheck=Spell checker\nnoChange=No Change\nlblToSvg=Convert labels to SVG\ntxtSettings=Text Settings\nLinksLost=Links will be lost\narcSize=Arc Size\neditConnectionPoints=Edit Connection Points\nnotInOffline=Not supported while offline\nnotInDesktop=Not supported in Desktop App\nconfConfigSpaceArchived=draw.io Configuration space (DRAWIOCONFIG) is archived. Please restore it first.\nconfACleanOldVerStarted=Cleaning old diagram draft versions started\nconfACleanOldVerDone=Cleaning old diagram draft versions finished\nconfACleaningFile=Cleaning diagram draft "{1}" old versions\nconfAFileCleaned=Cleaning diagram draft "{1}" done\nconfAFileCleanFailed=Cleaning diagram draft "{1}" failed\nconfACleanOnly=Clean Diagram Drafts Only\nbrush=Brush\nopenDevTools=Open Developer Tools\nautoBkp=Automatic Backup\nconfAIgnoreCollectErr=Ignore collecting current pages errors\ndrafts=Drafts\ndraftSaveInt=Draft save interval [sec] (0 to disable)\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
+(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var e=EditorUi.initTheme;EditorUi.initTheme=function(){e.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,e,k,n,D,t,E){this.file=b;this.id=e;this.content=k;this.modifiedDate=n;this.createdDate=D;this.isResolved=t;this.user=E;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,e,k,n,D){e()};DrawioComment.prototype.editComment=function(b,e,k){e()};DrawioComment.prototype.deleteComment=function(b,e){b()};DrawioUser=function(b,e,k,n,D){this.id=b;this.email=e;this.displayName=k;this.pictureUrl=n;this.locale=D};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nbeta=beta\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\nrealtimeCollaboration=Real-Time Collaboration\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlabels=Labels\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareCursor=Share Mouse Cursor\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowRemoteCursors=Show Remote Mouse Cursors\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsnapToGrid=Snap to Grid\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunmerge=Unmerge\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\ncreateODFile=Create OneDrive File\npickGDriveFile=Pick Google Drive File\ncreateGDriveFile=Create Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\nspellCheck=Spell checker\nnoChange=No Change\nlblToSvg=Convert labels to SVG\ntxtSettings=Text Settings\nLinksLost=Links will be lost\narcSize=Arc Size\neditConnectionPoints=Edit Connection Points\nnotInOffline=Not supported while offline\nnotInDesktop=Not supported in Desktop App\nconfConfigSpaceArchived=draw.io Configuration space (DRAWIOCONFIG) is archived. Please restore it first.\nconfACleanOldVerStarted=Cleaning old diagram draft versions started\nconfACleanOldVerDone=Cleaning old diagram draft versions finished\nconfACleaningFile=Cleaning diagram draft "{1}" old versions\nconfAFileCleaned=Cleaning diagram draft "{1}" done\nconfAFileCleanFailed=Cleaning diagram draft "{1}" failed\nconfACleanOnly=Clean Diagram Drafts Only\nbrush=Brush\nopenDevTools=Open Developer Tools\nautoBkp=Automatic Backup\nconfAIgnoreCollectErr=Ignore collecting current pages errors\ndrafts=Drafts\ndraftSaveInt=Draft save interval [sec] (0 to disable)\npluginsDisabled=External plugins disabled.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=Graph.prototype.defaultThemes["default-style2"];GraphViewer=function(b,e,k){this.init(b,e,k)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://viewer.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?24:26;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!1;GraphViewer.prototype.autoCrop=!1;
GraphViewer.prototype.autoOrigin=!0;GraphViewer.prototype.center=!1;GraphViewer.prototype.forceCenter=!1;GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.allowZoomOut=!0;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;GraphViewer.prototype.responsive=!1;
GraphViewer.prototype.init=function(b,e,k){this.graphConfig=null!=k?k:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.autoCrop=null!=this.graphConfig["auto-crop"]?this.graphConfig["auto-crop"]:this.autoCrop;this.autoOrigin=null!=this.graphConfig["auto-origin"]?this.graphConfig["auto-origin"]:this.autoOrigin;this.allowZoomOut=null!=this.graphConfig["allow-zoom-out"]?this.graphConfig["allow-zoom-out"]:this.allowZoomOut;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?
diff --git a/src/main/webapp/mxgraph/mxClient.js b/src/main/webapp/mxgraph/mxClient.js
index 699e7602..0b370547 100644
--- a/src/main/webapp/mxgraph/mxClient.js
+++ b/src/main/webapp/mxgraph/mxClient.js
@@ -1,4 +1,4 @@
-var mxClient={VERSION:"19.0.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+var mxClient={VERSION:"19.0.3",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&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:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2<navigator.maxTouchPoints,IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,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:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==
@@ -103,10 +103,10 @@ STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",STYLE_LABEL_
STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",
STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_SWIMLANE_HEAD:"swimlaneHead",STYLE_SWIMLANE_BODY:"swimlaneBody",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",
STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",
-STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",
-STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",STYLE_CLIP_PATH:"clipPath",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",
-SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",
-ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",
+STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FIXED_WIDTH:"fixedWidth",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",
+STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",STYLE_CLIP_PATH:"clipPath",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",
+SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",
+ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",
EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};
function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};
mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};
@@ -1159,9 +1159,9 @@ mxGraph.prototype.swapBounds=function(a,b){if(null!=a){var c=this.model.getGeome
mxGraph.prototype.updateAlternateBounds=function(a,b,c){if(null!=a&&null!=b){c=this.getCurrentCellStyle(a);if(null==b.alternateBounds){var d=b;this.collapseToPreferredSize&&(a=this.getPreferredSizeForCell(a),null!=a&&(d=a,a=mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE),0<a&&(d.height=Math.max(d.height,a))));b.alternateBounds=new mxRectangle(0,0,d.width,d.height)}if(null!=b.alternateBounds){b.alternateBounds.x=b.x;b.alternateBounds.y=b.y;var e=mxUtils.toRadians(c[mxConstants.STYLE_ROTATION]||0);
0!=e&&(c=b.alternateBounds.getCenterX()-b.getCenterX(),d=b.alternateBounds.getCenterY()-b.getCenterY(),a=Math.cos(e),e=Math.sin(e),b.alternateBounds.x+=a*c-e*d-c,b.alternateBounds.y+=e*c+a*d-d)}}};mxGraph.prototype.addAllEdges=function(a){var b=a.slice();return mxUtils.removeDuplicates(b.concat(this.getAllEdges(a)))};
mxGraph.prototype.getAllEdges=function(a){var b=[];if(null!=a)for(var c=0;c<a.length;c++){for(var d=this.model.getEdgeCount(a[c]),e=0;e<d;e++)b.push(this.model.getEdgeAt(a[c],e));d=this.model.getChildren(a[c]);b=b.concat(this.getAllEdges(d))}return b};mxGraph.prototype.updateCellSize=function(a,b){b=null!=b?b:!1;this.model.beginUpdate();try{this.cellSizeUpdated(a,b),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",a,"ignoreChildren",b))}finally{this.model.endUpdate()}return a};
-mxGraph.prototype.cellSizeUpdated=function(a,b){if(null!=a){this.model.beginUpdate();try{var c=this.getPreferredSizeForCell(a),d=this.model.getGeometry(a);if(null!=c&&null!=d){var e=this.isCellCollapsed(a);d=d.clone();if(this.isSwimlane(a)){var f=this.getCellStyle(a),g=this.model.getStyle(a);null==g&&(g="");mxUtils.getValue(f,mxConstants.STYLE_HORIZONTAL,!0)?(g=mxUtils.setStyle(g,mxConstants.STYLE_STARTSIZE,c.height+8),e&&(d.height=c.height+8),d.width=c.width):(g=mxUtils.setStyle(g,mxConstants.STYLE_STARTSIZE,
-c.width+8),e&&(d.width=c.width+8),d.height=c.height);this.model.setStyle(a,g)}else{var k=this.view.createState(a),l=k.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,m=this.getVerticalAlign(k);"fixed"==k.style[mxConstants.STYLE_ASPECT]&&(c.height=Math.round(d.height*c.width*100/d.width)/100);l==mxConstants.ALIGN_RIGHT?d.x+=d.width-c.width:l==mxConstants.ALIGN_CENTER&&(d.x+=Math.round((d.width-c.width)/2));m==mxConstants.ALIGN_BOTTOM?d.y+=d.height-c.height:m==mxConstants.ALIGN_MIDDLE&&(d.y+=
-Math.round((d.height-c.height)/2));d.width=c.width;d.height=c.height}if(!b&&!e){var n=this.view.getBounds(this.model.getChildren(a));if(null!=n){var p=this.view.translate,q=this.view.scale,r=(n.y+n.height)/q-d.y-p.y;d.width=Math.max(d.width,(n.x+n.width)/q-d.x-p.x);d.height=Math.max(d.height,r)}}this.cellsResized([a],[d],!1)}}finally{this.model.endUpdate()}}};
+mxGraph.prototype.cellSizeUpdated=function(a,b){if(null!=a){this.model.beginUpdate();try{var c=this.getCellStyle(a),d=this.model.getGeometry(a);if(null!=d){var e=mxUtils.getValue(c,mxConstants.STYLE_FIXED_WIDTH,!1),f=this.getPreferredSizeForCell(a,e?d.width:null);if(null!=f){var g=this.isCellCollapsed(a);d=d.clone();if(this.isSwimlane(a)){var k=this.model.getStyle(a);null==k&&(k="");mxUtils.getValue(c,mxConstants.STYLE_HORIZONTAL,!0)?(k=mxUtils.setStyle(k,mxConstants.STYLE_STARTSIZE,f.height+8),g&&
+(d.height=f.height+8),e||(d.width=f.width)):(k=mxUtils.setStyle(k,mxConstants.STYLE_STARTSIZE,f.width+8),g&&!e&&(d.width=f.width+8),d.height=f.height);this.model.setStyle(a,k)}else{var l=this.view.createState(a),m=l.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,n=this.getVerticalAlign(l);"fixed"==l.style[mxConstants.STYLE_ASPECT]&&(f.height=Math.round(d.height*f.width*100/d.width)/100);n==mxConstants.ALIGN_BOTTOM?d.y+=d.height-f.height:n==mxConstants.ALIGN_MIDDLE&&(d.y+=Math.round((d.height-
+f.height)/2));d.height=f.height;e||(m==mxConstants.ALIGN_RIGHT?d.x+=d.width-f.width:m==mxConstants.ALIGN_CENTER&&(d.x+=Math.round((d.width-f.width)/2)),d.width=f.width)}if(!b&&!g){var p=this.view.getBounds(this.model.getChildren(a));if(null!=p){var q=this.view.translate,r=this.view.scale,t=(p.x+p.width)/r-d.x-q.x;d.height=Math.max(d.height,(p.y+p.height)/r-d.y-q.y);e||(d.width=Math.max(d.width,t))}}this.cellsResized([a],[d],!1)}}}finally{this.model.endUpdate()}}};
mxGraph.prototype.getPreferredSizeForCell=function(a,b){var c=null;if(null!=a){var d=this.view.createState(a),e=d.style;if(!this.model.isEdge(a)){var f=e[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE;a=c=0;null==this.getImage(d)&&null==e[mxConstants.STYLE_IMAGE]||e[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(e[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(c+=parseFloat(e[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),e[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&
(a+=parseFloat(e[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize));c+=2*(e[mxConstants.STYLE_SPACING]||0);c+=e[mxConstants.STYLE_SPACING_LEFT]||0;c+=e[mxConstants.STYLE_SPACING_RIGHT]||0;a+=2*(e[mxConstants.STYLE_SPACING]||0);a+=e[mxConstants.STYLE_SPACING_TOP]||0;a+=e[mxConstants.STYLE_SPACING_BOTTOM]||0;var g=this.getFoldingImage(d);null!=g&&(c+=g.width+8);g=this.cellRenderer.getLabelValue(d);null!=g&&0<g.length?(this.isHtmlLabel(d.cell)||(g=mxUtils.htmlEntities(g,!1)),g=g.replace(/\n/g,
"<br>"),d=mxUtils.getSizeForString(g,f,e[mxConstants.STYLE_FONTFAMILY],b,e[mxConstants.STYLE_FONTSTYLE]),b=d.width+c,d=d.height+a,mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)||(e=d,d=b,b=e),this.gridEnabled&&(b=this.snap(b+this.gridSize/2),d=this.snap(d+this.gridSize/2)),c=new mxRectangle(0,0,b,d)):(e=4*this.gridSize,c=new mxRectangle(0,0,e,e))}}return c};mxGraph.prototype.resizeCell=function(a,b,c){return this.resizeCells([a],[b],c)[0]};
@@ -1746,12 +1746,13 @@ mxCellHighlight.prototype.repaint=function(){null!=this.state&&null!=this.shape&
"0"),this.shape.strokewidth=this.getStrokeWidth()/this.state.view.scale,this.shape.outline=!0),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),this.shape.redraw())};mxCellHighlight.prototype.hide=function(){this.highlight(null)};mxCellHighlight.prototype.highlight=function(a){this.state!=a&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=a,null!=this.state&&this.drawHighlight())};
mxCellHighlight.prototype.isHighlightAt=function(a,b){var c=!1;if(null!=this.shape&&null!=document.elementFromPoint)for(a=document.elementFromPoint(a,b);null!=a;){if(a==this.shape.node){c=!0;break}a=a.parentNode}return c};mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler);this.graph.getView().removeListener(this.repaintHandler);this.graph.getModel().removeListener(this.repaintHandler);null!=this.shape&&(this.shape.destroy(),this.shape=null)};
var mxCodecRegistry={codecs:[],aliases:[],register:function(a){if(null!=a){var b=a.getName();mxCodecRegistry.codecs[b]=a;var c=mxUtils.getFunctionName(a.template.constructor);c!=b&&mxCodecRegistry.addAlias(c,b)}return a},addAlias:function(a,b){mxCodecRegistry.aliases[a]=b},getCodec:function(a){var b=null;if(null!=a){b=mxUtils.getFunctionName(a);var c=mxCodecRegistry.aliases[b];null!=c&&(b=c);b=mxCodecRegistry.codecs[b];if(null==b)try{b=new mxObjectCodec(new a),mxCodecRegistry.register(b)}catch(d){}}return b}};
-function mxCodec(a){this.document=a||mxUtils.createXmlDocument();this.objects=[]}mxCodec.prototype.document=null;mxCodec.prototype.objects=null;mxCodec.prototype.elements=null;mxCodec.prototype.encodeDefaults=!1;mxCodec.prototype.putObject=function(a,b){return this.objects[a]=b};mxCodec.prototype.getObject=function(a){var b=null;null!=a&&(b=this.objects[a],null==b&&(b=this.lookup(a),null==b&&(a=this.getElementById(a),null!=a&&(b=this.decode(a)))));return b};mxCodec.prototype.lookup=function(a){return null};
-mxCodec.prototype.getElementById=function(a){this.updateElements();return this.elements[a]};mxCodec.prototype.updateElements=function(){null==this.elements&&(this.elements={},null!=this.document.documentElement&&this.addElement(this.document.documentElement))};
+function mxCodec(a){this.document=a||mxUtils.createXmlDocument();this.objects=[]}mxCodec.allowlist=null;mxCodec.prototype.document=null;mxCodec.prototype.objects=null;mxCodec.prototype.elements=null;mxCodec.prototype.encodeDefaults=!1;mxCodec.prototype.putObject=function(a,b){return this.objects[a]=b};mxCodec.prototype.getObject=function(a){var b=null;null!=a&&(b=this.objects[a],null==b&&(b=this.lookup(a),null==b&&(a=this.getElementById(a),null!=a&&(b=this.decode(a)))));return b};
+mxCodec.prototype.lookup=function(a){return null};mxCodec.prototype.getElementById=function(a){this.updateElements();return this.elements[a]};mxCodec.prototype.updateElements=function(){null==this.elements&&(this.elements={},null!=this.document.documentElement&&this.addElement(this.document.documentElement))};
mxCodec.prototype.addElement=function(a){if(a.nodeType==mxConstants.NODETYPE_ELEMENT){var b=a.getAttribute("id");if(null!=b)if(null==this.elements[b])this.elements[b]=a;else if(this.elements[b]!=a)throw Error(b+": Duplicate ID");}for(a=a.firstChild;null!=a;)this.addElement(a),a=a.nextSibling};mxCodec.prototype.getId=function(a){var b=null;null!=a&&(b=this.reference(a),null==b&&a instanceof mxCell&&(b=a.getId(),null==b&&(b=mxCellPath.create(a),0==b.length&&(b="root"))));return b};
mxCodec.prototype.reference=function(a){return null};mxCodec.prototype.encode=function(a){var b=null;if(null!=a&&null!=a.constructor){var c=mxCodecRegistry.getCodec(a.constructor);null!=c?b=c.encode(this,a):mxUtils.isNode(a)?b=mxUtils.importNode(this.document,a,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(a.constructor))}return b};
-mxCodec.prototype.decode=function(a,b){this.updateElements();var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=null;try{c=window[a.nodeName]}catch(d){}c=mxCodecRegistry.getCodec(c);null!=c?c=c.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}return c};mxCodec.prototype.encodeCell=function(a,b,c){b.appendChild(this.encode(a));if(null==c||c){c=a.getChildCount();for(var d=0;d<c;d++)this.encodeCell(a.getChildAt(d),b)}};
-mxCodec.prototype.isCellCodec=function(a){return null!=a&&"function"==typeof a.isCellCodec?a.isCellCodec():!1};mxCodec.prototype.decodeCell=function(a,b){b=null!=b?b:!0;var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=mxCodecRegistry.getCodec(a.nodeName);if(!this.isCellCodec(c))for(var d=a.firstChild;null!=d&&!this.isCellCodec(c);)c=mxCodecRegistry.getCodec(d.nodeName),d=d.nextSibling;this.isCellCodec(c)||(c=mxCodecRegistry.getCodec(mxCell));c=c.decode(this,a);b&&this.insertIntoGraph(c)}return c};
+mxCodec.prototype.decode=function(a,b){this.updateElements();var c=null;null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT&&(c=this.getConstructor(a.nodeName),c=mxCodecRegistry.getCodec(c),null!=c?c=c.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as")));return c};mxCodec.prototype.getConstructor=function(a){var b=null;try{null==mxCodec.allowlist||0<=mxUtils.indexOf(mxCodec.allowlist,a)?b=window[a]:null!=window.console&&console.error("mxCodec.getConstructor: "+a+" not allowed in mxCodec.allowlist")}catch(c){}return b};
+mxCodec.prototype.encodeCell=function(a,b,c){b.appendChild(this.encode(a));if(null==c||c){c=a.getChildCount();for(var d=0;d<c;d++)this.encodeCell(a.getChildAt(d),b)}};mxCodec.prototype.isCellCodec=function(a){return null!=a&&"function"==typeof a.isCellCodec?a.isCellCodec():!1};
+mxCodec.prototype.decodeCell=function(a,b){b=null!=b?b:!0;var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){c=mxCodecRegistry.getCodec(a.nodeName);if(!this.isCellCodec(c))for(var d=a.firstChild;null!=d&&!this.isCellCodec(c);)c=mxCodecRegistry.getCodec(d.nodeName),d=d.nextSibling;this.isCellCodec(c)||(c=mxCodecRegistry.getCodec(mxCell));c=c.decode(this,a);b&&this.insertIntoGraph(c)}return c};
mxCodec.prototype.insertIntoGraph=function(a){var b=a.parent,c=a.getTerminal(!0),d=a.getTerminal(!1);a.setTerminal(null,!1);a.setTerminal(null,!0);a.parent=null;if(null!=b){if(b==a)throw Error(b.id+": Self Reference");b.insert(a)}null!=c&&c.insertEdge(a,!0);null!=d&&d.insertEdge(a,!1)};mxCodec.prototype.setAttribute=function(a,b,c){null!=b&&null!=c&&a.setAttribute(b,c)};
function mxObjectCodec(a,b,c,d){this.template=a;this.exclude=null!=b?b:[];this.idrefs=null!=c?c:[];this.mapping=null!=d?d:[];this.reverse={};for(var e in this.mapping)this.reverse[this.mapping[e]]=e}mxObjectCodec.allowEval=!1;mxObjectCodec.prototype.template=null;mxObjectCodec.prototype.exclude=null;mxObjectCodec.prototype.idrefs=null;mxObjectCodec.prototype.mapping=null;mxObjectCodec.prototype.reverse=null;mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)};
mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor};mxObjectCodec.prototype.getFieldName=function(a){if(null!=a){var b=this.reverse[a];null!=b&&(a=b)}return a};mxObjectCodec.prototype.getAttributeName=function(a){if(null!=a){var b=this.mapping[a];null!=b&&(a=b)}return a};mxObjectCodec.prototype.isExcluded=function(a,b,c,d){return b==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,b)};
diff --git a/src/main/webapp/resources/dia.txt b/src/main/webapp/resources/dia.txt
index 25c8ecd2..5ebdea89 100644
--- a/src/main/webapp/resources/dia.txt
+++ b/src/main/webapp/resources/dia.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_am.txt b/src/main/webapp/resources/dia_am.txt
index 1569009e..74778eda 100644
--- a/src/main/webapp/resources/dia_am.txt
+++ b/src/main/webapp/resources/dia_am.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_ar.txt b/src/main/webapp/resources/dia_ar.txt
index aab07076..05feec46 100644
--- a/src/main/webapp/resources/dia_ar.txt
+++ b/src/main/webapp/resources/dia_ar.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_bg.txt b/src/main/webapp/resources/dia_bg.txt
index 0e394ee3..449dc08b 100644
--- a/src/main/webapp/resources/dia_bg.txt
+++ b/src/main/webapp/resources/dia_bg.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_bn.txt b/src/main/webapp/resources/dia_bn.txt
index 1bb86950..ad6be931 100644
--- a/src/main/webapp/resources/dia_bn.txt
+++ b/src/main/webapp/resources/dia_bn.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_bs.txt b/src/main/webapp/resources/dia_bs.txt
index e0917202..55392223 100644
--- a/src/main/webapp/resources/dia_bs.txt
+++ b/src/main/webapp/resources/dia_bs.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_ca.txt b/src/main/webapp/resources/dia_ca.txt
index 4b35364a..37931ee4 100644
--- a/src/main/webapp/resources/dia_ca.txt
+++ b/src/main/webapp/resources/dia_ca.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_cs.txt b/src/main/webapp/resources/dia_cs.txt
index c730e213..2e8ae215 100644
--- a/src/main/webapp/resources/dia_cs.txt
+++ b/src/main/webapp/resources/dia_cs.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_da.txt b/src/main/webapp/resources/dia_da.txt
index 5086acfe..6c3ae3eb 100644
--- a/src/main/webapp/resources/dia_da.txt
+++ b/src/main/webapp/resources/dia_da.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_de.txt b/src/main/webapp/resources/dia_de.txt
index 0b5684c7..7fcefb94 100644
--- a/src/main/webapp/resources/dia_de.txt
+++ b/src/main/webapp/resources/dia_de.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_el.txt b/src/main/webapp/resources/dia_el.txt
index 941ba0b0..96a5c913 100644
--- a/src/main/webapp/resources/dia_el.txt
+++ b/src/main/webapp/resources/dia_el.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_eo.txt b/src/main/webapp/resources/dia_eo.txt
index 81d105d9..9862a906 100644
--- a/src/main/webapp/resources/dia_eo.txt
+++ b/src/main/webapp/resources/dia_eo.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_es.txt b/src/main/webapp/resources/dia_es.txt
index 3f0bd57d..f5791000 100644
--- a/src/main/webapp/resources/dia_es.txt
+++ b/src/main/webapp/resources/dia_es.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_et.txt b/src/main/webapp/resources/dia_et.txt
index ff17b89a..6f1e2acb 100644
--- a/src/main/webapp/resources/dia_et.txt
+++ b/src/main/webapp/resources/dia_et.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_eu.txt b/src/main/webapp/resources/dia_eu.txt
index 3520b909..566f3bb2 100644
--- a/src/main/webapp/resources/dia_eu.txt
+++ b/src/main/webapp/resources/dia_eu.txt
@@ -1201,3 +1201,4 @@ autoBkp=Babeskopia automatikoa
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_fa.txt b/src/main/webapp/resources/dia_fa.txt
index 72962857..f8b009bf 100644
--- a/src/main/webapp/resources/dia_fa.txt
+++ b/src/main/webapp/resources/dia_fa.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_fi.txt b/src/main/webapp/resources/dia_fi.txt
index e07d9525..a68ef182 100644
--- a/src/main/webapp/resources/dia_fi.txt
+++ b/src/main/webapp/resources/dia_fi.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_fil.txt b/src/main/webapp/resources/dia_fil.txt
index 64852696..23d9187a 100644
--- a/src/main/webapp/resources/dia_fil.txt
+++ b/src/main/webapp/resources/dia_fil.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_fr.txt b/src/main/webapp/resources/dia_fr.txt
index d05315a4..15be84ce 100644
--- a/src/main/webapp/resources/dia_fr.txt
+++ b/src/main/webapp/resources/dia_fr.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_gl.txt b/src/main/webapp/resources/dia_gl.txt
index cadedff6..1fccb51d 100644
--- a/src/main/webapp/resources/dia_gl.txt
+++ b/src/main/webapp/resources/dia_gl.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_gu.txt b/src/main/webapp/resources/dia_gu.txt
index 481c49a7..b312f691 100644
--- a/src/main/webapp/resources/dia_gu.txt
+++ b/src/main/webapp/resources/dia_gu.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_he.txt b/src/main/webapp/resources/dia_he.txt
index d2bda56c..bc8e246e 100644
--- a/src/main/webapp/resources/dia_he.txt
+++ b/src/main/webapp/resources/dia_he.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_hi.txt b/src/main/webapp/resources/dia_hi.txt
index 6bc0a621..76b68689 100644
--- a/src/main/webapp/resources/dia_hi.txt
+++ b/src/main/webapp/resources/dia_hi.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_hr.txt b/src/main/webapp/resources/dia_hr.txt
index 5973586b..8385e757 100644
--- a/src/main/webapp/resources/dia_hr.txt
+++ b/src/main/webapp/resources/dia_hr.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_hu.txt b/src/main/webapp/resources/dia_hu.txt
index 309d25bd..905844ae 100644
--- a/src/main/webapp/resources/dia_hu.txt
+++ b/src/main/webapp/resources/dia_hu.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_i18n.txt b/src/main/webapp/resources/dia_i18n.txt
index 211c54a4..9a03117a 100644
--- a/src/main/webapp/resources/dia_i18n.txt
+++ b/src/main/webapp/resources/dia_i18n.txt
@@ -1201,3 +1201,4 @@ autoBkp=autoBkp
confAIgnoreCollectErr=confAIgnoreCollectErr
drafts=drafts
draftSaveInt=draftSaveInt
+pluginsDisabled=pluginsDisabled
diff --git a/src/main/webapp/resources/dia_id.txt b/src/main/webapp/resources/dia_id.txt
index 8af361bb..8348598c 100644
--- a/src/main/webapp/resources/dia_id.txt
+++ b/src/main/webapp/resources/dia_id.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_it.txt b/src/main/webapp/resources/dia_it.txt
index ef2af352..4f518dc8 100644
--- a/src/main/webapp/resources/dia_it.txt
+++ b/src/main/webapp/resources/dia_it.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_ja.txt b/src/main/webapp/resources/dia_ja.txt
index f0d3d231..64b5d0a6 100644
--- a/src/main/webapp/resources/dia_ja.txt
+++ b/src/main/webapp/resources/dia_ja.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_kn.txt b/src/main/webapp/resources/dia_kn.txt
index 0211835b..24b07558 100644
--- a/src/main/webapp/resources/dia_kn.txt
+++ b/src/main/webapp/resources/dia_kn.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_ko.txt b/src/main/webapp/resources/dia_ko.txt
index 3efe1d30..4c229336 100644
--- a/src/main/webapp/resources/dia_ko.txt
+++ b/src/main/webapp/resources/dia_ko.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_lt.txt b/src/main/webapp/resources/dia_lt.txt
index c737d00f..14df56e5 100644
--- a/src/main/webapp/resources/dia_lt.txt
+++ b/src/main/webapp/resources/dia_lt.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_lv.txt b/src/main/webapp/resources/dia_lv.txt
index 48049ca2..9ca9effb 100644
--- a/src/main/webapp/resources/dia_lv.txt
+++ b/src/main/webapp/resources/dia_lv.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_ml.txt b/src/main/webapp/resources/dia_ml.txt
index ddd2da84..d822b3ac 100644
--- a/src/main/webapp/resources/dia_ml.txt
+++ b/src/main/webapp/resources/dia_ml.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_mr.txt b/src/main/webapp/resources/dia_mr.txt
index a2ba93a6..4a68c975 100644
--- a/src/main/webapp/resources/dia_mr.txt
+++ b/src/main/webapp/resources/dia_mr.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_ms.txt b/src/main/webapp/resources/dia_ms.txt
index 48111fcb..be162deb 100644
--- a/src/main/webapp/resources/dia_ms.txt
+++ b/src/main/webapp/resources/dia_ms.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_my.txt b/src/main/webapp/resources/dia_my.txt
index 25c8ecd2..5ebdea89 100644
--- a/src/main/webapp/resources/dia_my.txt
+++ b/src/main/webapp/resources/dia_my.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_nl.txt b/src/main/webapp/resources/dia_nl.txt
index dd07660d..75a6b007 100644
--- a/src/main/webapp/resources/dia_nl.txt
+++ b/src/main/webapp/resources/dia_nl.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_no.txt b/src/main/webapp/resources/dia_no.txt
index 159c8057..39316bce 100644
--- a/src/main/webapp/resources/dia_no.txt
+++ b/src/main/webapp/resources/dia_no.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_pl.txt b/src/main/webapp/resources/dia_pl.txt
index cd7edad3..575dbefe 100644
--- a/src/main/webapp/resources/dia_pl.txt
+++ b/src/main/webapp/resources/dia_pl.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_pt-br.txt b/src/main/webapp/resources/dia_pt-br.txt
index 76eff736..0a9acb17 100644
--- a/src/main/webapp/resources/dia_pt-br.txt
+++ b/src/main/webapp/resources/dia_pt-br.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_pt.txt b/src/main/webapp/resources/dia_pt.txt
index 0f1b74b4..b0251e8e 100644
--- a/src/main/webapp/resources/dia_pt.txt
+++ b/src/main/webapp/resources/dia_pt.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_ro.txt b/src/main/webapp/resources/dia_ro.txt
index 01be95f0..12aa26bf 100644
--- a/src/main/webapp/resources/dia_ro.txt
+++ b/src/main/webapp/resources/dia_ro.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_ru.txt b/src/main/webapp/resources/dia_ru.txt
index c352ba96..ea4c37b7 100644
--- a/src/main/webapp/resources/dia_ru.txt
+++ b/src/main/webapp/resources/dia_ru.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_si.txt b/src/main/webapp/resources/dia_si.txt
index 25c8ecd2..5ebdea89 100644
--- a/src/main/webapp/resources/dia_si.txt
+++ b/src/main/webapp/resources/dia_si.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_sk.txt b/src/main/webapp/resources/dia_sk.txt
index aa15de52..b7123ef6 100644
--- a/src/main/webapp/resources/dia_sk.txt
+++ b/src/main/webapp/resources/dia_sk.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_sl.txt b/src/main/webapp/resources/dia_sl.txt
index a7518c0b..e37dc53a 100644
--- a/src/main/webapp/resources/dia_sl.txt
+++ b/src/main/webapp/resources/dia_sl.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_sr.txt b/src/main/webapp/resources/dia_sr.txt
index 31cc3c01..70fe2da2 100644
--- a/src/main/webapp/resources/dia_sr.txt
+++ b/src/main/webapp/resources/dia_sr.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_sv.txt b/src/main/webapp/resources/dia_sv.txt
index 66d4ade5..6d9b93e5 100644
--- a/src/main/webapp/resources/dia_sv.txt
+++ b/src/main/webapp/resources/dia_sv.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_sw.txt b/src/main/webapp/resources/dia_sw.txt
index 305a528b..ebd7a800 100644
--- a/src/main/webapp/resources/dia_sw.txt
+++ b/src/main/webapp/resources/dia_sw.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_ta.txt b/src/main/webapp/resources/dia_ta.txt
index da48896e..55622fdc 100644
--- a/src/main/webapp/resources/dia_ta.txt
+++ b/src/main/webapp/resources/dia_ta.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_te.txt b/src/main/webapp/resources/dia_te.txt
index 2f3a09fc..9a5af5ee 100644
--- a/src/main/webapp/resources/dia_te.txt
+++ b/src/main/webapp/resources/dia_te.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_th.txt b/src/main/webapp/resources/dia_th.txt
index 16a65b96..4e3dde2e 100644
--- a/src/main/webapp/resources/dia_th.txt
+++ b/src/main/webapp/resources/dia_th.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_tr.txt b/src/main/webapp/resources/dia_tr.txt
index 499afefd..dca566a8 100644
--- a/src/main/webapp/resources/dia_tr.txt
+++ b/src/main/webapp/resources/dia_tr.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_uk.txt b/src/main/webapp/resources/dia_uk.txt
index c6dce445..4715857b 100644
--- a/src/main/webapp/resources/dia_uk.txt
+++ b/src/main/webapp/resources/dia_uk.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_vi.txt b/src/main/webapp/resources/dia_vi.txt
index 8bca221a..42bfb09c 100644
--- a/src/main/webapp/resources/dia_vi.txt
+++ b/src/main/webapp/resources/dia_vi.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_zh-tw.txt b/src/main/webapp/resources/dia_zh-tw.txt
index 0dc89629..5849834f 100644
--- a/src/main/webapp/resources/dia_zh-tw.txt
+++ b/src/main/webapp/resources/dia_zh-tw.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/resources/dia_zh.txt b/src/main/webapp/resources/dia_zh.txt
index d9e86613..880615f7 100644
--- a/src/main/webapp/resources/dia_zh.txt
+++ b/src/main/webapp/resources/dia_zh.txt
@@ -1201,3 +1201,4 @@ autoBkp=Automatic Backup
confAIgnoreCollectErr=Ignore collecting current pages errors
drafts=Drafts
draftSaveInt=Draft save interval [sec] (0 to disable)
+pluginsDisabled=External plugins disabled.
diff --git a/src/main/webapp/service-worker.js b/src/main/webapp/service-worker.js
index ea1b3dc1..c7d2cdf6 100644
--- a/src/main/webapp/service-worker.js
+++ b/src/main/webapp/service-worker.js
@@ -1,2 +1,2 @@
-if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let i=Promise.resolve();return r[e]||(i=new Promise((async i=>{if("document"in self){const r=document.createElement("script");r.src=e,document.head.appendChild(r),r.onload=i}else importScripts(e),i()}))),i.then((()=>{if(!r[e])throw new Error(`Module ${e} didn’t register its module`);return r[e]}))},i=(i,r)=>{Promise.all(i.map(e)).then((e=>r(1===e.length?e[0]:e)))},r={require:Promise.resolve(i)};self.define=(i,a,c)=>{r[i]||(r[i]=Promise.resolve().then((()=>{let r={};const s={uri:location.origin+i.slice(1)};return Promise.all(a.map((i=>{switch(i){case"exports":return r;case"module":return s;default:return e(i)}}))).then((e=>{const i=c(...e);return r.default||(r.default=i),r}))})))}}define("./service-worker.js",["./workbox-7a2a8380"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"js/app.min.js",revision:"30ba5d28d6f121bcf2dc90fbc7e11f50"},{url:"js/extensions.min.js",revision:"45df373f567b94c1dce78ba61b591983"},{url:"js/stencils.min.js",revision:"4dbdbc7cee6fc00d1b8c6fe1022a0989"},{url:"js/shapes-14-6-5.min.js",revision:"f0e1d4c09054df2f3ea3793491e9fe08"},{url:"js/math-print.js",revision:"0611491c663261a732ff18224906184d"},{url:"index.html",revision:"8b5b1cf07fc74454cf354717e9d18534"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/fonts/ArchitectsDaughter-Regular.ttf",revision:"31c2153c0530e32553b31a49b3d70736"},{url:"styles/grapheditor.css",revision:"4f2c07c4585347249c95cd9158872fb2"},{url:"styles/atlas.css",revision:"e8152cda9233d3a3af017422993abfce"},{url:"styles/dark.css",revision:"3179f617dd02efd2cefeb8c06f965880"},{url:"js/dropbox/Dropbox-sdk.min.js",revision:"4b9842892aa37b156db0a8364b7a83b0"},{url:"js/onedrive/OneDrive.js",revision:"505e8280346666f7ee801bc59521fa67"},{url:"js/viewer-static.min.js",revision:"caefb76cb75b655be2e9d9c7ab0c00a3"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"c96db1790184cb35781f791e8d1dafd9"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"7bb9525fbd4504dd6855663605476f56"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"e00ad51fc16b87c362d6eaf930ab1fa5"},{url:"connect/jira/fullscreen-viewer.js",revision:"4e0775a6c156a803e777870623ac7c3e"},{url:"plugins/connectJira.js",revision:"4cefa13414e0d406550f3c073923080c"},{url:"plugins/cConf-comments.js",revision:"c787357209cff2986dcca567b599e2ef"},{url:"plugins/cConf-1-4-8.js",revision:"80d3c5ec6575b41d271eb6f7a6efe40b"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"fab9a95f19a57bb836e42f67a1c0078b"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"d089f12446d443ca01752a5115456fcc"},{url:"connect/confluence/viewer-init.js",revision:"2bd677096ebffd3aa5cab0c347851e3f"},{url:"connect/confluence/viewer.js",revision:"96cc3ed26b8ae45de1316e8a6684ee7e"},{url:"connect/confluence/viewer-1-4-42.html",revision:"4c58f3a1a4c99b1c4264593b6e05100b"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"7e198d0456c3075b4b305da188f09714"},{url:"connect/confluence/includeDiagram.html",revision:"5cefef0227d058cf716d1f51f2cf202f"},{url:"connect/confluence/macro-editor.js",revision:"412bc4b87e630b697a40f247c579d398"},{url:"math/MathJax.js",revision:"b2c103388b71bb3d11cbf9aa45fe9b68"},{url:"math/config/TeX-MML-AM_SVG-full.js",revision:"d5cb8ac04050983170ae4af145bc66ff"},{url:"math/jax/output/SVG/fonts/TeX/fontdata.js",revision:"495e5a410955d1b6178870e605890ede"},{url:"math/jax/element/mml/optable/BasicLatin.js",revision:"cac9b2e71382e62270baa55fab07cc13"},{url:"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js",revision:"e3e5e4d5924beed29f0844550b5c8f46"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js",revision:"0767cbad7275b53da128e7e5e1109f7c"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js",revision:"346302a5c5ee00e01c302148c56dbfe3"},{url:"resources/dia.txt",revision:"2d474154fe5893976198647ea505ac96"},{url:"resources/dia_am.txt",revision:"d767c66fc3d828f01790d5145a43f944"},{url:"resources/dia_ar.txt",revision:"326cf12a2eb475cfd18ca0aa8f454c27"},{url:"resources/dia_bg.txt",revision:"d935ebdf513f6d6c8b2488ca53edc48d"},{url:"resources/dia_bn.txt",revision:"9a066d6e0cb91240a5de909c09ad5f00"},{url:"resources/dia_bs.txt",revision:"834558d329362244813342c858ee0bb3"},{url:"resources/dia_ca.txt",revision:"7ea27e2cedf5a72c2d6acc3882f1107f"},{url:"resources/dia_cs.txt",revision:"73d43bc65e16f28055cc70302d8f5b23"},{url:"resources/dia_da.txt",revision:"9684d36e43a503a7923220702367e1bd"},{url:"resources/dia_de.txt",revision:"492ec6381d7a44fbc5da1adf674cdd3c"},{url:"resources/dia_el.txt",revision:"134ef55f7ede4d1ec364fc275c1dc560"},{url:"resources/dia_eo.txt",revision:"df44330c02c251217f68199902bb71b4"},{url:"resources/dia_es.txt",revision:"f4782a7a893fc58ac5138a94ee506ff1"},{url:"resources/dia_et.txt",revision:"ab5d6547dbef2866651d5854cd44ad54"},{url:"resources/dia_eu.txt",revision:"78de7c722cdc7079dbce68df02ab0ef9"},{url:"resources/dia_fa.txt",revision:"44639b4c2018027b39e998d527c444e3"},{url:"resources/dia_fi.txt",revision:"01b3890a6db98ef3a43485ba49ac7992"},{url:"resources/dia_fil.txt",revision:"53c542d5fea30e409eca8fe10048859b"},{url:"resources/dia_fr.txt",revision:"ff0e55a0b6321a7d0fbe35a4d37a9908"},{url:"resources/dia_gl.txt",revision:"fd421cae2d65a12f45743d029d1f2d1e"},{url:"resources/dia_gu.txt",revision:"54fffb1c7c7da120cb22f71d4fef3c49"},{url:"resources/dia_he.txt",revision:"9bb0be8fd970a9640d5b5f59afb22326"},{url:"resources/dia_hi.txt",revision:"353564fdcbdec14435e22cc10ea340a9"},{url:"resources/dia_hr.txt",revision:"cfefa39b02d5ff3a718c5ca688675a22"},{url:"resources/dia_hu.txt",revision:"b1e4b3e78529cbae7f9b41b95d8d015f"},{url:"resources/dia_id.txt",revision:"43353905b8e9180461055b1ed17dc53d"},{url:"resources/dia_it.txt",revision:"c55df5f591ed818e1ff6f60bf2eb0dcd"},{url:"resources/dia_ja.txt",revision:"185602e27366d4c4155de476bb5010ff"},{url:"resources/dia_kn.txt",revision:"7f4970fd5a35520e5871334bb8154c03"},{url:"resources/dia_ko.txt",revision:"6478a7552215d6c5b782cba0908ffa0e"},{url:"resources/dia_lt.txt",revision:"521711aef9fcf41ee833e5e669de1b6e"},{url:"resources/dia_lv.txt",revision:"70558cca334ed3d090ecda7423aad8df"},{url:"resources/dia_ml.txt",revision:"d827e98625dfa9d320d2a00fa5709f54"},{url:"resources/dia_mr.txt",revision:"3510ad556be2f84f7aefc617e49fa773"},{url:"resources/dia_ms.txt",revision:"fe33d70d3b621e0f511388d9ef3667aa"},{url:"resources/dia_my.txt",revision:"2d474154fe5893976198647ea505ac96"},{url:"resources/dia_nl.txt",revision:"ec08e8294289a952b8ec15ef9615b927"},{url:"resources/dia_no.txt",revision:"62c693c6ea9a58bc0dd4eec7b1b1ea7d"},{url:"resources/dia_pl.txt",revision:"db85c32f7458bbdb4dabd8ee04c5e6e5"},{url:"resources/dia_pt-br.txt",revision:"2cffd3b30b81113406236b29ec19fcf4"},{url:"resources/dia_pt.txt",revision:"faa525cfd933d9b28bab4ba9958d2a91"},{url:"resources/dia_ro.txt",revision:"4f0c51dc49be417530a88e264acc8ac7"},{url:"resources/dia_ru.txt",revision:"2454d71cf5eda2fca6da0a4ac02c0ce0"},{url:"resources/dia_si.txt",revision:"2d474154fe5893976198647ea505ac96"},{url:"resources/dia_sk.txt",revision:"a65bba3698e3cb60764146a1d6a1b494"},{url:"resources/dia_sl.txt",revision:"03e8bdd1584030ef4bd3e59311806bde"},{url:"resources/dia_sr.txt",revision:"7377e7c4b5f5e768bd4f9a32c40f0143"},{url:"resources/dia_sv.txt",revision:"3106d87ab7710b789ca481df9f9eaa20"},{url:"resources/dia_sw.txt",revision:"a4b2cdef952b5e6b5a1cb569ecb48347"},{url:"resources/dia_ta.txt",revision:"cfd99e1386d7a0310a1ba24a1bd39f26"},{url:"resources/dia_te.txt",revision:"f0ded6e2695a8715bbbfb9868a42be5e"},{url:"resources/dia_th.txt",revision:"991c7523fdab1db1590ecf71075f85de"},{url:"resources/dia_tr.txt",revision:"ebe2bdd67274dc832f2a1c06e0415c99"},{url:"resources/dia_uk.txt",revision:"352152d7c79d70c2d7451d10cb9db4d1"},{url:"resources/dia_vi.txt",revision:"077de6f062ffe2fdf09369c41490caf6"},{url:"resources/dia_zh-tw.txt",revision:"0c405f3473c213c97287b9706bdaf5e6"},{url:"resources/dia_zh.txt",revision:"1379897fd5f960954a075507b559b7e9"},{url:"favicon.ico",revision:"fab2d88b37c72d83607527573de45281"},{url:"images/manifest.json",revision:"c6236bde53ed79aaaec60a1aca8ee2ef"},{url:"images/logo.png",revision:"89630b64b911ebe0daa3dfe442087cfa"},{url:"images/drawlogo.svg",revision:"4bf4d14ebcf072d8bd4c5a1c89e88fc6"},{url:"images/drawlogo48.png",revision:"8b13428373aca67b895364d025f42417"},{url:"images/drawlogo-gray.svg",revision:"0aabacbc0873816e1e09e4736ae44c7d"},{url:"images/drawlogo-text-bottom.svg",revision:"f6c438823ab31f290940bd4feb8dd9c2"},{url:"images/default-user.jpg",revision:"2c399696a87c8921f12d2f9e1990cc6e"},{url:"images/logo-flat-small.png",revision:"4b178e59ff499d6dd1894fc498b59877"},{url:"images/apple-touch-icon.png",revision:"73da7989a23ce9a4be565ec65658a239"},{url:"images/favicon-16x16.png",revision:"1a79d5461a5d2bf21f6652e0ac20d6e5"},{url:"images/favicon-32x32.png",revision:"e3b92da2febe70bad5372f6f3474b034"},{url:"images/android-chrome-196x196.png",revision:"f8c045b2d7b1c719fda64edab04c415c"},{url:"images/android-chrome-512x512.png",revision:"959b5fac2453963ff6d60fb85e4b73fd"},{url:"images/delete.png",revision:"5f2350f2fd20f1a229637aed32ed8f29"},{url:"images/droptarget.png",revision:"bbf7f563fb6784de1ce96f329519b043"},{url:"images/help.png",revision:"9266c6c3915bd33c243d80037d37bf61"},{url:"images/download.png",revision:"35418dd7bd48d87502c71b578cc6c37f"},{url:"images/logo-flat.png",revision:"038070ab43aee6e54a791211859fc67b"},{url:"images/google-drive-logo.svg",revision:"5d9f2f5bbc7dcc252730a0072bb23059"},{url:"images/onedrive-logo.svg",revision:"3645b344ec0634c1290dd58d7dc87b97"},{url:"images/dropbox-logo.svg",revision:"e6be408c77cf9c82d41ac64fa854280a"},{url:"images/github-logo.svg",revision:"a1a999b69a275eac0cb918360ac05ae1"},{url:"images/gitlab-logo.svg",revision:"0faea8c818899e58533e153c44b10517"},{url:"images/trello-logo.svg",revision:"006fd0d7d70d7e95dc691674cb12e044"},{url:"images/osa_drive-harddisk.png",revision:"b954e1ae772087c5b4c6ae797e1f9649"},{url:"images/osa_database.png",revision:"c350d9d9b95f37b6cfe798b40ede5fb0"},{url:"images/google-drive-logo-white.svg",revision:"f329d8b1be7778515a85b93fc35d9f26"},{url:"images/dropbox-logo-white.svg",revision:"4ea8299ac3bc31a16f199ee3aec223bf"},{url:"images/onedrive-logo-white.svg",revision:"b3602fa0fc947009cff3f33a581cff4d"},{url:"images/github-logo-white.svg",revision:"537b1127b3ca0f95b45782d1304fb77a"},{url:"images/gitlab-logo-white.svg",revision:"5fede9ac2f394c716b8c23e3fddc3910"},{url:"images/trello-logo-white-orange.svg",revision:"e2a0a52ba3766682f138138d10a75eb5"},{url:"images/logo-confluence.png",revision:"ed1e55d44ae5eba8f999aba2c93e8331"},{url:"images/logo-jira.png",revision:"f8d460555a0d1f87cfd901e940666629"},{url:"images/clear.gif",revision:"db13c778e4382e0b55258d0f811d5d70"},{url:"images/spin.gif",revision:"487cbb40b9ced439aa1ad914e816d773"},{url:"images/checkmark.gif",revision:"ba764ce62f2bf952df5bbc2bb4d381c5"},{url:"images/hs.png",revision:"fefa1a03d92ebad25c88dca94a0b63db"},{url:"images/aui-wait.gif",revision:"5a474bcbd8d2f2826f03d10ea44bf60e"},{url:"mxgraph/css/common.css",revision:"b5b7280ec98671bb6c3847a36bc7ea12"},{url:"mxgraph/images/expanded.gif",revision:"2b67c2c035af1e9a5cc814f0d22074cf"},{url:"mxgraph/images/collapsed.gif",revision:"73cc826da002a3d740ca4ce6ec5c1f4a"},{url:"mxgraph/images/maximize.gif",revision:"5cd13d6925493ab51e876694cc1c2ec2"},{url:"mxgraph/images/minimize.gif",revision:"8957741b9b0f86af9438775f2aadbb54"},{url:"mxgraph/images/close.gif",revision:"8b84669812ac7382984fca35de8da48b"},{url:"mxgraph/images/resize.gif",revision:"a6477612b3567a34033f9cac6184eed3"},{url:"mxgraph/images/separator.gif",revision:"7819742ff106c97da7a801c2372bbbe5"},{url:"mxgraph/images/window.gif",revision:"fd9a21dd4181f98052a202a0a01f18ab"},{url:"mxgraph/images/window-title.gif",revision:"3fb1d6c43246cdf991a11dfe826dfe99"},{url:"mxgraph/images/button.gif",revision:"00759bdc3ad218fa739f584369541809"},{url:"mxgraph/images/point.gif",revision:"83a43717b284902442620f61bc4e9fa6"}],{ignoreURLParametersMatching:[/.*/]})}));
+if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let i=Promise.resolve();return r[e]||(i=new Promise((async i=>{if("document"in self){const r=document.createElement("script");r.src=e,document.head.appendChild(r),r.onload=i}else importScripts(e),i()}))),i.then((()=>{if(!r[e])throw new Error(`Module ${e} didn’t register its module`);return r[e]}))},i=(i,r)=>{Promise.all(i.map(e)).then((e=>r(1===e.length?e[0]:e)))},r={require:Promise.resolve(i)};self.define=(i,a,c)=>{r[i]||(r[i]=Promise.resolve().then((()=>{let r={};const s={uri:location.origin+i.slice(1)};return Promise.all(a.map((i=>{switch(i){case"exports":return r;case"module":return s;default:return e(i)}}))).then((e=>{const i=c(...e);return r.default||(r.default=i),r}))})))}}define("./service-worker.js",["./workbox-7a2a8380"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"js/app.min.js",revision:"a22878003727ad37959041603bce390a"},{url:"js/extensions.min.js",revision:"45df373f567b94c1dce78ba61b591983"},{url:"js/stencils.min.js",revision:"4dbdbc7cee6fc00d1b8c6fe1022a0989"},{url:"js/shapes-14-6-5.min.js",revision:"f0e1d4c09054df2f3ea3793491e9fe08"},{url:"js/math-print.js",revision:"0611491c663261a732ff18224906184d"},{url:"index.html",revision:"8b5b1cf07fc74454cf354717e9d18534"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/fonts/ArchitectsDaughter-Regular.ttf",revision:"31c2153c0530e32553b31a49b3d70736"},{url:"styles/grapheditor.css",revision:"4f2c07c4585347249c95cd9158872fb2"},{url:"styles/atlas.css",revision:"e8152cda9233d3a3af017422993abfce"},{url:"styles/dark.css",revision:"3179f617dd02efd2cefeb8c06f965880"},{url:"js/dropbox/Dropbox-sdk.min.js",revision:"4b9842892aa37b156db0a8364b7a83b0"},{url:"js/onedrive/OneDrive.js",revision:"505e8280346666f7ee801bc59521fa67"},{url:"js/viewer-static.min.js",revision:"fab38a6ff55cf8eafce4d6e0849c622e"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"c96db1790184cb35781f791e8d1dafd9"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"7bb9525fbd4504dd6855663605476f56"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"e00ad51fc16b87c362d6eaf930ab1fa5"},{url:"connect/jira/fullscreen-viewer.js",revision:"4e0775a6c156a803e777870623ac7c3e"},{url:"plugins/connectJira.js",revision:"4cefa13414e0d406550f3c073923080c"},{url:"plugins/cConf-comments.js",revision:"c787357209cff2986dcca567b599e2ef"},{url:"plugins/cConf-1-4-8.js",revision:"80d3c5ec6575b41d271eb6f7a6efe40b"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"fab9a95f19a57bb836e42f67a1c0078b"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"d089f12446d443ca01752a5115456fcc"},{url:"connect/confluence/viewer-init.js",revision:"2bd677096ebffd3aa5cab0c347851e3f"},{url:"connect/confluence/viewer.js",revision:"96cc3ed26b8ae45de1316e8a6684ee7e"},{url:"connect/confluence/viewer-1-4-42.html",revision:"4c58f3a1a4c99b1c4264593b6e05100b"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"7e198d0456c3075b4b305da188f09714"},{url:"connect/confluence/includeDiagram.html",revision:"5cefef0227d058cf716d1f51f2cf202f"},{url:"connect/confluence/macro-editor.js",revision:"412bc4b87e630b697a40f247c579d398"},{url:"math/MathJax.js",revision:"b2c103388b71bb3d11cbf9aa45fe9b68"},{url:"math/config/TeX-MML-AM_SVG-full.js",revision:"d5cb8ac04050983170ae4af145bc66ff"},{url:"math/jax/output/SVG/fonts/TeX/fontdata.js",revision:"495e5a410955d1b6178870e605890ede"},{url:"math/jax/element/mml/optable/BasicLatin.js",revision:"cac9b2e71382e62270baa55fab07cc13"},{url:"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js",revision:"e3e5e4d5924beed29f0844550b5c8f46"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js",revision:"0767cbad7275b53da128e7e5e1109f7c"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js",revision:"346302a5c5ee00e01c302148c56dbfe3"},{url:"resources/dia.txt",revision:"2956f21bac002468735a100038cb676c"},{url:"resources/dia_am.txt",revision:"53e607067f1bf082d45edb8f8c30ad41"},{url:"resources/dia_ar.txt",revision:"992bdb4618731d50779bdda355318ca8"},{url:"resources/dia_bg.txt",revision:"932af7b9ee4870f7d52af33a06090b5f"},{url:"resources/dia_bn.txt",revision:"c1642ee22863d7ee601556723cd724e0"},{url:"resources/dia_bs.txt",revision:"509ef42a090def18ff23310cddeba7a1"},{url:"resources/dia_ca.txt",revision:"148bd2ba9c231b19f2f6fd1d9d558373"},{url:"resources/dia_cs.txt",revision:"ff841958f2440fec8189b801076015a2"},{url:"resources/dia_da.txt",revision:"265e6805e8adf5cf4db47477bfacfdac"},{url:"resources/dia_de.txt",revision:"49a4f2a4face0c3de722465237c8418d"},{url:"resources/dia_el.txt",revision:"1340e09f3423c374113c77c1870e54ef"},{url:"resources/dia_eo.txt",revision:"7cf08f9a404fa22c294d505fc86facd0"},{url:"resources/dia_es.txt",revision:"86955530e14ff702e590f3740d104dc8"},{url:"resources/dia_et.txt",revision:"979178af5eb62fae543b0bf931680a9f"},{url:"resources/dia_eu.txt",revision:"9cfe5c260d288e4983fa7908ae54e47f"},{url:"resources/dia_fa.txt",revision:"e08d629ddf1700ac8ca32c3b9f88f4a6"},{url:"resources/dia_fi.txt",revision:"d6914775046d3ac05d906bdbaf623d68"},{url:"resources/dia_fil.txt",revision:"574e2eaf0e290c91b130d59cac596312"},{url:"resources/dia_fr.txt",revision:"dcdd70d54e512ba1384ec66eaecbdb28"},{url:"resources/dia_gl.txt",revision:"7015d14c37ca26ab7caa2287a6eaa2df"},{url:"resources/dia_gu.txt",revision:"38d005642da4000e9e3f790039ca0916"},{url:"resources/dia_he.txt",revision:"094779320bbe89974bf991f78ddb6aea"},{url:"resources/dia_hi.txt",revision:"1d59e10218733d8e8a9d34447b269129"},{url:"resources/dia_hr.txt",revision:"372e38797a55b025da019877659bf1dd"},{url:"resources/dia_hu.txt",revision:"a3384b975b9d32b1b161599201cbfeb4"},{url:"resources/dia_id.txt",revision:"2e805efa18b29798becf33836024f3ab"},{url:"resources/dia_it.txt",revision:"80fc0815aa5d1bf2fcf34071d18334e8"},{url:"resources/dia_ja.txt",revision:"9cabb887e0f3474269a5ee67d0bed22f"},{url:"resources/dia_kn.txt",revision:"de6fc20419970fc2bd140104945ed3a1"},{url:"resources/dia_ko.txt",revision:"a5a89ff13b234ed926252600effd7d1f"},{url:"resources/dia_lt.txt",revision:"612b77e39dcfc76dc27bc9af361542a0"},{url:"resources/dia_lv.txt",revision:"c41d7178a021760ffe150df30a23326c"},{url:"resources/dia_ml.txt",revision:"ae34ca265b1ee668f8ced0911436fb85"},{url:"resources/dia_mr.txt",revision:"4b49edeb9d201adb5cb4262f93e75f8c"},{url:"resources/dia_ms.txt",revision:"87e267b6126063cc07cb4aab2e3726d7"},{url:"resources/dia_my.txt",revision:"2956f21bac002468735a100038cb676c"},{url:"resources/dia_nl.txt",revision:"dc026fa06102da7dc7e1a3bcdcf745e5"},{url:"resources/dia_no.txt",revision:"e1c6f82893a4d13085c367d30d142bea"},{url:"resources/dia_pl.txt",revision:"19c06809138dadaa33e5afdb530ca503"},{url:"resources/dia_pt-br.txt",revision:"df58b42d81918fe5fe923793533388ea"},{url:"resources/dia_pt.txt",revision:"c9688d96c887b5b962cfc844ecd7f0fe"},{url:"resources/dia_ro.txt",revision:"33376bcb7f79553c020d649996c099b6"},{url:"resources/dia_ru.txt",revision:"f0987890664b06a813a941b019c5a01f"},{url:"resources/dia_si.txt",revision:"2956f21bac002468735a100038cb676c"},{url:"resources/dia_sk.txt",revision:"970f2922db33c2a5b36d9c1f828a52a8"},{url:"resources/dia_sl.txt",revision:"df2eafd678af33891f15a0bee7df20d2"},{url:"resources/dia_sr.txt",revision:"1a98e9d86b207b629c04e939cc3a5928"},{url:"resources/dia_sv.txt",revision:"408f84debcea459b390adf5e0485746b"},{url:"resources/dia_sw.txt",revision:"5844365571c556db1bdc02924ab889b3"},{url:"resources/dia_ta.txt",revision:"c4c82fc78958023800c463ef1a9969ff"},{url:"resources/dia_te.txt",revision:"1f8e4ed9acb705d8be85f9156e622964"},{url:"resources/dia_th.txt",revision:"737b6af0751c5626785439dcd4471707"},{url:"resources/dia_tr.txt",revision:"4e5e5d05c301b3228cc5715502ff489d"},{url:"resources/dia_uk.txt",revision:"7b866d10e50a838a1c23ab4ae3b34967"},{url:"resources/dia_vi.txt",revision:"cc272ead4afb30e17ed43d76f21cf2b5"},{url:"resources/dia_zh-tw.txt",revision:"b165d55938f02caefc7e1f4926cdf867"},{url:"resources/dia_zh.txt",revision:"4e03583f54880244cf56bf98522a293b"},{url:"favicon.ico",revision:"fab2d88b37c72d83607527573de45281"},{url:"images/manifest.json",revision:"c6236bde53ed79aaaec60a1aca8ee2ef"},{url:"images/logo.png",revision:"89630b64b911ebe0daa3dfe442087cfa"},{url:"images/drawlogo.svg",revision:"4bf4d14ebcf072d8bd4c5a1c89e88fc6"},{url:"images/drawlogo48.png",revision:"8b13428373aca67b895364d025f42417"},{url:"images/drawlogo-gray.svg",revision:"0aabacbc0873816e1e09e4736ae44c7d"},{url:"images/drawlogo-text-bottom.svg",revision:"f6c438823ab31f290940bd4feb8dd9c2"},{url:"images/default-user.jpg",revision:"2c399696a87c8921f12d2f9e1990cc6e"},{url:"images/logo-flat-small.png",revision:"4b178e59ff499d6dd1894fc498b59877"},{url:"images/apple-touch-icon.png",revision:"73da7989a23ce9a4be565ec65658a239"},{url:"images/favicon-16x16.png",revision:"1a79d5461a5d2bf21f6652e0ac20d6e5"},{url:"images/favicon-32x32.png",revision:"e3b92da2febe70bad5372f6f3474b034"},{url:"images/android-chrome-196x196.png",revision:"f8c045b2d7b1c719fda64edab04c415c"},{url:"images/android-chrome-512x512.png",revision:"959b5fac2453963ff6d60fb85e4b73fd"},{url:"images/delete.png",revision:"5f2350f2fd20f1a229637aed32ed8f29"},{url:"images/droptarget.png",revision:"bbf7f563fb6784de1ce96f329519b043"},{url:"images/help.png",revision:"9266c6c3915bd33c243d80037d37bf61"},{url:"images/download.png",revision:"35418dd7bd48d87502c71b578cc6c37f"},{url:"images/logo-flat.png",revision:"038070ab43aee6e54a791211859fc67b"},{url:"images/google-drive-logo.svg",revision:"5d9f2f5bbc7dcc252730a0072bb23059"},{url:"images/onedrive-logo.svg",revision:"3645b344ec0634c1290dd58d7dc87b97"},{url:"images/dropbox-logo.svg",revision:"e6be408c77cf9c82d41ac64fa854280a"},{url:"images/github-logo.svg",revision:"a1a999b69a275eac0cb918360ac05ae1"},{url:"images/gitlab-logo.svg",revision:"0faea8c818899e58533e153c44b10517"},{url:"images/trello-logo.svg",revision:"006fd0d7d70d7e95dc691674cb12e044"},{url:"images/osa_drive-harddisk.png",revision:"b954e1ae772087c5b4c6ae797e1f9649"},{url:"images/osa_database.png",revision:"c350d9d9b95f37b6cfe798b40ede5fb0"},{url:"images/google-drive-logo-white.svg",revision:"f329d8b1be7778515a85b93fc35d9f26"},{url:"images/dropbox-logo-white.svg",revision:"4ea8299ac3bc31a16f199ee3aec223bf"},{url:"images/onedrive-logo-white.svg",revision:"b3602fa0fc947009cff3f33a581cff4d"},{url:"images/github-logo-white.svg",revision:"537b1127b3ca0f95b45782d1304fb77a"},{url:"images/gitlab-logo-white.svg",revision:"5fede9ac2f394c716b8c23e3fddc3910"},{url:"images/trello-logo-white-orange.svg",revision:"e2a0a52ba3766682f138138d10a75eb5"},{url:"images/logo-confluence.png",revision:"ed1e55d44ae5eba8f999aba2c93e8331"},{url:"images/logo-jira.png",revision:"f8d460555a0d1f87cfd901e940666629"},{url:"images/clear.gif",revision:"db13c778e4382e0b55258d0f811d5d70"},{url:"images/spin.gif",revision:"487cbb40b9ced439aa1ad914e816d773"},{url:"images/checkmark.gif",revision:"ba764ce62f2bf952df5bbc2bb4d381c5"},{url:"images/hs.png",revision:"fefa1a03d92ebad25c88dca94a0b63db"},{url:"images/aui-wait.gif",revision:"5a474bcbd8d2f2826f03d10ea44bf60e"},{url:"mxgraph/css/common.css",revision:"b5b7280ec98671bb6c3847a36bc7ea12"},{url:"mxgraph/images/expanded.gif",revision:"2b67c2c035af1e9a5cc814f0d22074cf"},{url:"mxgraph/images/collapsed.gif",revision:"73cc826da002a3d740ca4ce6ec5c1f4a"},{url:"mxgraph/images/maximize.gif",revision:"5cd13d6925493ab51e876694cc1c2ec2"},{url:"mxgraph/images/minimize.gif",revision:"8957741b9b0f86af9438775f2aadbb54"},{url:"mxgraph/images/close.gif",revision:"8b84669812ac7382984fca35de8da48b"},{url:"mxgraph/images/resize.gif",revision:"a6477612b3567a34033f9cac6184eed3"},{url:"mxgraph/images/separator.gif",revision:"7819742ff106c97da7a801c2372bbbe5"},{url:"mxgraph/images/window.gif",revision:"fd9a21dd4181f98052a202a0a01f18ab"},{url:"mxgraph/images/window-title.gif",revision:"3fb1d6c43246cdf991a11dfe826dfe99"},{url:"mxgraph/images/button.gif",revision:"00759bdc3ad218fa739f584369541809"},{url:"mxgraph/images/point.gif",revision:"83a43717b284902442620f61bc4e9fa6"}],{ignoreURLParametersMatching:[/.*/]})}));
//# sourceMappingURL=service-worker.js.map
diff --git a/src/main/webapp/service-worker.js.map b/src/main/webapp/service-worker.js.map
index 01b1ca01..0330b205 100644
--- a/src/main/webapp/service-worker.js.map
+++ b/src/main/webapp/service-worker.js.map
@@ -1 +1 @@
-{"version":3,"file":"service-worker.js","sources":["../../../../../../../tmp/ba621df6fbb6c81783c71f20f3dd5b00/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.19.3/x64/lib/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"js/app.min.js\",\n \"revision\": \"30ba5d28d6f121bcf2dc90fbc7e11f50\"\n },\n {\n \"url\": \"js/extensions.min.js\",\n \"revision\": \"45df373f567b94c1dce78ba61b591983\"\n },\n {\n \"url\": \"js/stencils.min.js\",\n \"revision\": \"4dbdbc7cee6fc00d1b8c6fe1022a0989\"\n },\n {\n \"url\": \"js/shapes-14-6-5.min.js\",\n \"revision\": \"f0e1d4c09054df2f3ea3793491e9fe08\"\n },\n {\n \"url\": \"js/math-print.js\",\n \"revision\": \"0611491c663261a732ff18224906184d\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"8b5b1cf07fc74454cf354717e9d18534\"\n },\n {\n \"url\": \"open.html\",\n \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n },\n {\n \"url\": \"styles/fonts/ArchitectsDaughter-Regular.ttf\",\n \"revision\": \"31c2153c0530e32553b31a49b3d70736\"\n },\n {\n \"url\": \"styles/grapheditor.css\",\n \"revision\": \"4f2c07c4585347249c95cd9158872fb2\"\n },\n {\n \"url\": \"styles/atlas.css\",\n \"revision\": \"e8152cda9233d3a3af017422993abfce\"\n },\n {\n \"url\": \"styles/dark.css\",\n \"revision\": \"3179f617dd02efd2cefeb8c06f965880\"\n },\n {\n \"url\": \"js/dropbox/Dropbox-sdk.min.js\",\n \"revision\": \"4b9842892aa37b156db0a8364b7a83b0\"\n },\n {\n \"url\": \"js/onedrive/OneDrive.js\",\n \"revision\": \"505e8280346666f7ee801bc59521fa67\"\n },\n {\n \"url\": \"js/viewer-static.min.js\",\n \"revision\": \"caefb76cb75b655be2e9d9c7ab0c00a3\"\n },\n {\n \"url\": \"connect/jira/editor-1-3-3.html\",\n \"revision\": \"a2b0e7267a08a838f3cc404eba831ec0\"\n },\n {\n \"url\": \"connect/jira/viewerPanel-1-3-12.html\",\n \"revision\": \"c96db1790184cb35781f791e8d1dafd9\"\n },\n {\n \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n },\n {\n \"url\": \"connect/jira/viewerPanel.js\",\n \"revision\": \"7bb9525fbd4504dd6855663605476f56\"\n },\n {\n \"url\": \"connect/jira/spinner.gif\",\n \"revision\": \"7d857ab9d86123e93d74d48e958fe743\"\n },\n {\n \"url\": \"connect/jira/editor.js\",\n \"revision\": \"01caa325f3ad3f6565e0b4228907fb63\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer-init.js\",\n \"revision\": \"e00ad51fc16b87c362d6eaf930ab1fa5\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer.js\",\n \"revision\": \"4e0775a6c156a803e777870623ac7c3e\"\n },\n {\n \"url\": \"plugins/connectJira.js\",\n \"revision\": \"4cefa13414e0d406550f3c073923080c\"\n },\n {\n \"url\": \"plugins/cConf-comments.js\",\n \"revision\": \"c787357209cff2986dcca567b599e2ef\"\n },\n {\n \"url\": \"plugins/cConf-1-4-8.js\",\n \"revision\": \"80d3c5ec6575b41d271eb6f7a6efe40b\"\n },\n {\n \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n \"revision\": \"fab9a95f19a57bb836e42f67a1c0078b\"\n },\n {\n \"url\": \"connect/new_common/cac.js\",\n \"revision\": \"3d8c436c566db645fb1e6e6ba9f69bbc\"\n },\n {\n \"url\": \"connect/gdrive_common/gac.js\",\n \"revision\": \"38f1df3ecc4d78290493f47e62202138\"\n },\n {\n \"url\": \"connect/onedrive_common/ac.js\",\n \"revision\": \"d089f12446d443ca01752a5115456fcc\"\n },\n {\n \"url\": \"connect/confluence/viewer-init.js\",\n \"revision\": \"2bd677096ebffd3aa5cab0c347851e3f\"\n },\n {\n \"url\": \"connect/confluence/viewer.js\",\n \"revision\": \"96cc3ed26b8ae45de1316e8a6684ee7e\"\n },\n {\n \"url\": \"connect/confluence/viewer-1-4-42.html\",\n \"revision\": \"4c58f3a1a4c99b1c4264593b6e05100b\"\n },\n {\n \"url\": \"connect/confluence/macroEditor-1-4-8.html\",\n \"revision\": \"8cd74a2fb60bf2e3e86026d66107cf11\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram-1-4-8.js\",\n \"revision\": \"7e198d0456c3075b4b305da188f09714\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram.html\",\n \"revision\": \"5cefef0227d058cf716d1f51f2cf202f\"\n },\n {\n \"url\": \"connect/confluence/macro-editor.js\",\n \"revision\": \"412bc4b87e630b697a40f247c579d398\"\n },\n {\n \"url\": \"math/MathJax.js\",\n \"revision\": \"b2c103388b71bb3d11cbf9aa45fe9b68\"\n },\n {\n \"url\": \"math/config/TeX-MML-AM_SVG-full.js\",\n \"revision\": \"d5cb8ac04050983170ae4af145bc66ff\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/fontdata.js\",\n \"revision\": \"495e5a410955d1b6178870e605890ede\"\n },\n {\n \"url\": \"math/jax/element/mml/optable/BasicLatin.js\",\n \"revision\": \"cac9b2e71382e62270baa55fab07cc13\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js\",\n \"revision\": \"e3e5e4d5924beed29f0844550b5c8f46\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js\",\n \"revision\": \"0767cbad7275b53da128e7e5e1109f7c\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js\",\n \"revision\": \"346302a5c5ee00e01c302148c56dbfe3\"\n },\n {\n \"url\": \"resources/dia.txt\",\n \"revision\": \"2d474154fe5893976198647ea505ac96\"\n },\n {\n \"url\": \"resources/dia_am.txt\",\n \"revision\": \"d767c66fc3d828f01790d5145a43f944\"\n },\n {\n \"url\": \"resources/dia_ar.txt\",\n \"revision\": \"326cf12a2eb475cfd18ca0aa8f454c27\"\n },\n {\n \"url\": \"resources/dia_bg.txt\",\n \"revision\": \"d935ebdf513f6d6c8b2488ca53edc48d\"\n },\n {\n \"url\": \"resources/dia_bn.txt\",\n \"revision\": \"9a066d6e0cb91240a5de909c09ad5f00\"\n },\n {\n \"url\": \"resources/dia_bs.txt\",\n \"revision\": \"834558d329362244813342c858ee0bb3\"\n },\n {\n \"url\": \"resources/dia_ca.txt\",\n \"revision\": \"7ea27e2cedf5a72c2d6acc3882f1107f\"\n },\n {\n \"url\": \"resources/dia_cs.txt\",\n \"revision\": \"73d43bc65e16f28055cc70302d8f5b23\"\n },\n {\n \"url\": \"resources/dia_da.txt\",\n \"revision\": \"9684d36e43a503a7923220702367e1bd\"\n },\n {\n \"url\": \"resources/dia_de.txt\",\n \"revision\": \"492ec6381d7a44fbc5da1adf674cdd3c\"\n },\n {\n \"url\": \"resources/dia_el.txt\",\n \"revision\": \"134ef55f7ede4d1ec364fc275c1dc560\"\n },\n {\n \"url\": \"resources/dia_eo.txt\",\n \"revision\": \"df44330c02c251217f68199902bb71b4\"\n },\n {\n \"url\": \"resources/dia_es.txt\",\n \"revision\": \"f4782a7a893fc58ac5138a94ee506ff1\"\n },\n {\n \"url\": \"resources/dia_et.txt\",\n \"revision\": \"ab5d6547dbef2866651d5854cd44ad54\"\n },\n {\n \"url\": \"resources/dia_eu.txt\",\n \"revision\": \"78de7c722cdc7079dbce68df02ab0ef9\"\n },\n {\n \"url\": \"resources/dia_fa.txt\",\n \"revision\": \"44639b4c2018027b39e998d527c444e3\"\n },\n {\n \"url\": \"resources/dia_fi.txt\",\n \"revision\": \"01b3890a6db98ef3a43485ba49ac7992\"\n },\n {\n \"url\": \"resources/dia_fil.txt\",\n \"revision\": \"53c542d5fea30e409eca8fe10048859b\"\n },\n {\n \"url\": \"resources/dia_fr.txt\",\n \"revision\": \"ff0e55a0b6321a7d0fbe35a4d37a9908\"\n },\n {\n \"url\": \"resources/dia_gl.txt\",\n \"revision\": \"fd421cae2d65a12f45743d029d1f2d1e\"\n },\n {\n \"url\": \"resources/dia_gu.txt\",\n \"revision\": \"54fffb1c7c7da120cb22f71d4fef3c49\"\n },\n {\n \"url\": \"resources/dia_he.txt\",\n \"revision\": \"9bb0be8fd970a9640d5b5f59afb22326\"\n },\n {\n \"url\": \"resources/dia_hi.txt\",\n \"revision\": \"353564fdcbdec14435e22cc10ea340a9\"\n },\n {\n \"url\": \"resources/dia_hr.txt\",\n \"revision\": \"cfefa39b02d5ff3a718c5ca688675a22\"\n },\n {\n \"url\": \"resources/dia_hu.txt\",\n \"revision\": \"b1e4b3e78529cbae7f9b41b95d8d015f\"\n },\n {\n \"url\": \"resources/dia_id.txt\",\n \"revision\": \"43353905b8e9180461055b1ed17dc53d\"\n },\n {\n \"url\": \"resources/dia_it.txt\",\n \"revision\": \"c55df5f591ed818e1ff6f60bf2eb0dcd\"\n },\n {\n \"url\": \"resources/dia_ja.txt\",\n \"revision\": \"185602e27366d4c4155de476bb5010ff\"\n },\n {\n \"url\": \"resources/dia_kn.txt\",\n \"revision\": \"7f4970fd5a35520e5871334bb8154c03\"\n },\n {\n \"url\": \"resources/dia_ko.txt\",\n \"revision\": \"6478a7552215d6c5b782cba0908ffa0e\"\n },\n {\n \"url\": \"resources/dia_lt.txt\",\n \"revision\": \"521711aef9fcf41ee833e5e669de1b6e\"\n },\n {\n \"url\": \"resources/dia_lv.txt\",\n \"revision\": \"70558cca334ed3d090ecda7423aad8df\"\n },\n {\n \"url\": \"resources/dia_ml.txt\",\n \"revision\": \"d827e98625dfa9d320d2a00fa5709f54\"\n },\n {\n \"url\": \"resources/dia_mr.txt\",\n \"revision\": \"3510ad556be2f84f7aefc617e49fa773\"\n },\n {\n \"url\": \"resources/dia_ms.txt\",\n \"revision\": \"fe33d70d3b621e0f511388d9ef3667aa\"\n },\n {\n \"url\": \"resources/dia_my.txt\",\n \"revision\": \"2d474154fe5893976198647ea505ac96\"\n },\n {\n \"url\": \"resources/dia_nl.txt\",\n \"revision\": \"ec08e8294289a952b8ec15ef9615b927\"\n },\n {\n \"url\": \"resources/dia_no.txt\",\n \"revision\": \"62c693c6ea9a58bc0dd4eec7b1b1ea7d\"\n },\n {\n \"url\": \"resources/dia_pl.txt\",\n \"revision\": \"db85c32f7458bbdb4dabd8ee04c5e6e5\"\n },\n {\n \"url\": \"resources/dia_pt-br.txt\",\n \"revision\": \"2cffd3b30b81113406236b29ec19fcf4\"\n },\n {\n \"url\": \"resources/dia_pt.txt\",\n \"revision\": \"faa525cfd933d9b28bab4ba9958d2a91\"\n },\n {\n \"url\": \"resources/dia_ro.txt\",\n \"revision\": \"4f0c51dc49be417530a88e264acc8ac7\"\n },\n {\n \"url\": \"resources/dia_ru.txt\",\n \"revision\": \"2454d71cf5eda2fca6da0a4ac02c0ce0\"\n },\n {\n \"url\": \"resources/dia_si.txt\",\n \"revision\": \"2d474154fe5893976198647ea505ac96\"\n },\n {\n \"url\": \"resources/dia_sk.txt\",\n \"revision\": \"a65bba3698e3cb60764146a1d6a1b494\"\n },\n {\n \"url\": \"resources/dia_sl.txt\",\n \"revision\": \"03e8bdd1584030ef4bd3e59311806bde\"\n },\n {\n \"url\": \"resources/dia_sr.txt\",\n \"revision\": \"7377e7c4b5f5e768bd4f9a32c40f0143\"\n },\n {\n \"url\": \"resources/dia_sv.txt\",\n \"revision\": \"3106d87ab7710b789ca481df9f9eaa20\"\n },\n {\n \"url\": \"resources/dia_sw.txt\",\n \"revision\": \"a4b2cdef952b5e6b5a1cb569ecb48347\"\n },\n {\n \"url\": \"resources/dia_ta.txt\",\n \"revision\": \"cfd99e1386d7a0310a1ba24a1bd39f26\"\n },\n {\n \"url\": \"resources/dia_te.txt\",\n \"revision\": \"f0ded6e2695a8715bbbfb9868a42be5e\"\n },\n {\n \"url\": \"resources/dia_th.txt\",\n \"revision\": \"991c7523fdab1db1590ecf71075f85de\"\n },\n {\n \"url\": \"resources/dia_tr.txt\",\n \"revision\": \"ebe2bdd67274dc832f2a1c06e0415c99\"\n },\n {\n \"url\": \"resources/dia_uk.txt\",\n \"revision\": \"352152d7c79d70c2d7451d10cb9db4d1\"\n },\n {\n \"url\": \"resources/dia_vi.txt\",\n \"revision\": \"077de6f062ffe2fdf09369c41490caf6\"\n },\n {\n \"url\": \"resources/dia_zh-tw.txt\",\n \"revision\": \"0c405f3473c213c97287b9706bdaf5e6\"\n },\n {\n \"url\": \"resources/dia_zh.txt\",\n \"revision\": \"1379897fd5f960954a075507b559b7e9\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"fab2d88b37c72d83607527573de45281\"\n },\n {\n \"url\": \"images/manifest.json\",\n \"revision\": \"c6236bde53ed79aaaec60a1aca8ee2ef\"\n },\n {\n \"url\": \"images/logo.png\",\n \"revision\": \"89630b64b911ebe0daa3dfe442087cfa\"\n },\n {\n \"url\": \"images/drawlogo.svg\",\n \"revision\": \"4bf4d14ebcf072d8bd4c5a1c89e88fc6\"\n },\n {\n \"url\": \"images/drawlogo48.png\",\n \"revision\": \"8b13428373aca67b895364d025f42417\"\n },\n {\n \"url\": \"images/drawlogo-gray.svg\",\n \"revision\": \"0aabacbc0873816e1e09e4736ae44c7d\"\n },\n {\n \"url\": \"images/drawlogo-text-bottom.svg\",\n \"revision\": \"f6c438823ab31f290940bd4feb8dd9c2\"\n },\n {\n \"url\": \"images/default-user.jpg\",\n \"revision\": \"2c399696a87c8921f12d2f9e1990cc6e\"\n },\n {\n \"url\": \"images/logo-flat-small.png\",\n \"revision\": \"4b178e59ff499d6dd1894fc498b59877\"\n },\n {\n \"url\": \"images/apple-touch-icon.png\",\n \"revision\": \"73da7989a23ce9a4be565ec65658a239\"\n },\n {\n \"url\": \"images/favicon-16x16.png\",\n \"revision\": \"1a79d5461a5d2bf21f6652e0ac20d6e5\"\n },\n {\n \"url\": \"images/favicon-32x32.png\",\n \"revision\": \"e3b92da2febe70bad5372f6f3474b034\"\n },\n {\n \"url\": \"images/android-chrome-196x196.png\",\n \"revision\": \"f8c045b2d7b1c719fda64edab04c415c\"\n },\n {\n \"url\": \"images/android-chrome-512x512.png\",\n \"revision\": \"959b5fac2453963ff6d60fb85e4b73fd\"\n },\n {\n \"url\": \"images/delete.png\",\n \"revision\": \"5f2350f2fd20f1a229637aed32ed8f29\"\n },\n {\n \"url\": \"images/droptarget.png\",\n \"revision\": \"bbf7f563fb6784de1ce96f329519b043\"\n },\n {\n \"url\": \"images/help.png\",\n \"revision\": \"9266c6c3915bd33c243d80037d37bf61\"\n },\n {\n \"url\": \"images/download.png\",\n \"revision\": \"35418dd7bd48d87502c71b578cc6c37f\"\n },\n {\n \"url\": \"images/logo-flat.png\",\n \"revision\": \"038070ab43aee6e54a791211859fc67b\"\n },\n {\n \"url\": \"images/google-drive-logo.svg\",\n \"revision\": \"5d9f2f5bbc7dcc252730a0072bb23059\"\n },\n {\n \"url\": \"images/onedrive-logo.svg\",\n \"revision\": \"3645b344ec0634c1290dd58d7dc87b97\"\n },\n {\n \"url\": \"images/dropbox-logo.svg\",\n \"revision\": \"e6be408c77cf9c82d41ac64fa854280a\"\n },\n {\n \"url\": \"images/github-logo.svg\",\n \"revision\": \"a1a999b69a275eac0cb918360ac05ae1\"\n },\n {\n \"url\": \"images/gitlab-logo.svg\",\n \"revision\": \"0faea8c818899e58533e153c44b10517\"\n },\n {\n \"url\": \"images/trello-logo.svg\",\n \"revision\": \"006fd0d7d70d7e95dc691674cb12e044\"\n },\n {\n \"url\": \"images/osa_drive-harddisk.png\",\n \"revision\": \"b954e1ae772087c5b4c6ae797e1f9649\"\n },\n {\n \"url\": \"images/osa_database.png\",\n \"revision\": \"c350d9d9b95f37b6cfe798b40ede5fb0\"\n },\n {\n \"url\": \"images/google-drive-logo-white.svg\",\n \"revision\": \"f329d8b1be7778515a85b93fc35d9f26\"\n },\n {\n \"url\": \"images/dropbox-logo-white.svg\",\n \"revision\": \"4ea8299ac3bc31a16f199ee3aec223bf\"\n },\n {\n \"url\": \"images/onedrive-logo-white.svg\",\n \"revision\": \"b3602fa0fc947009cff3f33a581cff4d\"\n },\n {\n \"url\": \"images/github-logo-white.svg\",\n \"revision\": \"537b1127b3ca0f95b45782d1304fb77a\"\n },\n {\n \"url\": \"images/gitlab-logo-white.svg\",\n \"revision\": \"5fede9ac2f394c716b8c23e3fddc3910\"\n },\n {\n \"url\": \"images/trello-logo-white-orange.svg\",\n \"revision\": \"e2a0a52ba3766682f138138d10a75eb5\"\n },\n {\n \"url\": \"images/logo-confluence.png\",\n \"revision\": \"ed1e55d44ae5eba8f999aba2c93e8331\"\n },\n {\n \"url\": \"images/logo-jira.png\",\n \"revision\": \"f8d460555a0d1f87cfd901e940666629\"\n },\n {\n \"url\": \"images/clear.gif\",\n \"revision\": \"db13c778e4382e0b55258d0f811d5d70\"\n },\n {\n \"url\": \"images/spin.gif\",\n \"revision\": \"487cbb40b9ced439aa1ad914e816d773\"\n },\n {\n \"url\": \"images/checkmark.gif\",\n \"revision\": \"ba764ce62f2bf952df5bbc2bb4d381c5\"\n },\n {\n \"url\": \"images/hs.png\",\n \"revision\": \"fefa1a03d92ebad25c88dca94a0b63db\"\n },\n {\n \"url\": \"images/aui-wait.gif\",\n \"revision\": \"5a474bcbd8d2f2826f03d10ea44bf60e\"\n },\n {\n \"url\": \"mxgraph/css/common.css\",\n \"revision\": \"b5b7280ec98671bb6c3847a36bc7ea12\"\n },\n {\n \"url\": \"mxgraph/images/expanded.gif\",\n \"revision\": \"2b67c2c035af1e9a5cc814f0d22074cf\"\n },\n {\n \"url\": \"mxgraph/images/collapsed.gif\",\n \"revision\": \"73cc826da002a3d740ca4ce6ec5c1f4a\"\n },\n {\n \"url\": \"mxgraph/images/maximize.gif\",\n \"revision\": \"5cd13d6925493ab51e876694cc1c2ec2\"\n },\n {\n \"url\": \"mxgraph/images/minimize.gif\",\n \"revision\": \"8957741b9b0f86af9438775f2aadbb54\"\n },\n {\n \"url\": \"mxgraph/images/close.gif\",\n \"revision\": \"8b84669812ac7382984fca35de8da48b\"\n },\n {\n \"url\": \"mxgraph/images/resize.gif\",\n \"revision\": \"a6477612b3567a34033f9cac6184eed3\"\n },\n {\n \"url\": \"mxgraph/images/separator.gif\",\n \"revision\": \"7819742ff106c97da7a801c2372bbbe5\"\n },\n {\n \"url\": \"mxgraph/images/window.gif\",\n \"revision\": \"fd9a21dd4181f98052a202a0a01f18ab\"\n },\n {\n \"url\": \"mxgraph/images/window-title.gif\",\n \"revision\": \"3fb1d6c43246cdf991a11dfe826dfe99\"\n },\n {\n \"url\": \"mxgraph/images/button.gif\",\n \"revision\": \"00759bdc3ad218fa739f584369541809\"\n },\n {\n \"url\": \"mxgraph/images/point.gif\",\n \"revision\": \"83a43717b284902442620f61bc4e9fa6\"\n }\n], {\n \"ignoreURLParametersMatching\": [/.*/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,iBAYTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,YACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,qCAEb,CACDC,4BAA+B,CAAC"} \ No newline at end of file
+{"version":3,"file":"service-worker.js","sources":["../../../../../../../tmp/db9950a0c3fa012e5a2f1b27717416ca/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.19.3/x64/lib/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"js/app.min.js\",\n \"revision\": \"a22878003727ad37959041603bce390a\"\n },\n {\n \"url\": \"js/extensions.min.js\",\n \"revision\": \"45df373f567b94c1dce78ba61b591983\"\n },\n {\n \"url\": \"js/stencils.min.js\",\n \"revision\": \"4dbdbc7cee6fc00d1b8c6fe1022a0989\"\n },\n {\n \"url\": \"js/shapes-14-6-5.min.js\",\n \"revision\": \"f0e1d4c09054df2f3ea3793491e9fe08\"\n },\n {\n \"url\": \"js/math-print.js\",\n \"revision\": \"0611491c663261a732ff18224906184d\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"8b5b1cf07fc74454cf354717e9d18534\"\n },\n {\n \"url\": \"open.html\",\n \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n },\n {\n \"url\": \"styles/fonts/ArchitectsDaughter-Regular.ttf\",\n \"revision\": \"31c2153c0530e32553b31a49b3d70736\"\n },\n {\n \"url\": \"styles/grapheditor.css\",\n \"revision\": \"4f2c07c4585347249c95cd9158872fb2\"\n },\n {\n \"url\": \"styles/atlas.css\",\n \"revision\": \"e8152cda9233d3a3af017422993abfce\"\n },\n {\n \"url\": \"styles/dark.css\",\n \"revision\": \"3179f617dd02efd2cefeb8c06f965880\"\n },\n {\n \"url\": \"js/dropbox/Dropbox-sdk.min.js\",\n \"revision\": \"4b9842892aa37b156db0a8364b7a83b0\"\n },\n {\n \"url\": \"js/onedrive/OneDrive.js\",\n \"revision\": \"505e8280346666f7ee801bc59521fa67\"\n },\n {\n \"url\": \"js/viewer-static.min.js\",\n \"revision\": \"fab38a6ff55cf8eafce4d6e0849c622e\"\n },\n {\n \"url\": \"connect/jira/editor-1-3-3.html\",\n \"revision\": \"a2b0e7267a08a838f3cc404eba831ec0\"\n },\n {\n \"url\": \"connect/jira/viewerPanel-1-3-12.html\",\n \"revision\": \"c96db1790184cb35781f791e8d1dafd9\"\n },\n {\n \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n },\n {\n \"url\": \"connect/jira/viewerPanel.js\",\n \"revision\": \"7bb9525fbd4504dd6855663605476f56\"\n },\n {\n \"url\": \"connect/jira/spinner.gif\",\n \"revision\": \"7d857ab9d86123e93d74d48e958fe743\"\n },\n {\n \"url\": \"connect/jira/editor.js\",\n \"revision\": \"01caa325f3ad3f6565e0b4228907fb63\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer-init.js\",\n \"revision\": \"e00ad51fc16b87c362d6eaf930ab1fa5\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer.js\",\n \"revision\": \"4e0775a6c156a803e777870623ac7c3e\"\n },\n {\n \"url\": \"plugins/connectJira.js\",\n \"revision\": \"4cefa13414e0d406550f3c073923080c\"\n },\n {\n \"url\": \"plugins/cConf-comments.js\",\n \"revision\": \"c787357209cff2986dcca567b599e2ef\"\n },\n {\n \"url\": \"plugins/cConf-1-4-8.js\",\n \"revision\": \"80d3c5ec6575b41d271eb6f7a6efe40b\"\n },\n {\n \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n \"revision\": \"fab9a95f19a57bb836e42f67a1c0078b\"\n },\n {\n \"url\": \"connect/new_common/cac.js\",\n \"revision\": \"3d8c436c566db645fb1e6e6ba9f69bbc\"\n },\n {\n \"url\": \"connect/gdrive_common/gac.js\",\n \"revision\": \"38f1df3ecc4d78290493f47e62202138\"\n },\n {\n \"url\": \"connect/onedrive_common/ac.js\",\n \"revision\": \"d089f12446d443ca01752a5115456fcc\"\n },\n {\n \"url\": \"connect/confluence/viewer-init.js\",\n \"revision\": \"2bd677096ebffd3aa5cab0c347851e3f\"\n },\n {\n \"url\": \"connect/confluence/viewer.js\",\n \"revision\": \"96cc3ed26b8ae45de1316e8a6684ee7e\"\n },\n {\n \"url\": \"connect/confluence/viewer-1-4-42.html\",\n \"revision\": \"4c58f3a1a4c99b1c4264593b6e05100b\"\n },\n {\n \"url\": \"connect/confluence/macroEditor-1-4-8.html\",\n \"revision\": \"8cd74a2fb60bf2e3e86026d66107cf11\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram-1-4-8.js\",\n \"revision\": \"7e198d0456c3075b4b305da188f09714\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram.html\",\n \"revision\": \"5cefef0227d058cf716d1f51f2cf202f\"\n },\n {\n \"url\": \"connect/confluence/macro-editor.js\",\n \"revision\": \"412bc4b87e630b697a40f247c579d398\"\n },\n {\n \"url\": \"math/MathJax.js\",\n \"revision\": \"b2c103388b71bb3d11cbf9aa45fe9b68\"\n },\n {\n \"url\": \"math/config/TeX-MML-AM_SVG-full.js\",\n \"revision\": \"d5cb8ac04050983170ae4af145bc66ff\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/fontdata.js\",\n \"revision\": \"495e5a410955d1b6178870e605890ede\"\n },\n {\n \"url\": \"math/jax/element/mml/optable/BasicLatin.js\",\n \"revision\": \"cac9b2e71382e62270baa55fab07cc13\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js\",\n \"revision\": \"e3e5e4d5924beed29f0844550b5c8f46\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js\",\n \"revision\": \"0767cbad7275b53da128e7e5e1109f7c\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js\",\n \"revision\": \"346302a5c5ee00e01c302148c56dbfe3\"\n },\n {\n \"url\": \"resources/dia.txt\",\n \"revision\": \"2956f21bac002468735a100038cb676c\"\n },\n {\n \"url\": \"resources/dia_am.txt\",\n \"revision\": \"53e607067f1bf082d45edb8f8c30ad41\"\n },\n {\n \"url\": \"resources/dia_ar.txt\",\n \"revision\": \"992bdb4618731d50779bdda355318ca8\"\n },\n {\n \"url\": \"resources/dia_bg.txt\",\n \"revision\": \"932af7b9ee4870f7d52af33a06090b5f\"\n },\n {\n \"url\": \"resources/dia_bn.txt\",\n \"revision\": \"c1642ee22863d7ee601556723cd724e0\"\n },\n {\n \"url\": \"resources/dia_bs.txt\",\n \"revision\": \"509ef42a090def18ff23310cddeba7a1\"\n },\n {\n \"url\": \"resources/dia_ca.txt\",\n \"revision\": \"148bd2ba9c231b19f2f6fd1d9d558373\"\n },\n {\n \"url\": \"resources/dia_cs.txt\",\n \"revision\": \"ff841958f2440fec8189b801076015a2\"\n },\n {\n \"url\": \"resources/dia_da.txt\",\n \"revision\": \"265e6805e8adf5cf4db47477bfacfdac\"\n },\n {\n \"url\": \"resources/dia_de.txt\",\n \"revision\": \"49a4f2a4face0c3de722465237c8418d\"\n },\n {\n \"url\": \"resources/dia_el.txt\",\n \"revision\": \"1340e09f3423c374113c77c1870e54ef\"\n },\n {\n \"url\": \"resources/dia_eo.txt\",\n \"revision\": \"7cf08f9a404fa22c294d505fc86facd0\"\n },\n {\n \"url\": \"resources/dia_es.txt\",\n \"revision\": \"86955530e14ff702e590f3740d104dc8\"\n },\n {\n \"url\": \"resources/dia_et.txt\",\n \"revision\": \"979178af5eb62fae543b0bf931680a9f\"\n },\n {\n \"url\": \"resources/dia_eu.txt\",\n \"revision\": \"9cfe5c260d288e4983fa7908ae54e47f\"\n },\n {\n \"url\": \"resources/dia_fa.txt\",\n \"revision\": \"e08d629ddf1700ac8ca32c3b9f88f4a6\"\n },\n {\n \"url\": \"resources/dia_fi.txt\",\n \"revision\": \"d6914775046d3ac05d906bdbaf623d68\"\n },\n {\n \"url\": \"resources/dia_fil.txt\",\n \"revision\": \"574e2eaf0e290c91b130d59cac596312\"\n },\n {\n \"url\": \"resources/dia_fr.txt\",\n \"revision\": \"dcdd70d54e512ba1384ec66eaecbdb28\"\n },\n {\n \"url\": \"resources/dia_gl.txt\",\n \"revision\": \"7015d14c37ca26ab7caa2287a6eaa2df\"\n },\n {\n \"url\": \"resources/dia_gu.txt\",\n \"revision\": \"38d005642da4000e9e3f790039ca0916\"\n },\n {\n \"url\": \"resources/dia_he.txt\",\n \"revision\": \"094779320bbe89974bf991f78ddb6aea\"\n },\n {\n \"url\": \"resources/dia_hi.txt\",\n \"revision\": \"1d59e10218733d8e8a9d34447b269129\"\n },\n {\n \"url\": \"resources/dia_hr.txt\",\n \"revision\": \"372e38797a55b025da019877659bf1dd\"\n },\n {\n \"url\": \"resources/dia_hu.txt\",\n \"revision\": \"a3384b975b9d32b1b161599201cbfeb4\"\n },\n {\n \"url\": \"resources/dia_id.txt\",\n \"revision\": \"2e805efa18b29798becf33836024f3ab\"\n },\n {\n \"url\": \"resources/dia_it.txt\",\n \"revision\": \"80fc0815aa5d1bf2fcf34071d18334e8\"\n },\n {\n \"url\": \"resources/dia_ja.txt\",\n \"revision\": \"9cabb887e0f3474269a5ee67d0bed22f\"\n },\n {\n \"url\": \"resources/dia_kn.txt\",\n \"revision\": \"de6fc20419970fc2bd140104945ed3a1\"\n },\n {\n \"url\": \"resources/dia_ko.txt\",\n \"revision\": \"a5a89ff13b234ed926252600effd7d1f\"\n },\n {\n \"url\": \"resources/dia_lt.txt\",\n \"revision\": \"612b77e39dcfc76dc27bc9af361542a0\"\n },\n {\n \"url\": \"resources/dia_lv.txt\",\n \"revision\": \"c41d7178a021760ffe150df30a23326c\"\n },\n {\n \"url\": \"resources/dia_ml.txt\",\n \"revision\": \"ae34ca265b1ee668f8ced0911436fb85\"\n },\n {\n \"url\": \"resources/dia_mr.txt\",\n \"revision\": \"4b49edeb9d201adb5cb4262f93e75f8c\"\n },\n {\n \"url\": \"resources/dia_ms.txt\",\n \"revision\": \"87e267b6126063cc07cb4aab2e3726d7\"\n },\n {\n \"url\": \"resources/dia_my.txt\",\n \"revision\": \"2956f21bac002468735a100038cb676c\"\n },\n {\n \"url\": \"resources/dia_nl.txt\",\n \"revision\": \"dc026fa06102da7dc7e1a3bcdcf745e5\"\n },\n {\n \"url\": \"resources/dia_no.txt\",\n \"revision\": \"e1c6f82893a4d13085c367d30d142bea\"\n },\n {\n \"url\": \"resources/dia_pl.txt\",\n \"revision\": \"19c06809138dadaa33e5afdb530ca503\"\n },\n {\n \"url\": \"resources/dia_pt-br.txt\",\n \"revision\": \"df58b42d81918fe5fe923793533388ea\"\n },\n {\n \"url\": \"resources/dia_pt.txt\",\n \"revision\": \"c9688d96c887b5b962cfc844ecd7f0fe\"\n },\n {\n \"url\": \"resources/dia_ro.txt\",\n \"revision\": \"33376bcb7f79553c020d649996c099b6\"\n },\n {\n \"url\": \"resources/dia_ru.txt\",\n \"revision\": \"f0987890664b06a813a941b019c5a01f\"\n },\n {\n \"url\": \"resources/dia_si.txt\",\n \"revision\": \"2956f21bac002468735a100038cb676c\"\n },\n {\n \"url\": \"resources/dia_sk.txt\",\n \"revision\": \"970f2922db33c2a5b36d9c1f828a52a8\"\n },\n {\n \"url\": \"resources/dia_sl.txt\",\n \"revision\": \"df2eafd678af33891f15a0bee7df20d2\"\n },\n {\n \"url\": \"resources/dia_sr.txt\",\n \"revision\": \"1a98e9d86b207b629c04e939cc3a5928\"\n },\n {\n \"url\": \"resources/dia_sv.txt\",\n \"revision\": \"408f84debcea459b390adf5e0485746b\"\n },\n {\n \"url\": \"resources/dia_sw.txt\",\n \"revision\": \"5844365571c556db1bdc02924ab889b3\"\n },\n {\n \"url\": \"resources/dia_ta.txt\",\n \"revision\": \"c4c82fc78958023800c463ef1a9969ff\"\n },\n {\n \"url\": \"resources/dia_te.txt\",\n \"revision\": \"1f8e4ed9acb705d8be85f9156e622964\"\n },\n {\n \"url\": \"resources/dia_th.txt\",\n \"revision\": \"737b6af0751c5626785439dcd4471707\"\n },\n {\n \"url\": \"resources/dia_tr.txt\",\n \"revision\": \"4e5e5d05c301b3228cc5715502ff489d\"\n },\n {\n \"url\": \"resources/dia_uk.txt\",\n \"revision\": \"7b866d10e50a838a1c23ab4ae3b34967\"\n },\n {\n \"url\": \"resources/dia_vi.txt\",\n \"revision\": \"cc272ead4afb30e17ed43d76f21cf2b5\"\n },\n {\n \"url\": \"resources/dia_zh-tw.txt\",\n \"revision\": \"b165d55938f02caefc7e1f4926cdf867\"\n },\n {\n \"url\": \"resources/dia_zh.txt\",\n \"revision\": \"4e03583f54880244cf56bf98522a293b\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"fab2d88b37c72d83607527573de45281\"\n },\n {\n \"url\": \"images/manifest.json\",\n \"revision\": \"c6236bde53ed79aaaec60a1aca8ee2ef\"\n },\n {\n \"url\": \"images/logo.png\",\n \"revision\": \"89630b64b911ebe0daa3dfe442087cfa\"\n },\n {\n \"url\": \"images/drawlogo.svg\",\n \"revision\": \"4bf4d14ebcf072d8bd4c5a1c89e88fc6\"\n },\n {\n \"url\": \"images/drawlogo48.png\",\n \"revision\": \"8b13428373aca67b895364d025f42417\"\n },\n {\n \"url\": \"images/drawlogo-gray.svg\",\n \"revision\": \"0aabacbc0873816e1e09e4736ae44c7d\"\n },\n {\n \"url\": \"images/drawlogo-text-bottom.svg\",\n \"revision\": \"f6c438823ab31f290940bd4feb8dd9c2\"\n },\n {\n \"url\": \"images/default-user.jpg\",\n \"revision\": \"2c399696a87c8921f12d2f9e1990cc6e\"\n },\n {\n \"url\": \"images/logo-flat-small.png\",\n \"revision\": \"4b178e59ff499d6dd1894fc498b59877\"\n },\n {\n \"url\": \"images/apple-touch-icon.png\",\n \"revision\": \"73da7989a23ce9a4be565ec65658a239\"\n },\n {\n \"url\": \"images/favicon-16x16.png\",\n \"revision\": \"1a79d5461a5d2bf21f6652e0ac20d6e5\"\n },\n {\n \"url\": \"images/favicon-32x32.png\",\n \"revision\": \"e3b92da2febe70bad5372f6f3474b034\"\n },\n {\n \"url\": \"images/android-chrome-196x196.png\",\n \"revision\": \"f8c045b2d7b1c719fda64edab04c415c\"\n },\n {\n \"url\": \"images/android-chrome-512x512.png\",\n \"revision\": \"959b5fac2453963ff6d60fb85e4b73fd\"\n },\n {\n \"url\": \"images/delete.png\",\n \"revision\": \"5f2350f2fd20f1a229637aed32ed8f29\"\n },\n {\n \"url\": \"images/droptarget.png\",\n \"revision\": \"bbf7f563fb6784de1ce96f329519b043\"\n },\n {\n \"url\": \"images/help.png\",\n \"revision\": \"9266c6c3915bd33c243d80037d37bf61\"\n },\n {\n \"url\": \"images/download.png\",\n \"revision\": \"35418dd7bd48d87502c71b578cc6c37f\"\n },\n {\n \"url\": \"images/logo-flat.png\",\n \"revision\": \"038070ab43aee6e54a791211859fc67b\"\n },\n {\n \"url\": \"images/google-drive-logo.svg\",\n \"revision\": \"5d9f2f5bbc7dcc252730a0072bb23059\"\n },\n {\n \"url\": \"images/onedrive-logo.svg\",\n \"revision\": \"3645b344ec0634c1290dd58d7dc87b97\"\n },\n {\n \"url\": \"images/dropbox-logo.svg\",\n \"revision\": \"e6be408c77cf9c82d41ac64fa854280a\"\n },\n {\n \"url\": \"images/github-logo.svg\",\n \"revision\": \"a1a999b69a275eac0cb918360ac05ae1\"\n },\n {\n \"url\": \"images/gitlab-logo.svg\",\n \"revision\": \"0faea8c818899e58533e153c44b10517\"\n },\n {\n \"url\": \"images/trello-logo.svg\",\n \"revision\": \"006fd0d7d70d7e95dc691674cb12e044\"\n },\n {\n \"url\": \"images/osa_drive-harddisk.png\",\n \"revision\": \"b954e1ae772087c5b4c6ae797e1f9649\"\n },\n {\n \"url\": \"images/osa_database.png\",\n \"revision\": \"c350d9d9b95f37b6cfe798b40ede5fb0\"\n },\n {\n \"url\": \"images/google-drive-logo-white.svg\",\n \"revision\": \"f329d8b1be7778515a85b93fc35d9f26\"\n },\n {\n \"url\": \"images/dropbox-logo-white.svg\",\n \"revision\": \"4ea8299ac3bc31a16f199ee3aec223bf\"\n },\n {\n \"url\": \"images/onedrive-logo-white.svg\",\n \"revision\": \"b3602fa0fc947009cff3f33a581cff4d\"\n },\n {\n \"url\": \"images/github-logo-white.svg\",\n \"revision\": \"537b1127b3ca0f95b45782d1304fb77a\"\n },\n {\n \"url\": \"images/gitlab-logo-white.svg\",\n \"revision\": \"5fede9ac2f394c716b8c23e3fddc3910\"\n },\n {\n \"url\": \"images/trello-logo-white-orange.svg\",\n \"revision\": \"e2a0a52ba3766682f138138d10a75eb5\"\n },\n {\n \"url\": \"images/logo-confluence.png\",\n \"revision\": \"ed1e55d44ae5eba8f999aba2c93e8331\"\n },\n {\n \"url\": \"images/logo-jira.png\",\n \"revision\": \"f8d460555a0d1f87cfd901e940666629\"\n },\n {\n \"url\": \"images/clear.gif\",\n \"revision\": \"db13c778e4382e0b55258d0f811d5d70\"\n },\n {\n \"url\": \"images/spin.gif\",\n \"revision\": \"487cbb40b9ced439aa1ad914e816d773\"\n },\n {\n \"url\": \"images/checkmark.gif\",\n \"revision\": \"ba764ce62f2bf952df5bbc2bb4d381c5\"\n },\n {\n \"url\": \"images/hs.png\",\n \"revision\": \"fefa1a03d92ebad25c88dca94a0b63db\"\n },\n {\n \"url\": \"images/aui-wait.gif\",\n \"revision\": \"5a474bcbd8d2f2826f03d10ea44bf60e\"\n },\n {\n \"url\": \"mxgraph/css/common.css\",\n \"revision\": \"b5b7280ec98671bb6c3847a36bc7ea12\"\n },\n {\n \"url\": \"mxgraph/images/expanded.gif\",\n \"revision\": \"2b67c2c035af1e9a5cc814f0d22074cf\"\n },\n {\n \"url\": \"mxgraph/images/collapsed.gif\",\n \"revision\": \"73cc826da002a3d740ca4ce6ec5c1f4a\"\n },\n {\n \"url\": \"mxgraph/images/maximize.gif\",\n \"revision\": \"5cd13d6925493ab51e876694cc1c2ec2\"\n },\n {\n \"url\": \"mxgraph/images/minimize.gif\",\n \"revision\": \"8957741b9b0f86af9438775f2aadbb54\"\n },\n {\n \"url\": \"mxgraph/images/close.gif\",\n \"revision\": \"8b84669812ac7382984fca35de8da48b\"\n },\n {\n \"url\": \"mxgraph/images/resize.gif\",\n \"revision\": \"a6477612b3567a34033f9cac6184eed3\"\n },\n {\n \"url\": \"mxgraph/images/separator.gif\",\n \"revision\": \"7819742ff106c97da7a801c2372bbbe5\"\n },\n {\n \"url\": \"mxgraph/images/window.gif\",\n \"revision\": \"fd9a21dd4181f98052a202a0a01f18ab\"\n },\n {\n \"url\": \"mxgraph/images/window-title.gif\",\n \"revision\": \"3fb1d6c43246cdf991a11dfe826dfe99\"\n },\n {\n \"url\": \"mxgraph/images/button.gif\",\n \"revision\": \"00759bdc3ad218fa739f584369541809\"\n },\n {\n \"url\": \"mxgraph/images/point.gif\",\n \"revision\": \"83a43717b284902442620f61bc4e9fa6\"\n }\n], {\n \"ignoreURLParametersMatching\": [/.*/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,iBAYTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,YACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,qCAEb,CACDC,4BAA+B,CAAC"} \ No newline at end of file