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-01-18 15:08:08 +0300
committerDavid Benson <david@draw.io>2022-01-18 15:08:08 +0300
commit751806cbdf3cfdff86cb6b4b463d91e4cdb140a5 (patch)
treed89e07f630f5f7822e64ce6a9a49ff431af2030d
parent4db23f7081b48177975930829e638eeb46cf60b7 (diff)
16.3.0 releasev16.3.0
-rw-r--r--ChangeLog11
-rw-r--r--VERSION2
-rw-r--r--src/main/webapp/electron.js3
-rw-r--r--src/main/webapp/js/app.min.js1658
-rw-r--r--src/main/webapp/js/diagramly/App.js4
-rw-r--r--src/main/webapp/js/diagramly/Dialogs.js3
-rw-r--r--src/main/webapp/js/diagramly/Editor.js105
-rw-r--r--src/main/webapp/js/diagramly/EditorUi.js15
-rw-r--r--src/main/webapp/js/diagramly/Init.js8
-rw-r--r--src/main/webapp/js/diagramly/Menus.js11
-rw-r--r--src/main/webapp/js/grapheditor/Actions.js4
-rw-r--r--src/main/webapp/js/grapheditor/Dialogs.js85
-rw-r--r--src/main/webapp/js/grapheditor/EditorUi.js13
-rw-r--r--src/main/webapp/js/grapheditor/Format.js72
-rw-r--r--src/main/webapp/js/grapheditor/Graph.js182
-rw-r--r--src/main/webapp/js/grapheditor/Menus.js15
-rw-r--r--src/main/webapp/js/viewer-static.min.js980
-rw-r--r--src/main/webapp/js/viewer.min.js980
-rw-r--r--src/main/webapp/mxgraph/mxClient.js4
-rw-r--r--src/main/webapp/plugins/replay.js2
-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.txt3
-rw-r--r--src/main/webapp/resources/dia_de.txt5
-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
-rw-r--r--src/main/webapp/styles/fonts/ArchitectsDaughter-Regular.ttfbin0 -> 37632 bytes
81 files changed, 2249 insertions, 1976 deletions
diff --git a/ChangeLog b/ChangeLog
index c11222f5..cb676210 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+18-JAN-2022: 16.3.0
+
+- Fixes hardcoded textarea dialog size
+- Adds snapToGrid action
+- Adds flip for groups and edges https://github.com/jgraph/drawio/issues/1895 /1139
+- Fixes copySize enabled state for edges
+- Embeds sketch default font (Architects Daughter)
+- Clears background image with background color
+- Fixes mouse wheel zoom in Brave for Windows https://github.com/jgraph/drawio/issues/2528
+- Adds support for enumerating edges
+
14-JAN-2022: 16.2.7
- Adds enumerateValue property
diff --git a/VERSION b/VERSION
index 16f9c34b..377126f0 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-16.2.7 \ No newline at end of file
+16.3.0 \ No newline at end of file
diff --git a/src/main/webapp/electron.js b/src/main/webapp/electron.js
index a3cd47ef..2ada4ab9 100644
--- a/src/main/webapp/electron.js
+++ b/src/main/webapp/electron.js
@@ -81,7 +81,6 @@ function createWindow (opt = {})
backgroundColor: '#FFF',
width: 1600,
height: 1200,
- icon: `${__dirname}/images/drawlogo256.png`,
webViewTag: false,
'web-security': true,
webPreferences: {
@@ -1904,4 +1903,4 @@ ipcMain.on("rendererReq", async (event, args) =>
{
event.reply('mainResp', {error: true, msg: e.message, e: e, reqId: args.reqId});
}
-});
+}); \ No newline at end of file
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index 779fa2f3..22a891ec 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -235,7 +235,7 @@ a),DRAWIO_GITLAB_URL=a);a=urlParams["gitlab-id"];null!=a&&(DRAWIO_GITLAB_ID=a);w
if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==urlParams.local||"1"==urlParams.lockdown)urlParams.picker="0",urlParams.gapi="0",urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0";
"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.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:"16.2.7",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.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:"16.3.0",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]"!==
@@ -262,7 +262,7 @@ unescape(c)):mxResources.resources[d]=c}}}},get:function(a,b,c){a=mxResources.re
mxRectangle.prototype.height=null;mxRectangle.prototype.setRect=function(a,b,c,d){this.x=a;this.y=b;this.width=c;this.height=d};mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2};mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2};
mxRectangle.prototype.add=function(a){if(null!=a){var b=Math.min(this.x,a.x),c=Math.min(this.y,a.y),d=Math.max(this.x+this.width,a.x+a.width);a=Math.max(this.y+this.height,a.y+a.height);this.x=b;this.y=c;this.width=d-b;this.height=a-c}};mxRectangle.prototype.intersect=function(a){if(null!=a){var b=this.x+this.width,c=a.x+a.width,d=this.y+this.height,e=a.y+a.height;this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.width=Math.min(b,c)-this.x;this.height=Math.min(d,e)-this.y}};
mxRectangle.prototype.grow=function(a){this.x-=a;this.y-=a;this.width+=2*a;this.height+=2*a;return this};mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)};mxRectangle.prototype.rotate90=function(){var a=(this.width-this.height)/2;this.x+=a;this.y-=a;a=this.width;this.width=this.height;this.height=a};mxRectangle.prototype.equals=function(a){return null!=a&&a.x==this.x&&a.y==this.y&&a.width==this.width&&a.height==this.height};
-mxRectangle.fromRectangle=function(a){return new mxRectangle(a.x,a.y,a.width,a.height)};
+mxRectangle.fromPoint=function(a){return new mxRectangle(a.x,a.y,0,0)};mxRectangle.fromRectangle=function(a){return new mxRectangle(a.x,a.y,a.width,a.height)};
var mxEffects={animateChanges:function(a,b,c){var d=0,e=function(){for(var g=!1,k=0;k<b.length;k++){var l=b[k];if(l instanceof mxGeometryChange||l instanceof mxTerminalChange||l instanceof mxValueChange||l instanceof mxChildChange||l instanceof mxStyleChange){var m=a.getView().getState(l.cell||l.child,!1);if(null!=m)if(g=!0,l.constructor!=mxGeometryChange||a.model.isEdge(l.cell))mxUtils.setOpacity(m.shape.node,100*d/10);else{var n=a.getView().scale,p=(l.geometry.x-l.previous.x)*n,q=(l.geometry.y-
l.previous.y)*n,r=(l.geometry.width-l.previous.width)*n,n=(l.geometry.height-l.previous.height)*n;0==d?(m.x-=p,m.y-=q,m.width-=r,m.height-=n):(m.x+=p/10,m.y+=q/10,m.width+=r/10,m.height+=n/10);a.cellRenderer.redraw(m);mxEffects.cascadeOpacity(a,l.cell,100*d/10)}}}10>d&&g?(d++,window.setTimeout(e,f)):null!=c&&c()},f=30;e()},cascadeOpacity:function(a,b,c){for(var d=a.model.getChildCount(b),e=0;e<d;e++){var f=a.model.getChildAt(b,e),g=a.getView().getState(f);null!=g&&(mxUtils.setOpacity(g.shape.node,
c),mxEffects.cascadeOpacity(a,f,c))}b=a.model.getEdges(b);if(null!=b)for(e=0;e<b.length;e++)d=a.getView().getState(b[e]),null!=d&&mxUtils.setOpacity(d.shape.node,c)},fadeOut:function(a,b,c,d,e,f){d=d||40;e=e||30;var g=b||100;mxUtils.setOpacity(a,g);if(f||null==f){var k=function(){g=Math.max(g-d,0);mxUtils.setOpacity(a,g);0<g?window.setTimeout(k,e):(a.style.visibility="hidden",c&&a.parentNode&&a.parentNode.removeChild(a))};window.setTimeout(k,e)}else a.style.visibility="hidden",c&&a.parentNode&&a.parentNode.removeChild(a)}},
@@ -2111,12 +2111,12 @@ Editor.prototype.setFilename=function(a){this.filename=a};
Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,c){b.undoableEditHappened(c.getProperty("edit"))};var c=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,c);a.getView().addListener(mxEvent.UNDO,c);c=function(b,c){var d=a.getSelectionCellsForChanges(c.getProperty("edit").changes,function(a){return!(a instanceof mxChildChange)});if(0<d.length){a.getModel();for(var f=[],k=0;k<
d.length;k++)null!=a.view.getState(d[k])&&f.push(d[k]);a.setSelectionCells(f)}};b.addListener(mxEvent.UNDO,c);b.addListener(mxEvent.REDO,c);return b};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};
OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(a){null!=this.done&&this.done(null!=a?a:!0)};
-function Dialog(a,b,c,d,f,e,l,k,h,g,m){var n=h?57:0,p=c,q=d,t=h?0:64,u=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(u.height=window.innerHeight);var r=u.height,x=Math.max(1,Math.round((u.width-c-t)/2)),y=Math.max(1,Math.round((r-d-a.footerHeight)/3));b.style.maxHeight="100%";c=null!=document.body?Math.min(c,document.body.scrollWidth-t):c;d=Math.min(d,r-t);0<a.dialogs.length&&(this.zIndex+=
-2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=r+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));u=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=u.x+"px";this.bg.style.top=u.y+"px";x+=u.x;y+=u.y;Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
-y+=a.embedViewport.y,x+=a.embedViewport.x);f&&document.body.appendChild(this.bg);var w=a.createDiv(h?"geTransDialog":"geDialog");f=this.getPosition(x,y,c,d);x=f.x;y=f.y;w.style.width=c+"px";w.style.height=d+"px";w.style.left=x+"px";w.style.top=y+"px";w.style.zIndex=this.zIndex;w.appendChild(b);document.body.appendChild(w);!k&&b.clientHeight>w.clientHeight-t&&(b.style.overflowY="auto");b.style.overflowX="hidden";if(e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),
-e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose",e.style.top=y+14+"px",e.style.left=x+c+38-n+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(e),this.dialogImg=e,!m)){var F=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(a){F=!0}),null,mxUtils.bind(this,function(b){F&&(a.hideDialog(!0),F=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var e=g();
-null!=e&&(p=c=e.w,q=d=e.h)}e=mxUtils.getDocumentSize();r=e.height;this.bg.style.height=r+"px";Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");x=Math.max(1,Math.round((e.width-c-t)/2));y=Math.max(1,Math.round((r-d-a.footerHeight)/3));c=null!=document.body?Math.min(p,document.body.scrollWidth-t):p;d=Math.min(q,r-t);e=this.getPosition(x,y,c,d);x=e.x;y=e.y;w.style.left=x+"px";w.style.top=y+"px";w.style.width=c+"px";w.style.height=d+"px";!k&&
-b.clientHeight>w.clientHeight-t&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=y+14+"px",this.dialogImg.style.left=x+c+38-n+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=l;this.container=w;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
+function Dialog(a,b,c,d,f,e,l,k,h,g,m){var n=h?57:0,p=c,q=d,r=h?0:64,u=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(u.height=window.innerHeight);var t=u.height,w=Math.max(1,Math.round((u.width-c-r)/2)),x=Math.max(1,Math.round((t-d-a.footerHeight)/3));b.style.maxHeight="100%";c=null!=document.body?Math.min(c,document.body.scrollWidth-r):c;d=Math.min(d,t-r);0<a.dialogs.length&&(this.zIndex+=
+2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=t+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));u=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=u.x+"px";this.bg.style.top=u.y+"px";w+=u.x;x+=u.y;Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
+x+=a.embedViewport.y,w+=a.embedViewport.x);f&&document.body.appendChild(this.bg);var y=a.createDiv(h?"geTransDialog":"geDialog");f=this.getPosition(w,x,c,d);w=f.x;x=f.y;y.style.width=c+"px";y.style.height=d+"px";y.style.left=w+"px";y.style.top=x+"px";y.style.zIndex=this.zIndex;y.appendChild(b);document.body.appendChild(y);!k&&b.clientHeight>y.clientHeight-r&&(b.style.overflowY="auto");b.style.overflowX="hidden";if(e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),
+e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose",e.style.top=x+14+"px",e.style.left=w+c+38-n+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(e),this.dialogImg=e,!m)){var F=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(a){F=!0}),null,mxUtils.bind(this,function(b){F&&(a.hideDialog(!0),F=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var e=g();
+null!=e&&(p=c=e.w,q=d=e.h)}e=mxUtils.getDocumentSize();t=e.height;this.bg.style.height=t+"px";Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");w=Math.max(1,Math.round((e.width-c-r)/2));x=Math.max(1,Math.round((t-d-a.footerHeight)/3));c=null!=document.body?Math.min(p,document.body.scrollWidth-r):p;d=Math.min(q,t-r);e=this.getPosition(w,x,c,d);w=e.x;x=e.y;y.style.left=w+"px";y.style.top=x+"px";y.style.width=c+"px";y.style.height=d+"px";!k&&
+b.clientHeight>y.clientHeight-r&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=x+14+"px",this.dialogImg.style.left=w+c+38-n+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=l;this.container=y;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+
"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png";
Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+
@@ -2133,32 +2133,32 @@ f.style.paddingTop="20px";f.setAttribute("align","right");h=mxUtils.button(mxRes
f.appendChild(h);d.appendChild(f);l.appendChild(d);e.appendChild(l);this.container=e};PrintDialog.printPreview=function(a){try{if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}catch(c){}};
PrintDialog.createPrintPreview=function(a,b,c,d,f,e,l){b=new mxPrintPreview(a,b,c,d,f,e);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=l;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var k=b.writeHead;b.writeHead=function(a){k.apply(this,arguments);a.writeln('<style type="text/css">');a.writeln("@media screen {");a.writeln(" body > div { padding:30px;box-sizing:content-box; }");a.writeln("}");a.writeln("</style>")};return b};
PrintDialog.previewEnabled=!0;
-var PageSetupDialog=function(a){function b(){null==m||m==mxConstants.NONE?(g.style.backgroundColor="",g.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(g.style.backgroundColor=m,g.style.backgroundImage="")}function c(){var b=t;null!=b&&Graph.isPageLink(b.src)&&(b=a.createImageForPageLink(b.src,null));null!=b&&null!=b.src?(q.setAttribute("src",b.src),q.style.display=""):(q.removeAttribute("src"),q.style.display="none")}var d=a.editor.graph,f,e,l=document.createElement("table");l.style.width=
+var PageSetupDialog=function(a){function b(){null==m||m==mxConstants.NONE?(g.style.backgroundColor="",g.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(g.style.backgroundColor=m,g.style.backgroundImage="")}function c(){var b=r;null!=b&&Graph.isPageLink(b.src)&&(b=a.createImageForPageLink(b.src,null));null!=b&&null!=b.src?(q.setAttribute("src",b.src),q.style.display=""):(q.removeAttribute("src"),q.style.display="none")}var d=a.editor.graph,f,e,l=document.createElement("table");l.style.width=
"100%";l.style.height="100%";var k=document.createElement("tbody");f=document.createElement("tr");e=document.createElement("td");e.style.verticalAlign="top";e.style.fontSize="10pt";mxUtils.write(e,mxResources.get("paperSize")+":");f.appendChild(e);e=document.createElement("td");e.style.verticalAlign="top";e.style.fontSize="10pt";var h=PageSetupDialog.addPageFormatPanel(e,"pagesetupdialog",d.pageFormat);f.appendChild(e);k.appendChild(f);f=document.createElement("tr");e=document.createElement("td");
mxUtils.write(e,mxResources.get("background")+":");f.appendChild(e);e=document.createElement("td");e.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var g=document.createElement("button");g.style.width="22px";g.style.height="22px";g.style.cursor="pointer";g.style.marginRight="20px";g.style.backgroundPosition="center center";g.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(g.style.position="relative",g.style.top="-6px");var m=d.background;b();mxEvent.addListener(g,
"click",function(d){a.pickColor(m||"none",function(a){m=a;b()});mxEvent.consume(d)});e.appendChild(g);mxUtils.write(e,mxResources.get("gridSize")+":");var n=document.createElement("input");n.setAttribute("type","number");n.setAttribute("min","0");n.style.width="40px";n.style.marginLeft="6px";n.value=d.getGridSize();e.appendChild(n);mxEvent.addListener(n,"change",function(){var a=parseInt(n.value);n.value=Math.max(1,isNaN(a)?d.getGridSize():a)});f.appendChild(e);k.appendChild(f);f=document.createElement("tr");
e=document.createElement("td");mxUtils.write(e,mxResources.get("image")+":");f.appendChild(e);e=document.createElement("td");var p=document.createElement("button");p.className="geBtn";p.style.margin="0px";mxUtils.write(p,mxResources.get("change")+"...");var q=document.createElement("img");q.setAttribute("valign","middle");q.style.verticalAlign="middle";q.style.border="1px solid lightGray";q.style.borderRadius="4px";q.style.marginRight="14px";q.style.maxWidth="100px";q.style.cursor="pointer";q.style.height=
-"60px";q.style.padding="4px";var t=d.backgroundImage,u=function(b){a.showBackgroundImageDialog(function(a,b){b||(t=a,c())},t);mxEvent.consume(b)};mxEvent.addListener(p,"click",u);mxEvent.addListener(q,"click",u);c();e.appendChild(q);e.appendChild(p);f.appendChild(e);k.appendChild(f);f=document.createElement("tr");e=document.createElement("td");e.colSpan=2;e.style.paddingTop="16px";e.setAttribute("align","right");p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";
-a.editor.cancelFirst&&e.appendChild(p);u=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var b=parseInt(n.value);isNaN(b)||d.gridSize===b||d.setGridSize(b);b=new ChangePageSetup(a,m,t,h.get());b.ignoreColor=d.background==m;b.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=t?t.src:null);d.pageFormat.width==b.previousFormat.width&&d.pageFormat.height==b.previousFormat.height&&b.ignoreColor&&b.ignoreImage||d.model.execute(b)});u.className="geBtn gePrimaryBtn";
+"60px";q.style.padding="4px";var r=d.backgroundImage,u=function(b){a.showBackgroundImageDialog(function(a,b){b||(r=a,c())},r);mxEvent.consume(b)};mxEvent.addListener(p,"click",u);mxEvent.addListener(q,"click",u);c();e.appendChild(q);e.appendChild(p);f.appendChild(e);k.appendChild(f);f=document.createElement("tr");e=document.createElement("td");e.colSpan=2;e.style.paddingTop="16px";e.setAttribute("align","right");p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";
+a.editor.cancelFirst&&e.appendChild(p);u=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var b=parseInt(n.value);isNaN(b)||d.gridSize===b||d.setGridSize(b);b=new ChangePageSetup(a,m,r,h.get());b.ignoreColor=d.background==m;b.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=r?r.src:null);d.pageFormat.width==b.previousFormat.width&&d.pageFormat.height==b.previousFormat.height&&b.ignoreColor&&b.ignoreImage||d.model.execute(b)});u.className="geBtn gePrimaryBtn";
e.appendChild(u);a.editor.cancelFirst||e.appendChild(p);f.appendChild(e);k.appendChild(f);l.appendChild(k);this.container=l};
-PageSetupDialog.addPageFormatPanel=function(a,b,c,d){function f(a,b,d){if(d||n!=document.activeElement&&p!=document.activeElement){a=!1;for(b=0;b<t.length;b++)d=t[b],y?"custom"==d.key&&(k.value=d.key,y=!1):null!=d.format&&("a4"==d.key?826==c.width?(c=mxRectangle.fromRectangle(c),c.width=827):826==c.height&&(c=mxRectangle.fromRectangle(c),c.height=827):"a5"==d.key&&(584==c.width?(c=mxRectangle.fromRectangle(c),c.width=583):584==c.height&&(c=mxRectangle.fromRectangle(c),c.height=583)),c.width==d.format.width&&
+PageSetupDialog.addPageFormatPanel=function(a,b,c,d){function f(a,b,d){if(d||n!=document.activeElement&&p!=document.activeElement){a=!1;for(b=0;b<r.length;b++)d=r[b],x?"custom"==d.key&&(k.value=d.key,x=!1):null!=d.format&&("a4"==d.key?826==c.width?(c=mxRectangle.fromRectangle(c),c.width=827):826==c.height&&(c=mxRectangle.fromRectangle(c),c.height=827):"a5"==d.key&&(584==c.width?(c=mxRectangle.fromRectangle(c),c.width=583):584==c.height&&(c=mxRectangle.fromRectangle(c),c.height=583)),c.width==d.format.width&&
c.height==d.format.height?(k.value=d.key,e.setAttribute("checked","checked"),e.defaultChecked=!0,e.checked=!0,l.removeAttribute("checked"),l.defaultChecked=!1,l.checked=!1,a=!0):c.width==d.format.height&&c.height==d.format.width&&(k.value=d.key,e.removeAttribute("checked"),e.defaultChecked=!1,e.checked=!1,l.setAttribute("checked","checked"),l.defaultChecked=!0,a=l.checked=!0));a?(h.style.display="",m.style.display="none"):(n.value=c.width/100,p.value=c.height/100,e.setAttribute("checked","checked"),
k.value="custom",h.style.display="none",m.style.display="")}}b="format-"+b;var e=document.createElement("input");e.setAttribute("name",b);e.setAttribute("type","radio");e.setAttribute("value","portrait");var l=document.createElement("input");l.setAttribute("name",b);l.setAttribute("type","radio");l.setAttribute("value","landscape");var k=document.createElement("select");k.style.marginBottom="8px";k.style.borderRadius="4px";k.style.border="1px solid rgb(160, 160, 160)";k.style.width="206px";var h=
document.createElement("div");h.style.marginLeft="4px";h.style.width="210px";h.style.height="24px";e.style.marginRight="6px";h.appendChild(e);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));h.appendChild(b);l.style.marginLeft="10px";l.style.marginRight="6px";h.appendChild(l);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));h.appendChild(g);var m=document.createElement("div");m.style.marginLeft=
-"4px";m.style.width="210px";m.style.height="24px";var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";m.appendChild(n);mxUtils.write(m," in x ");var p=document.createElement("input");p.setAttribute("size","7");p.style.textAlign="right";m.appendChild(p);mxUtils.write(m," in");h.style.display="none";m.style.display="none";for(var q={},t=PageSetupDialog.getFormats(),u=0;u<t.length;u++){var r=t[u];q[r.key]=r;var x=document.createElement("option");x.setAttribute("value",
-r.key);mxUtils.write(x,r.title);k.appendChild(x)}var y=!1;f();a.appendChild(k);mxUtils.br(a);a.appendChild(h);a.appendChild(m);var w=c,F=function(a,b){var e=q[k.value];null!=e.format?(n.value=e.format.width/100,p.value=e.format.height/100,m.style.display="none",h.style.display=""):(h.style.display="none",m.style.display="");e=parseFloat(n.value);if(isNaN(e)||0>=e)n.value=c.width/100;e=parseFloat(p.value);if(isNaN(e)||0>=e)p.value=c.height/100;e=new mxRectangle(0,0,Math.floor(100*parseFloat(n.value)),
-Math.floor(100*parseFloat(p.value)));"custom"!=k.value&&l.checked&&(e=new mxRectangle(0,0,e.height,e.width));b&&y||e.width==w.width&&e.height==w.height||(w=e,null!=d&&d(w))};mxEvent.addListener(b,"click",function(a){e.checked=!0;F(a);mxEvent.consume(a)});mxEvent.addListener(g,"click",function(a){l.checked=!0;F(a);mxEvent.consume(a)});mxEvent.addListener(n,"blur",F);mxEvent.addListener(n,"click",F);mxEvent.addListener(p,"blur",F);mxEvent.addListener(p,"click",F);mxEvent.addListener(l,"change",F);mxEvent.addListener(e,
-"change",F);mxEvent.addListener(k,"change",function(a){y="custom"==k.value;F(a,!0)});F();return{set:function(a){c=a;f(null,null,!0)},get:function(){return w},widthInput:n,heightInput:p}};
+"4px";m.style.width="210px";m.style.height="24px";var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";m.appendChild(n);mxUtils.write(m," in x ");var p=document.createElement("input");p.setAttribute("size","7");p.style.textAlign="right";m.appendChild(p);mxUtils.write(m," in");h.style.display="none";m.style.display="none";for(var q={},r=PageSetupDialog.getFormats(),u=0;u<r.length;u++){var t=r[u];q[t.key]=t;var w=document.createElement("option");w.setAttribute("value",
+t.key);mxUtils.write(w,t.title);k.appendChild(w)}var x=!1;f();a.appendChild(k);mxUtils.br(a);a.appendChild(h);a.appendChild(m);var y=c,F=function(a,b){var e=q[k.value];null!=e.format?(n.value=e.format.width/100,p.value=e.format.height/100,m.style.display="none",h.style.display=""):(h.style.display="none",m.style.display="");e=parseFloat(n.value);if(isNaN(e)||0>=e)n.value=c.width/100;e=parseFloat(p.value);if(isNaN(e)||0>=e)p.value=c.height/100;e=new mxRectangle(0,0,Math.floor(100*parseFloat(n.value)),
+Math.floor(100*parseFloat(p.value)));"custom"!=k.value&&l.checked&&(e=new mxRectangle(0,0,e.height,e.width));b&&x||e.width==y.width&&e.height==y.height||(y=e,null!=d&&d(y))};mxEvent.addListener(b,"click",function(a){e.checked=!0;F(a);mxEvent.consume(a)});mxEvent.addListener(g,"click",function(a){l.checked=!0;F(a);mxEvent.consume(a)});mxEvent.addListener(n,"blur",F);mxEvent.addListener(n,"click",F);mxEvent.addListener(p,"blur",F);mxEvent.addListener(p,"click",F);mxEvent.addListener(l,"change",F);mxEvent.addListener(e,
+"change",F);mxEvent.addListener(k,"change",function(a){x="custom"==k.value;F(a,!0)});F();return{set:function(a){c=a;f(null,null,!0)},get:function(){return y},widthInput:n,heightInput:p}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
{key:"b4",title:"B4 (250 mm x 353 mm)",format:new mxRectangle(0,0,980,1390)},{key:"b5",title:"B5 (176 mm x 250 mm)",format:new mxRectangle(0,0,690,980)},{key:"16-9",title:"16:9 (1600 x 900)",format:new mxRectangle(0,0,900,1600)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1200,1920)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1200,1600)},{key:"custom",title:mxResources.get("custom"),format:null}]};
-var FilenameDialog=function(a,b,c,d,f,e,l,k,h,g,m,n){h=null!=h?h:!0;var p,q,t=document.createElement("table"),u=document.createElement("tbody");t.style.position="absolute";t.style.top="30px";t.style.left="20px";p=document.createElement("tr");q=document.createElement("td");q.style.textOverflow="ellipsis";q.style.textAlign="right";q.style.maxWidth="100px";q.style.fontSize="10pt";q.style.width="84px";mxUtils.write(q,(f||mxResources.get("filename"))+":");p.appendChild(q);var r=document.createElement("input");
-r.setAttribute("value",b||"");r.style.marginLeft="4px";r.style.width=null!=n?n+"px":"180px";var x=mxUtils.button(c,function(){if(null==e||e(r.value))h&&a.hideDialog(),d(r.value)});x.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==l)if(r.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?r.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=t.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor=
-"",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=r,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(r.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),x.click());a.stopPropagation();
-a.preventDefault()}))}}};q=document.createElement("td");q.style.whiteSpace="nowrap";q.appendChild(r);p.appendChild(q);if(null!=f||null==l)u.appendChild(p),null!=m&&(q.appendChild(FilenameDialog.createTypeHint(a,r,m)),null!=a.editor.diagramFileTypes&&(p=document.createElement("tr"),q=document.createElement("td"),q.style.textOverflow="ellipsis",q.style.textAlign="right",q.style.maxWidth="100px",q.style.fontSize="10pt",q.style.width="84px",mxUtils.write(q,mxResources.get("type")+":"),p.appendChild(q),
-q=document.createElement("td"),q.style.whiteSpace="nowrap",p.appendChild(q),b=FilenameDialog.createFileTypes(a,r,a.editor.diagramFileTypes),b.style.marginLeft="4px",b.style.width="198px",q.appendChild(b),r.style.width=null!=n?n-40+"px":"190px",p.appendChild(q),u.appendChild(p)));null!=l&&(p=document.createElement("tr"),q=document.createElement("td"),q.colSpan=2,q.appendChild(l),p.appendChild(q),u.appendChild(p));p=document.createElement("tr");q=document.createElement("td");q.colSpan=2;q.style.paddingTop=
-null!=m?"12px":"20px";q.style.whiteSpace="nowrap";q.setAttribute("align","right");m=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});m.className="geBtn";a.editor.cancelFirst&&q.appendChild(m);null!=k&&(n=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(k)}),n.className="geBtn",q.appendChild(n));mxEvent.addListener(r,"keypress",function(a){13==a.keyCode&&x.click()});q.appendChild(x);a.editor.cancelFirst||q.appendChild(m);p.appendChild(q);u.appendChild(p);
-t.appendChild(u);this.container=t};FilenameDialog.filenameHelpLink=null;
+var FilenameDialog=function(a,b,c,d,f,e,l,k,h,g,m,n){h=null!=h?h:!0;var p,q,r=document.createElement("table"),u=document.createElement("tbody");r.style.position="absolute";r.style.top="30px";r.style.left="20px";p=document.createElement("tr");q=document.createElement("td");q.style.textOverflow="ellipsis";q.style.textAlign="right";q.style.maxWidth="100px";q.style.fontSize="10pt";q.style.width="84px";mxUtils.write(q,(f||mxResources.get("filename"))+":");p.appendChild(q);var t=document.createElement("input");
+t.setAttribute("value",b||"");t.style.marginLeft="4px";t.style.width=null!=n?n+"px":"180px";var w=mxUtils.button(c,function(){if(null==e||e(t.value))h&&a.hideDialog(),d(t.value)});w.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==l)if(t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=r.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor=
+"",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=t,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(t.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),w.click());a.stopPropagation();
+a.preventDefault()}))}}};q=document.createElement("td");q.style.whiteSpace="nowrap";q.appendChild(t);p.appendChild(q);if(null!=f||null==l)u.appendChild(p),null!=m&&(q.appendChild(FilenameDialog.createTypeHint(a,t,m)),null!=a.editor.diagramFileTypes&&(p=document.createElement("tr"),q=document.createElement("td"),q.style.textOverflow="ellipsis",q.style.textAlign="right",q.style.maxWidth="100px",q.style.fontSize="10pt",q.style.width="84px",mxUtils.write(q,mxResources.get("type")+":"),p.appendChild(q),
+q=document.createElement("td"),q.style.whiteSpace="nowrap",p.appendChild(q),b=FilenameDialog.createFileTypes(a,t,a.editor.diagramFileTypes),b.style.marginLeft="4px",b.style.width="198px",q.appendChild(b),t.style.width=null!=n?n-40+"px":"190px",p.appendChild(q),u.appendChild(p)));null!=l&&(p=document.createElement("tr"),q=document.createElement("td"),q.colSpan=2,q.appendChild(l),p.appendChild(q),u.appendChild(p));p=document.createElement("tr");q=document.createElement("td");q.colSpan=2;q.style.paddingTop=
+null!=m?"12px":"20px";q.style.whiteSpace="nowrap";q.setAttribute("align","right");m=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});m.className="geBtn";a.editor.cancelFirst&&q.appendChild(m);null!=k&&(n=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(k)}),n.className="geBtn",q.appendChild(n));mxEvent.addListener(t,"keypress",function(a){13==a.keyCode&&w.click()});q.appendChild(w);a.editor.cancelFirst||q.appendChild(m);p.appendChild(q);u.appendChild(p);
+r.appendChild(u);this.container=r};FilenameDialog.filenameHelpLink=null;
FilenameDialog.createTypeHint=function(a,b,c){var d=document.createElement("img");d.style.backgroundPosition="center bottom";d.style.backgroundRepeat="no-repeat";d.style.margin="2px 0 0 4px";d.style.verticalAlign="top";d.style.cursor="pointer";d.style.height="16px";d.style.width="16px";mxUtils.setOpacity(d,70);var f=function(){d.setAttribute("src",Editor.helpImage);d.setAttribute("title",mxResources.get("help"));for(var a=0;a<c.length;a++)if(0<c[a].ext.length&&b.value.toLowerCase().substring(b.value.length-
c[a].ext.length-1)=="."+c[a].ext){d.setAttribute("title",mxResources.get(c[a].title));break}};mxEvent.addListener(b,"keyup",f);mxEvent.addListener(b,"change",f);mxEvent.addListener(d,"click",function(b){var e=d.getAttribute("title");d.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=e&&a.showError(null,e,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(b)});
f();return d};
@@ -2172,8 +2172,8 @@ mxGraphView.prototype.validateBackgroundStyles=function(){var a=this.graph,b=nul
a.defaultPageBorderColor,a.container.className="geDiagramContainer geDiagramBackdrop",d.style.backgroundImage="none",d.style.backgroundColor=""):(a.container.className="geDiagramContainer",d.style.backgroundPosition=c,d.style.backgroundColor=b,d.style.backgroundImage=e)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var d=this.gridSteps*b,e=[],c=1;c<this.gridSteps;c++){var f=c*b;e.push("M 0 "+f+" L "+d+" "+f+" M "+f+" 0 L "+f+
" "+d)}return'<svg width="'+d+'" height="'+d+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+d+'" height="'+d+'" patternUnits="userSpaceOnUse"><path d="'+e.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+d+" 0 L 0 0 0 "+d+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,d){a.apply(this,arguments);
if(null!=this.shiftPreview1){var e=this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var c=this.gridSize*this.view.scale*this.view.gridSteps,c=-Math.round(c-mxUtils.mod(this.view.translate.x*this.view.scale+b,c))+"px "+-Math.round(c-mxUtils.mod(this.view.translate.y*this.view.scale+d,c))+"px";e.style.backgroundPosition=c}};mxGraph.prototype.updatePageBreaks=function(a,b,d){var e=this.view.scale,c=this.view.translate,f=this.pageFormat,l=e*this.pageScale,h=this.view.getBackgroundPageBounds();
-b=h.width;d=h.height;var k=new mxRectangle(e*c.x,e*c.y,f.width*l,f.height*l),u=(a=a&&Math.min(k.width,k.height)>this.minPageBreakDist)?Math.ceil(d/k.height)-1:0,r=a?Math.ceil(b/k.width)-1:0,x=h.x+b,y=h.y+d;null==this.horizontalPageBreaks&&0<u&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<r&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var b=a==this.horizontalPageBreaks?u:r,d=0;d<=b;d++){var e=a==this.horizontalPageBreaks?[new mxPoint(Math.round(h.x),
-Math.round(h.y+(d+1)*k.height)),new mxPoint(Math.round(x),Math.round(h.y+(d+1)*k.height))]:[new mxPoint(Math.round(h.x+(d+1)*k.width),Math.round(h.y)),new mxPoint(Math.round(h.x+(d+1)*k.width),Math.round(y))];null!=a[d]?(a[d].points=e,a[d].redraw()):(e=new mxPolyline(e,this.pageBreakColor),e.dialect=this.dialect,e.isDashed=this.pageBreakDashed,e.pointerEvents=!1,e.init(this.view.backgroundPane),e.redraw(),a[d]=e)}for(d=b;d<a.length;d++)a[d].destroy();a.splice(b,a.length-b)}});a(this.horizontalPageBreaks);
+b=h.width;d=h.height;var k=new mxRectangle(e*c.x,e*c.y,f.width*l,f.height*l),u=(a=a&&Math.min(k.width,k.height)>this.minPageBreakDist)?Math.ceil(d/k.height)-1:0,t=a?Math.ceil(b/k.width)-1:0,w=h.x+b,x=h.y+d;null==this.horizontalPageBreaks&&0<u&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<t&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var b=a==this.horizontalPageBreaks?u:t,d=0;d<=b;d++){var e=a==this.horizontalPageBreaks?[new mxPoint(Math.round(h.x),
+Math.round(h.y+(d+1)*k.height)),new mxPoint(Math.round(w),Math.round(h.y+(d+1)*k.height))]:[new mxPoint(Math.round(h.x+(d+1)*k.width),Math.round(h.y)),new mxPoint(Math.round(h.x+(d+1)*k.width),Math.round(x))];null!=a[d]?(a[d].points=e,a[d].redraw()):(e=new mxPolyline(e,this.pageBreakColor),e.dialect=this.dialect,e.isDashed=this.pageBreakDashed,e.pointerEvents=!1,e.init(this.view.backgroundPane),e.redraw(),a[d]=e)}for(d=b;d<a.length;d++)a[d].destroy();a.splice(b,a.length-b)}});a(this.horizontalPageBreaks);
a(this.verticalPageBreaks)};var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,d,e){for(var c=0;c<d.length;c++){if(this.graph.isTableCell(d[c])||this.graph.isTableRow(d[c]))return!1;if(this.graph.getModel().isVertex(d[c])){var f=this.graph.getCellGeometry(d[c]);if(null!=f&&f.relative)return!1}}return b.apply(this,arguments)};var c=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=
c.apply(this,arguments);a.intersects=mxUtils.bind(this,function(b,d){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,d=0<a.height?a.y/this.scale-this.translate.y:0,e=this.graph.pageFormat,
c=this.graph.pageScale,f=e.width*c,e=e.height*c,c=Math.floor(Math.min(0,b)/f),p=Math.floor(Math.min(0,d)/e);return new mxRectangle(this.scale*(this.translate.x+c*f),this.scale*(this.translate.y+p*e),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/f)-c)*f,this.scale*(Math.ceil(Math.max(1,d+a.height/this.scale)/e)-p)*e)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){d.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
@@ -2183,19 +2183,19 @@ this.graph.isCellSelected(a)&&!this.graph.isToggleEvent(d.getEvent())||this.grap
"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(a,b){this.clearSelectionState()});d.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionStateListener);d.getModel().addListener(mxEvent.CHANGE,this.selectionStateListener);
d.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);d.addListener(mxEvent.EDITING_STOPPED,this.selectionStateListener);d.getView().addListener("unitChanged",this.selectionStateListener);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,d.isEnabled=function(){return!1},d.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();if(!d.standalone){var e="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),
l="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),k="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(a){try{var b=d.getCellStyle(a,!1),e=[],c=[],f;for(f in b)e.push(b[f]),c.push(f);d.getModel().isEdge(a)?d.currentEdgeStyle={}:d.currentVertexStyle=
-{};this.fireEvent(new mxEventObject("styleChanged","keys",c,"values",e,"cells",[a]))}catch(M){this.handleError(M)}};this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var h=["fontFamily","fontSource","fontSize","fontColor"];for(b=0;b<h.length;b++)0>mxUtils.indexOf(e,h[b])&&e.push(h[b]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),
+{};this.fireEvent(new mxEventObject("styleChanged","keys",c,"values",e,"cells",[a]))}catch(N){this.handleError(N)}};this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var h=["fontFamily","fontSource","fontSize","fontColor"];for(b=0;b<h.length;b++)0>mxUtils.indexOf(e,h[b])&&e.push(h[b]);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(b=0;b<m.length;b++)for(c=0;c<m[b].length;c++)e.push(m[b][c]);for(b=0;b<l.length;b++)0>mxUtils.indexOf(e,l[b])&&e.push(l[b]);var n=function(a,b,c,f,l,h,g){f=null!=f?f:d.currentVertexStyle;l=null!=l?l:d.currentEdgeStyle;h=null!=h?h:!0;c=null!=c?c:d.getModel();if(g){g=[];
-for(var n=0;n<a.length;n++)g=g.concat(c.getDescendants(a[n]));a=g}c.beginUpdate();try{for(n=0;n<a.length;n++){var p=a[n],q;if(b)q=["fontSize","fontFamily","fontColor"];else{var t=c.getStyle(p),r=null!=t?t.split(";"):[];q=e.slice();for(var P=0;P<r.length;P++){var u=r[P],x=u.indexOf("=");if(0<=x){var w=u.substring(0,x),O=mxUtils.indexOf(q,w);0<=O&&q.splice(O,1);for(g=0;g<m.length;g++){var Y=m[g];if(0<=mxUtils.indexOf(Y,w))for(var K=0;K<Y.length;K++){var F=mxUtils.indexOf(q,Y[K]);0<=F&&q.splice(F,1)}}}}}var M=
-c.isEdge(p);g=M?l:f;for(var y=c.getStyle(p),P=0;P<q.length;P++){var w=q[P],D=g[w];null!=D&&"edgeStyle"!=w&&("shape"!=w||M)&&(!M||h||0>mxUtils.indexOf(k,w))&&(y=mxUtils.setStyle(y,w,D))}Editor.simpleLabels&&(y=mxUtils.setStyle(mxUtils.setStyle(y,"html",null),"whiteSpace",null));c.setStyle(p,y)}}finally{c.endUpdate()}return a};d.addListener("cellsInserted",function(a,b){n(b.getProperty("cells"),null,null,null,null,!0,!0)});d.addListener("textInserted",function(a,b){n(b.getProperty("cells"),!0)});this.insertHandler=
-n;this.createDivs();this.createUi();this.refresh();var p=mxUtils.bind(this,function(a){null==a&&(a=window.event);return d.isEditing()||null!=a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=p,this.menubarContainer.onmousedown=p,this.toolbarContainer.onselectstart=p,this.toolbarContainer.onmousedown=p,this.diagramContainer.onselectstart=p,this.diagramContainer.onmousedown=p,this.sidebarContainer.onselectstart=p,this.sidebarContainer.onmousedown=p,
-this.formatContainer.onselectstart=p,this.formatContainer.onmousedown=p,this.footerContainer.onselectstart=p,this.footerContainer.onmousedown=p,null!=this.tabContainer&&(this.tabContainer.onselectstart=p));!this.editor.chromeless||this.editor.editable?(b=function(a){if(null!=a){var b=mxEvent.getSource(a);if("A"==b.nodeName)for(;null!=b;){if("geHint"==b.className)return!0;b=b.parentNode}}return p(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,
+for(var n=0;n<a.length;n++)g=g.concat(c.getDescendants(a[n]));a=g}c.beginUpdate();try{for(n=0;n<a.length;n++){var p=a[n],q;if(b)q=["fontSize","fontFamily","fontColor"];else{var r=c.getStyle(p),t=null!=r?r.split(";"):[];q=e.slice();for(var P=0;P<t.length;P++){var u=t[P],w=u.indexOf("=");if(0<=w){var M=u.substring(0,w),ba=mxUtils.indexOf(q,M);0<=ba&&q.splice(ba,1);for(g=0;g<m.length;g++){var K=m[g];if(0<=mxUtils.indexOf(K,M))for(var y=0;y<K.length;y++){var F=mxUtils.indexOf(q,K[y]);0<=F&&q.splice(F,
+1)}}}}}var N=c.isEdge(p);g=N?l:f;for(var x=c.getStyle(p),P=0;P<q.length;P++){var M=q[P],Y=g[M];null!=Y&&"edgeStyle"!=M&&("shape"!=M||N)&&(!N||h||0>mxUtils.indexOf(k,M))&&(x=mxUtils.setStyle(x,M,Y))}Editor.simpleLabels&&(x=mxUtils.setStyle(mxUtils.setStyle(x,"html",null),"whiteSpace",null));c.setStyle(p,x)}}finally{c.endUpdate()}return a};d.addListener("cellsInserted",function(a,b){n(b.getProperty("cells"),null,null,null,null,!0,!0)});d.addListener("textInserted",function(a,b){n(b.getProperty("cells"),
+!0)});this.insertHandler=n;this.createDivs();this.createUi();this.refresh();var p=mxUtils.bind(this,function(a){null==a&&(a=window.event);return d.isEditing()||null!=a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=p,this.menubarContainer.onmousedown=p,this.toolbarContainer.onselectstart=p,this.toolbarContainer.onmousedown=p,this.diagramContainer.onselectstart=p,this.diagramContainer.onmousedown=p,this.sidebarContainer.onselectstart=p,this.sidebarContainer.onmousedown=
+p,this.formatContainer.onselectstart=p,this.formatContainer.onmousedown=p,this.footerContainer.onselectstart=p,this.footerContainer.onmousedown=p,null!=this.tabContainer&&(this.tabContainer.onselectstart=p));!this.editor.chromeless||this.editor.editable?(b=function(a){if(null!=a){var b=mxEvent.getSource(a);if("A"==b.nodeName)for(;null!=b;){if("geHint"==b.className)return!0;b=b.parentNode}}return p(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,
"contextmenu",b):this.diagramContainer.oncontextmenu=b):d.panningHandler.usePopupTrigger=!1;d.init(this.diagramContainer);mxClient.IS_SVG&&null!=d.view.getDrawPane()&&(b=d.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=d.graphHandler){var q=d.graphHandler.start;d.graphHandler.start=function(){null!=z.hoverIcons&&z.hoverIcons.reset();q.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,
-function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-b.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var t=!1,u=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,b){return t||u.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32!=a.which||d.isEditing()?
-mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0):(t=!0,this.hoverIcons.reset(),d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(a)!=d.container||mxEvent.consume(a))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){d.container.style.cursor="";t=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var r=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(a){return r.apply(this,
-arguments)||t||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var x=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return x.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var y=d.isZoomWheelEvent;
-d.isZoomWheelEvent=function(){return t||y.apply(this,arguments)};var w=!1,F=null,H=null,C=null,D=mxUtils.bind(this,function(){if(null!=this.toolbar&&w!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==C)this.toolbar.createTextToolbar();else{for(var c=0;c<C.length;c++)this.toolbar.container.appendChild(C[c]);
-this.toolbar.fontMenu=F;this.toolbar.sizeMenu=H}w=d.cellEditor.isContentEditing();F=a;H=e;C=b}}),z=this,G=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){G.apply(this,arguments);D();if(d.cellEditor.isContentEditing()){var a=!1,b=function(){a||(a=!0,window.setTimeout(function(){var b=d.getSelectedEditingElement();null!=b&&(b=mxUtils.getCurrentStyle(b),null!=b&&null!=z.toolbar&&(z.toolbar.setFontName(Graph.stripQuotes(b.fontFamily)),z.toolbar.setFontSize(parseInt(b.fontSize))));a=!1},
-0))};mxEvent.addListener(d.cellEditor.textarea,"input",b);mxEvent.addListener(d.cellEditor.textarea,"touchend",b);mxEvent.addListener(d.cellEditor.textarea,"mouseup",b);mxEvent.addListener(d.cellEditor.textarea,"keyup",b);b()}};var J=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(a,b){try{J.apply(this,arguments),D()}catch(P){z.handleError(P)}};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(O){}var L=
+function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-b.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var r=!1,u=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,b){return r||u.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32!=a.which||d.isEditing()?
+mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0):(r=!0,this.hoverIcons.reset(),d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(a)!=d.container||mxEvent.consume(a))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){d.container.style.cursor="";r=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var t=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(a){return t.apply(this,
+arguments)||r||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var w=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return w.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var x=d.isZoomWheelEvent;
+d.isZoomWheelEvent=function(){return r||x.apply(this,arguments)};var y=!1,F=null,H=null,C=null,E=mxUtils.bind(this,function(){if(null!=this.toolbar&&y!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==C)this.toolbar.createTextToolbar();else{for(var c=0;c<C.length;c++)this.toolbar.container.appendChild(C[c]);
+this.toolbar.fontMenu=F;this.toolbar.sizeMenu=H}y=d.cellEditor.isContentEditing();F=a;H=e;C=b}}),z=this,G=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){G.apply(this,arguments);E();if(d.cellEditor.isContentEditing()){var a=!1,b=function(){a||(a=!0,window.setTimeout(function(){var b=d.getSelectedEditingElement();null!=b&&(b=mxUtils.getCurrentStyle(b),null!=b&&null!=z.toolbar&&(z.toolbar.setFontName(Graph.stripQuotes(b.fontFamily)),z.toolbar.setFontSize(parseInt(b.fontSize))));a=!1},
+0))};mxEvent.addListener(d.cellEditor.textarea,"input",b);mxEvent.addListener(d.cellEditor.textarea,"touchend",b);mxEvent.addListener(d.cellEditor.textarea,"mouseup",b);mxEvent.addListener(d.cellEditor.textarea,"keyup",b);b()}};var J=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(a,b){try{J.apply(this,arguments),E()}catch(P){z.handleError(P)}};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(M){}var L=
d.fireMouseEvent;d.fireMouseEvent=function(a,b,d){a==mxEvent.MOUSE_DOWN&&this.container.focus();L.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,d){this.menus.createPopupMenu(a,b,d)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};d.connectionHandler.addListener(mxEvent.CONNECT,
function(a,b){var e=[b.getProperty("cell")];b.getProperty("terminalInserted")&&(e.push(b.getProperty("terminal")),window.setTimeout(function(){null!=z.hoverIcons&&z.hoverIcons.update(d.view.getState(e[e.length-1]))},0));n(e)});this.addListener("styleChanged",mxUtils.bind(this,function(a,b){var c=b.getProperty("cells"),f=!1,k=!1;if(0<c.length)for(var m=0;m<c.length&&(f=d.getModel().isVertex(c[m])||f,!(k=d.getModel().isEdge(c[m])||k)||!f);m++);else k=f=!0;for(var c=b.getProperty("keys"),n=b.getProperty("values"),
m=0;m<c.length;m++){var p=0<=mxUtils.indexOf(h,c[m]);if("strokeColor"!=c[m]||null!=n[m]&&"none"!=n[m])if(0<=mxUtils.indexOf(l,c[m]))k||0<=mxUtils.indexOf(g,c[m])?null==n[m]?delete d.currentEdgeStyle[c[m]]:d.currentEdgeStyle[c[m]]=n[m]:f&&0<=mxUtils.indexOf(e,c[m])&&(null==n[m]?delete d.currentVertexStyle[c[m]]:d.currentVertexStyle[c[m]]=n[m]);else if(0<=mxUtils.indexOf(e,c[m])){if(f||p)null==n[m]?delete d.currentVertexStyle[c[m]]:d.currentVertexStyle[c[m]]=n[m];if(k||p||0<=mxUtils.indexOf(g,c[m]))null==
@@ -2245,43 +2245,43 @@ EditorUi.prototype.getCssClassForMarker=function(a,b,c,d){return"flexArrow"==b?n
c==mxConstants.ARROW_DIAMOND_THIN?"1"==d?"geSprite geSprite-"+a+"thindiamond":"geSprite geSprite-"+a+"thindiamondtrans":"openAsync"==c?"geSprite geSprite-"+a+"openasync":"dash"==c?"geSprite geSprite-"+a+"dash":"cross"==c?"geSprite geSprite-"+a+"cross":"async"==c?"1"==d?"geSprite geSprite-"+a+"async":"geSprite geSprite-"+a+"asynctrans":"circle"==c||"circlePlus"==c?"1"==d||"circle"==c?"geSprite geSprite-"+a+"circle":"geSprite geSprite-"+a+"circleplus":"ERone"==c?"geSprite geSprite-"+a+"erone":"ERmandOne"==
c?"geSprite geSprite-"+a+"eronetoone":"ERmany"==c?"geSprite geSprite-"+a+"ermany":"ERoneToMany"==c?"geSprite geSprite-"+a+"eronetomany":"ERzeroToOne"==c?"geSprite geSprite-"+a+"eroneopt":"ERzeroToMany"==c?"geSprite geSprite-"+a+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null};
EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,b=this.actions.get("paste"),c=this.actions.get("pasteHere");b.setEnabled(this.editor.graph.cellEditor.isContentEditing()||(!mxClient.IS_FF&&null!=navigator.clipboard||!mxClipboard.isEmpty())&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));c.setEnabled(b.isEnabled())};
-EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(b){var d=null;if(b.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var d=d||b.getSelectionCells(),d=b.getExportableCells(b.model.getTopmostCells(d)),c={},e=b.createCellLookup(d),f=b.cloneCells(d,null,c),m=new mxGraphModel,n=m.getChildAt(m.getRoot(),
-0),p=0;p<f.length;p++){m.add(n,f[p]);var q=b.view.getState(d[p]);if(null!=q){var t=b.getCellGeometry(f[p]);null!=t&&t.relative&&!m.isEdge(d[p])&&null==e[mxObjectIdentity.get(m.getParent(d[p]))]&&(t.offset=null,t.relative=!1,t.x=q.x/q.view.scale-q.view.translate.x,t.y=q.y/q.view.scale-q.view.translate.y)}}b.updateCustomLinks(b.createCellMapping(c,e),f);mxClipboard.insertCount=1;mxClipboard.setCells(f)}a.updatePasteActionStates();return d};var c=mxClipboard.paste;mxClipboard.paste=function(b){var d=
+EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(b){var d=null;if(b.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var d=d||b.getSelectionCells(),d=b.getExportableCells(b.model.getTopmostCells(d)),e={},c=b.createCellLookup(d),f=b.cloneCells(d,null,e),m=new mxGraphModel,n=m.getChildAt(m.getRoot(),
+0),p=0;p<f.length;p++){m.add(n,f[p]);var q=b.view.getState(d[p]);if(null!=q){var r=b.getCellGeometry(f[p]);null!=r&&r.relative&&!m.isEdge(d[p])&&null==c[mxObjectIdentity.get(m.getParent(d[p]))]&&(r.offset=null,r.relative=!1,r.x=q.x/q.view.scale-q.view.translate.x,r.y=q.y/q.view.scale-q.view.translate.y)}}b.updateCustomLinks(b.createCellMapping(e,c),f);mxClipboard.insertCount=1;mxClipboard.setCells(f)}a.updatePasteActionStates();return d};var c=mxClipboard.paste;mxClipboard.paste=function(b){var d=
null;b.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):d=c.apply(this,arguments);a.updatePasteActionStates();return d};var d=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){d.apply(this,arguments);a.updatePasteActionStates()};var f=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,d){f.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),b=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,
-this.scale*a.height*b.height)};a.getPreferredPageSize=function(a,b,d){a=this.getPageLayout();b=this.getPageSize();return new mxRectangle(0,0,a.width*b.width,a.height*b.height)};var b=null,c=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(b,d,c,e){if(null!=a.container&&!a.isViewer()){c=null!=c?c:0;e=null!=e?e:0;var f=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),l=mxUtils.hasScrollbars(a.container),h=a.view.translate,k=a.view.scale,g=mxRectangle.fromRectangle(f);
+this.scale*a.height*b.height)};a.getPreferredPageSize=function(a,b,d){a=this.getPageLayout();b=this.getPageSize();return new mxRectangle(0,0,a.width*b.width,a.height*b.height)};var b=null,c=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(b,d,e,c){if(null!=a.container&&!a.isViewer()){e=null!=e?e:0;c=null!=c?c:0;var f=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),l=mxUtils.hasScrollbars(a.container),h=a.view.translate,k=a.view.scale,g=mxRectangle.fromRectangle(f);
g.x=g.x/k-h.x;g.y=g.y/k-h.y;g.width/=k;g.height/=k;var h=a.container.scrollTop,m=a.container.scrollLeft,n=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)n+=3;var p=a.container.offsetWidth-n,n=a.container.offsetHeight-n;b=b?Math.max(.3,Math.min(d||1,p/g.width)):k;d=(p-b*g.width)/2/b;var q=0==this.lightboxVerticalDivider?0:(n-b*g.height)/this.lightboxVerticalDivider/b;l&&(d=Math.max(d,0),q=Math.max(q,0));if(l||f.width<p||f.height<n)a.view.scaleAndTranslate(b,Math.floor(d-
-g.x),Math.floor(q-g.y)),a.container.scrollTop=h*b/k,a.container.scrollLeft=m*b/k;else if(0!=c||0!=e)f=a.view.translate,a.view.setTranslate(Math.floor(f.x+c/k),Math.floor(f.y+e/k))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
+g.x),Math.floor(q-g.y)),a.container.scrollTop=h*b/k,a.container.scrollLeft=m*b/k;else if(0!=e||0!=c)f=a.view.translate,a.view.setTranslate(Math.floor(f.x+e/k),Math.floor(f.y+c/k))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(b){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(b){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var f=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=a.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 e=mxUtils.bind(this,function(){var b=mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",e);e();var l=0,e=mxUtils.bind(this,function(a,b,d){l++;var c=document.createElement("span");c.style.paddingLeft="8px";c.style.paddingRight=
-"8px";c.style.cursor="pointer";mxEvent.addListener(c,"click",a);null!=d&&c.setAttribute("title",d);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);a.style.width="36px";a.style.filter="invert(100%)";c.appendChild(a);this.chromelessToolbar.appendChild(c);return c});null!=f.backBtn&&e(mxUtils.bind(this,function(a){window.location.href=f.backBtn.url;mxEvent.consume(a)}),Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var k=e(mxUtils.bind(this,
+"transition","opacity 600ms ease-in-out");var e=mxUtils.bind(this,function(){var b=mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",e);e();var l=0,e=mxUtils.bind(this,function(a,b,d){l++;var e=document.createElement("span");e.style.paddingLeft="8px";e.style.paddingRight=
+"8px";e.style.cursor="pointer";mxEvent.addListener(e,"click",a);null!=d&&e.setAttribute("title",d);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);a.style.width="36px";a.style.filter="invert(100%)";e.appendChild(a);this.chromelessToolbar.appendChild(e);return e});null!=f.backBtn&&e(mxUtils.bind(this,function(a){window.location.href=f.backBtn.url;mxEvent.consume(a)}),Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var k=e(mxUtils.bind(this,
function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousImage,mxResources.get("previousPage")),h=document.createElement("div");h.style.fontFamily=Editor.defaultHtmlFont;h.style.display="inline-block";h.style.verticalAlign="top";h.style.fontWeight="bold";h.style.marginTop="8px";h.style.fontSize="14px";h.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";this.chromelessToolbar.appendChild(h);var g=e(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();
mxEvent.consume(a)}),Editor.nextImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(h.innerHTML="",mxUtils.write(h,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});k.style.paddingLeft="0px";k.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var n=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",k.style.display=
"",h.style.display="inline-block"):(g.style.display="none",k.style.display="none",h.style.display="none");m()});this.editor.addListener("resetGraphView",n);this.editor.addListener("pageSelected",m)}e(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");
-e(mxUtils.bind(this,function(b){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(b)}),Editor.zoomFitImage,mxResources.get("fit"));var p=null,q=null,t=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),p=null);null!=q&&(window.clearTimeout(q),q=null);p=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);p=null;q=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display=
-"none";q=null}),600)}),a||200)}),u=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),p=null);null!=q&&(window.clearTimeout(q),q=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var r=e(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog(null,!0);mxEvent.addListener(this.layersDialog,
-"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var d=r.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily=Editor.defaultHtmlFont;this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.left=d.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
+e(mxUtils.bind(this,function(b){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(b)}),Editor.zoomFitImage,mxResources.get("fit"));var p=null,q=null,r=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),p=null);null!=q&&(window.clearTimeout(q),q=null);p=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);p=null;q=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display=
+"none";q=null}),600)}),a||200)}),u=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),p=null);null!=q&&(window.clearTimeout(q),q=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var t=e(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog(null,!0);mxEvent.addListener(this.layersDialog,
+"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var d=t.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily=Editor.defaultHtmlFont;this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.left=d.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
this.chromelessToolbar.offsetHeight+4+"px";mxClient.IS_IE||mxClient.IS_IE11?(this.layersDialog.style.backgroundColor="#ffffff",this.layersDialog.style.border="2px solid black",this.layersDialog.style.color="#000000"):(this.layersDialog.style.backgroundColor="#000000",this.layersDialog.style.color="#ffffff",mxUtils.setOpacity(this.layersDialog,80));d=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=d.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(b)}),
-Editor.layersImage,mxResources.get("layers")),x=a.getModel();x.addListener(mxEvent.CHANGE,function(){r.style.display=1<x.getChildCount(x.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(e);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||e(mxUtils.bind(this,function(b){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,
-"editWindow");mxEvent.consume(b)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(n=0;n<this.lightboxToolbarActions.length;n++){var y=this.lightboxToolbarActions[n];y.elem=e(y.fn,y.icon,y.tooltip)}null!=f.refreshBtn&&e(mxUtils.bind(this,function(a){f.refreshBtn.url?window.location.href=f.refreshBtn.url:window.location.reload();mxEvent.consume(a)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=f.fullscreenBtn&&window.self!==window.top&&e(mxUtils.bind(this,
+Editor.layersImage,mxResources.get("layers")),w=a.getModel();w.addListener(mxEvent.CHANGE,function(){t.style.display=1<w.getChildCount(w.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(e);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||e(mxUtils.bind(this,function(b){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,
+"editWindow");mxEvent.consume(b)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(n=0;n<this.lightboxToolbarActions.length;n++){var x=this.lightboxToolbarActions[n];x.elem=e(x.fn,x.icon,x.tooltip)}null!=f.refreshBtn&&e(mxUtils.bind(this,function(a){f.refreshBtn.url?window.location.href=f.refreshBtn.url:window.location.reload();mxEvent.consume(a)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=f.fullscreenBtn&&window.self!==window.top&&e(mxUtils.bind(this,
function(b){f.fullscreenBtn.url?a.openLink(f.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(b)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(f.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&e(mxUtils.bind(this,function(a){"1"==urlParams.close||f.closeBtn?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display=
-"none";a.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||u(30),t())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",
-mxUtils.bind(this,function(b){a.tooltipHandler.resetTimer();a.tooltipHandler.hideTooltip();mxEvent.isShiftDown(b)?t():u(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?t():u(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||u(30)}));var w=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,d){this.startX=
-d.getGraphX();this.startY=d.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,d){mxEvent.isTouchEvent(d.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<w&&Math.abs(this.scrollTop-a.container.scrollTop)<w&&Math.abs(this.startX-d.getGraphX())<w&&Math.abs(this.startY-d.getGraphY())<w&&(0<parseFloat(c.chromelessToolbar.style.opacity||0)?t():u(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var F=
-a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}F.apply(this,arguments)};if(!a.isViewer()){var H=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),d=this.getPagePadding(),c=this.getPageSize(),e=Math.ceil(2*
-d.x+b.width*c.width),f=Math.ceil(2*d.y+b.height*c.height),l=a.minimumGraphSize;if(null==l||l.width!=e||l.height!=f)a.minimumGraphSize=new mxRectangle(0,0,e,f);e=d.x-b.x*c.width;d=d.y-b.y*c.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==d?H.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,c=a.view.translate.y,a.view.setTranslate(e,d),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((d-
-c)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var C=a.view.getBackgroundPane(),D=a.view.getDrawPane();a.cumulativeZoomFactor=1;var z=null,G=null,J=null,L=null,O=null,K=function(d){null!=z&&window.clearTimeout(z);window.setTimeout(function(){if(!a.isMouseDown||L)z=window.setTimeout(mxUtils.bind(this,function(){a.isFastZoomEnabled()&&(null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,
-"transform-origin",null),mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform",null)),D.style.transformOrigin="",C.style.transformOrigin="",mxClient.IS_SF?(D.style.transform="scale(1)",C.style.transform="scale(1)",window.setTimeout(function(){D.style.transform="";C.style.transform=""},0)):(D.style.transform="",C.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var d=new mxPoint(a.container.scrollLeft,a.container.scrollTop),
-e=mxUtils.getOffset(a.container),f=a.view.scale,l=0,h=0;null!=G&&(l=a.container.offsetWidth/2-G.x+e.x,h=a.container.offsetHeight/2-G.y+e.y);a.zoom(a.cumulativeZoomFactor,null,20);a.view.scale!=f&&(null!=J&&(l+=d.x-J.x,h+=d.y-J.y),null!=b&&c.chromelessResize(!1,null,l*(a.cumulativeZoomFactor-1),h*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==l&&0==h||(a.container.scrollLeft-=l*(a.cumulativeZoomFactor-1),a.container.scrollTop-=h*(a.cumulativeZoomFactor-1)));null!=O&&D.setAttribute("filter",
-O);a.cumulativeZoomFactor=1;O=L=G=J=z=null}),null!=d?d:a.isFastZoomEnabled()?c.wheelZoomDelay:c.lazyZoomDelay)},0)};a.lazyZoom=function(b,d,e,f){f=null!=f?f:this.zoomFactor;(d=d||!a.scrollbars)&&(G=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));b?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=f,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/=f,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;a.isFastZoomEnabled()&&(null==O&&""!=D.getAttribute("filter")&&(O=D.getAttribute("filter"),
-D.removeAttribute("filter")),J=new mxPoint(a.container.scrollLeft,a.container.scrollTop),b=d||null==G?a.container.scrollLeft+a.container.clientWidth/2:G.x+a.container.scrollLeft-a.container.offsetLeft,f=d||null==G?a.container.scrollTop+a.container.clientHeight/2:G.y+a.container.scrollTop-a.container.offsetTop,D.style.transformOrigin=b+"px "+f+"px",D.style.transform="scale("+this.cumulativeZoomFactor+")",C.style.transformOrigin=b+"px "+f+"px",C.style.transform="scale("+this.cumulativeZoomFactor+")",
+"none";a.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||u(30),r())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",
+mxUtils.bind(this,function(b){a.tooltipHandler.resetTimer();a.tooltipHandler.hideTooltip();mxEvent.isShiftDown(b)?r():u(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?r():u(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||u(30)}));var y=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,d){this.startX=
+d.getGraphX();this.startY=d.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,d){mxEvent.isTouchEvent(d.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<y&&Math.abs(this.scrollTop-a.container.scrollTop)<y&&Math.abs(this.startX-d.getGraphX())<y&&Math.abs(this.startY-d.getGraphY())<y&&(0<parseFloat(c.chromelessToolbar.style.opacity||0)?r():u(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var F=
+a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}F.apply(this,arguments)};if(!a.isViewer()){var H=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),d=this.getPagePadding(),e=this.getPageSize(),c=Math.ceil(2*
+d.x+b.width*e.width),f=Math.ceil(2*d.y+b.height*e.height),l=a.minimumGraphSize;if(null==l||l.width!=c||l.height!=f)a.minimumGraphSize=new mxRectangle(0,0,c,f);c=d.x-b.x*e.width;d=d.y-b.y*e.height;this.autoTranslate||this.view.translate.x==c&&this.view.translate.y==d?H.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,e=a.view.translate.y,a.view.setTranslate(c,d),a.container.scrollLeft+=Math.round((c-b)*a.view.scale),a.container.scrollTop+=Math.round((d-
+e)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var C=a.view.getBackgroundPane(),E=a.view.getDrawPane();a.cumulativeZoomFactor=1;var z=null,G=null,J=null,L=null,M=null,K=function(d){null!=z&&window.clearTimeout(z);window.setTimeout(function(){if(!a.isMouseDown||L)z=window.setTimeout(mxUtils.bind(this,function(){a.isFastZoomEnabled()&&(null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,
+"transform-origin",null),mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform",null)),E.style.transformOrigin="",C.style.transformOrigin="",mxClient.IS_SF?(E.style.transform="scale(1)",C.style.transform="scale(1)",window.setTimeout(function(){E.style.transform="";C.style.transform=""},0)):(E.style.transform="",C.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var d=new mxPoint(a.container.scrollLeft,a.container.scrollTop),
+e=mxUtils.getOffset(a.container),f=a.view.scale,l=0,h=0;null!=G&&(l=a.container.offsetWidth/2-G.x+e.x,h=a.container.offsetHeight/2-G.y+e.y);a.zoom(a.cumulativeZoomFactor,null,20);a.view.scale!=f&&(null!=J&&(l+=d.x-J.x,h+=d.y-J.y),null!=b&&c.chromelessResize(!1,null,l*(a.cumulativeZoomFactor-1),h*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==l&&0==h||(a.container.scrollLeft-=l*(a.cumulativeZoomFactor-1),a.container.scrollTop-=h*(a.cumulativeZoomFactor-1)));null!=M&&E.setAttribute("filter",
+M);a.cumulativeZoomFactor=1;M=L=G=J=z=null}),null!=d?d:a.isFastZoomEnabled()?c.wheelZoomDelay:c.lazyZoomDelay)},0)};a.lazyZoom=function(b,d,e,f){f=null!=f?f:this.zoomFactor;(d=d||!a.scrollbars)&&(G=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));b?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=f,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/=f,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;a.isFastZoomEnabled()&&(null==M&&""!=E.getAttribute("filter")&&(M=E.getAttribute("filter"),
+E.removeAttribute("filter")),J=new mxPoint(a.container.scrollLeft,a.container.scrollTop),b=d||null==G?a.container.scrollLeft+a.container.clientWidth/2:G.x+a.container.scrollLeft-a.container.offsetLeft,f=d||null==G?a.container.scrollTop+a.container.clientHeight/2:G.y+a.container.scrollTop-a.container.offsetTop,E.style.transformOrigin=b+"px "+f+"px",E.style.transform="scale("+this.cumulativeZoomFactor+")",C.style.transformOrigin=b+"px "+f+"px",C.style.transform="scale("+this.cumulativeZoomFactor+")",
null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(b=a.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(b.style,"transform-origin",(d||null==G?a.container.clientWidth/2+a.container.scrollLeft-b.offsetLeft+"px":G.x+a.container.scrollLeft-b.offsetLeft-a.container.offsetLeft+"px")+" "+(d||null==G?a.container.clientHeight/2+a.container.scrollTop-b.offsetTop+"px":G.y+a.container.scrollTop-b.offsetTop-a.container.offsetTop+"px")),mxUtils.setPrefixedStyle(b.style,"transform",
-"scale("+this.cumulativeZoomFactor+")")),a.view.getDecoratorPane().style.opacity="0",a.view.getOverlayPane().style.opacity="0",null!=c.hoverIcons&&c.hoverIcons.reset());K(e)};mxEvent.addGestureListeners(a.container,function(a){null!=z&&window.clearTimeout(z)},null,function(b){1!=a.cumulativeZoomFactor&&K(0)});mxEvent.addListener(a.container,"scroll",function(b){null==z||a.isMouseDown||1==a.cumulativeZoomFactor||K(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,d,c,e,f){a.fireEvent(new mxEventObject("wheel"));
-if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&!c&&a.isScrollWheelEvent(b))c=a.view.getTranslate(),e=40/a.view.scale,mxEvent.isShiftDown(b)?a.view.setTranslate(c.x+(d?-e:e),c.y):a.view.setTranslate(c.x,c.y+(d?e:-e));else if(c||a.isZoomWheelEvent(b))for(var l=mxEvent.getSource(b);null!=l;){if(l==a.container)return a.tooltipHandler.hideTooltip(),G=null!=e&&null!=f?new mxPoint(e,f):new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),L=c,c=a.zoomFactor,null!=b.deltaY&&Math.round(b.deltaY)!=
-b.deltaY&&(c=1+Math.abs(b.deltaY)/20*(c-1)),a.lazyZoom(d,null,null,c),mxEvent.consume(b),!1;l=l.parentNode}}),a.container);a.panningHandler.zoomGraph=function(b){a.cumulativeZoomFactor=b.scale;a.lazyZoom(0<b.scale,!0);mxEvent.consume(b)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printImage,mxResources.get("print"))};
+"scale("+this.cumulativeZoomFactor+")")),a.view.getDecoratorPane().style.opacity="0",a.view.getOverlayPane().style.opacity="0",null!=c.hoverIcons&&c.hoverIcons.reset());K(e)};mxEvent.addGestureListeners(a.container,function(a){null!=z&&window.clearTimeout(z)},null,function(b){1!=a.cumulativeZoomFactor&&K(0)});mxEvent.addListener(a.container,"scroll",function(b){null==z||a.isMouseDown||1==a.cumulativeZoomFactor||K(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,d,e,c,f){a.fireEvent(new mxEventObject("wheel"));
+if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&!e&&a.isScrollWheelEvent(b))e=a.view.getTranslate(),c=40/a.view.scale,mxEvent.isShiftDown(b)?a.view.setTranslate(e.x+(d?-c:c),e.y):a.view.setTranslate(e.x,e.y+(d?c:-c));else if(e||a.isZoomWheelEvent(b))for(var l=mxEvent.getSource(b);null!=l;){if(l==a.container)return a.tooltipHandler.hideTooltip(),G=null!=c&&null!=f?new mxPoint(c,f):new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),L=e,e=a.zoomFactor,null!=b.deltaY&&40>Math.abs(b.deltaY)&&
+Math.round(b.deltaY)!=b.deltaY&&(e=1+Math.abs(b.deltaY)/20*(e-1)),a.lazyZoom(d,null,null,e),mxEvent.consume(b),!1;l=l.parentNode}}),a.container);a.panningHandler.zoomGraph=function(b){a.cumulativeZoomFactor=b.scale;a.lazyZoom(0<b.scale,!0);mxEvent.consume(b)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.isPagesEnabled=function(){return this.editor.editable||"1"!=urlParams["hide-pages"]};EditorUi.prototype.createTemporaryGraph=function(a){return Graph.createOffscreenGraph(a)};EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};
EditorUi.prototype.toggleFormatPanel=function(a){a=null!=a?a:0==this.formatWidth;null!=this.format&&(this.formatWidth=a?240:0,this.formatContainer.style.display=a?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var b=urlParams.border,c=60;null!=b&&(c=parseInt(b));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(c,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))};
@@ -2306,13 +2306,13 @@ EditorUi.prototype.setPageFormat=function(a,b){b=null!=b?b:"1"==urlParams.sketch
EditorUi.prototype.setPageScale=function(a){this.editor.graph.pageScale=a;this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct();this.fireEvent(new mxEventObject("pageScaleChanged"))};EditorUi.prototype.setGridColor=function(a){this.editor.graph.view.gridColor=a;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("gridColorChanged"))};
EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),b=this.actions.get("redo"),c=this.editor.undoManager,d=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());b.setEnabled(this.canRedo())});c.addListener(mxEvent.ADD,d);c.addListener(mxEvent.UNDO,d);c.addListener(mxEvent.REDO,d);c.addListener(mxEvent.CLEAR,d);var f=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){f.apply(this,arguments);d()};var e=this.editor.graph.cellEditor.stopEditing;
this.editor.graph.cellEditor.stopEditing=function(a,b){e.apply(this,arguments);d()};d()};
-EditorUi.prototype.updateActionStates=function(){for(var a=this.editor.graph,b=this.getSelectionState(),c=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()),d="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" "),f=0;f<d.length;f++)this.actions.get(d[f]).setEnabled(0<b.cells.length);this.actions.get("grid").setEnabled(!this.editor.chromeless||
-this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<b.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<b.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("copySize").setEnabled(1==a.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!a.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==b.cells.length);this.actions.get("sendBackward").setEnabled(1==
-b.cells.length);this.actions.get("rotation").setEnabled(1==b.vertices.length);this.actions.get("wordWrap").setEnabled(1==b.vertices.length);this.actions.get("autosize").setEnabled(1==b.vertices.length);this.actions.get("clearWaypoints").setEnabled(b.connections);this.actions.get("curved").setEnabled(0<b.edges.length);this.actions.get("turn").setEnabled(b.resizable);this.actions.get("group").setEnabled(!b.row&&!b.cell&&(1<b.cells.length||1==b.vertices.length&&0==a.model.getChildCount(b.cells[0])&&
-!a.isContainer(b.vertices[0])));this.actions.get("ungroup").setEnabled(!b.row&&!b.cell&&!b.table&&0<b.vertices.length&&(a.isContainer(b.vertices[0])||0<a.getModel().getChildCount(b.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==b.cells.length&&a.getModel().isVertex(a.getModel().getParent(b.cells[0])));this.actions.get("collapsible").setEnabled(1==b.vertices.length&&(0<a.model.getChildCount(b.vertices[0])||a.isContainer(b.vertices[0])));this.actions.get("exitGroup").setEnabled(null!=
-a.view.currentRoot);this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==b.cells.length&&a.isValidRoot(b.cells[0]));this.actions.get("editLink").setEnabled(1==b.cells.length);this.actions.get("openLink").setEnabled(1==b.cells.length&&null!=a.getLinkForCell(b.cells[0]));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("selectVertices").setEnabled(c);this.actions.get("selectEdges").setEnabled(c);this.actions.get("selectAll").setEnabled(c);
-this.actions.get("selectNone").setEnabled(c);d=1==b.vertices.length&&a.isCellFoldable(b.vertices[0]);this.actions.get("expand").setEnabled(d);this.actions.get("collapse").setEnabled(d);this.menus.get("navigation").setEnabled(0<b.cells.length||null!=a.view.currentRoot);this.menus.get("layout").setEnabled(c);this.menus.get("insert").setEnabled(c);this.menus.get("direction").setEnabled(b.unlocked&&1==b.vertices.length);this.menus.get("distribute").setEnabled(b.unlocked&&1<b.vertices.length);this.menus.get("align").setEnabled(b.unlocked&&
-1<b.vertices.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
+EditorUi.prototype.updateActionStates=function(){for(var a=this.editor.graph,b=this.getSelectionState(),c=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()),d="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded strokeColor sharp snapToGrid".split(" "),f=0;f<d.length;f++)this.actions.get(d[f]).setEnabled(0<b.cells.length);
+this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<b.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<b.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!a.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==b.cells.length);this.actions.get("sendBackward").setEnabled(1==
+b.cells.length);this.actions.get("rotation").setEnabled(1==b.vertices.length);this.actions.get("wordWrap").setEnabled(1==b.vertices.length);this.actions.get("autosize").setEnabled(1==b.vertices.length);this.actions.get("copySize").setEnabled(1==b.vertices.length);this.actions.get("clearWaypoints").setEnabled(b.connections);this.actions.get("curved").setEnabled(0<b.edges.length);this.actions.get("turn").setEnabled(b.resizable);this.actions.get("group").setEnabled(!b.row&&!b.cell&&(1<b.cells.length||
+1==b.vertices.length&&0==a.model.getChildCount(b.cells[0])&&!a.isContainer(b.vertices[0])));this.actions.get("ungroup").setEnabled(!b.row&&!b.cell&&!b.table&&0<b.vertices.length&&(a.isContainer(b.vertices[0])||0<a.getModel().getChildCount(b.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==b.cells.length&&a.getModel().isVertex(a.getModel().getParent(b.cells[0])));this.actions.get("collapsible").setEnabled(1==b.vertices.length&&(0<a.model.getChildCount(b.vertices[0])||a.isContainer(b.vertices[0])));
+this.actions.get("exitGroup").setEnabled(null!=a.view.currentRoot);this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==b.cells.length&&a.isValidRoot(b.cells[0]));this.actions.get("editLink").setEnabled(1==b.cells.length);this.actions.get("openLink").setEnabled(1==b.cells.length&&null!=a.getLinkForCell(b.cells[0]));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("selectVertices").setEnabled(c);this.actions.get("selectEdges").setEnabled(c);
+this.actions.get("selectAll").setEnabled(c);this.actions.get("selectNone").setEnabled(c);d=1==b.vertices.length&&a.isCellFoldable(b.vertices[0]);this.actions.get("expand").setEnabled(d);this.actions.get("collapse").setEnabled(d);this.menus.get("navigation").setEnabled(0<b.cells.length||null!=a.view.currentRoot);this.menus.get("layout").setEnabled(c);this.menus.get("insert").setEnabled(c);this.menus.get("direction").setEnabled(b.unlocked&&1==b.vertices.length);this.menus.get("distribute").setEnabled(b.unlocked&&
+1<b.vertices.length);this.menus.get("align").setEnabled(b.unlocked&&0<b.cells.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var b=this.container.clientWidth,c=this.container.clientHeight;this.container==document.body&&(b=document.body.clientWidth||document.documentElement.clientWidth,c=document.documentElement.clientHeight);var d=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&&(d=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var f=Math.max(0,Math.min(this.hsplitPosition,b-this.splitSize-
20)),b=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",b+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",b+=this.toolbarHeight);0<b&&(b+=1);var e=0;if(null!=this.sidebarFooterContainer){var l=this.footerHeight+d,e=Math.max(0,Math.min(c-b-l,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=f+"px";this.sidebarFooterContainer.style.height=e+"px";
this.sidebarFooterContainer.style.bottom=l+"px"}c=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=b+"px";this.sidebarContainer.style.width=f+"px";this.formatContainer.style.top=b+"px";this.formatContainer.style.width=c+"px";this.formatContainer.style.display=null!=this.format?"":"none";var l=this.getDiagramContainerOffset(),k=null!=this.hsplit.parentNode?f+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
@@ -2352,13 +2352,13 @@ EditorUi.prototype.showDataDialog=function(a){null!=a&&(a=new EditDataDialog(thi
EditorUi.prototype.showBackgroundImageDialog=function(a,b){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var c=mxUtils.prompt(mxResources.get("backgroundImage"),null!=b?b.src:"");null!=c&&0<c.length?(b=new Image,b.onload=function(){a(new mxImage(c,b.width,b.height),!1)},b.onerror=function(){a(null,!0);mxUtils.alert(mxResources.get("fileNotFound"))},b.src=c):a(null)};
EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,b,c){mxUtils.confirm(a)?null!=b&&b():null!=c&&c()};EditorUi.prototype.createOutline=function(a){var b=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){b.update(!1)});return b};
EditorUi.prototype.altShiftActions={67:"clearWaypoints",65:"connectionArrows",76:"editLink",80:"connectionPoints",84:"editTooltip",86:"pasteSize",88:"copySize",66:"copyData",69:"pasteData"};
-EditorUi.prototype.createKeyHandler=function(a){function b(a,b,c){if(!d.isSelectionEmpty()&&d.isEnabled())if(b=null!=b?b:1,c){d.getModel().beginUpdate();try{var e=d.getSelectionCells();for(c=0;c<e.length;c++)if(d.getModel().isVertex(e[c])&&d.isCellResizable(e[c])){var f=d.getCellGeometry(e[c]);null!=f&&(f=f.clone(),37==a?f.width=Math.max(0,f.width-b):38==a?f.height=Math.max(0,f.height-b):39==a?f.width+=b:40==a&&(f.height+=b),d.getModel().setGeometry(e[c],f))}}finally{d.getModel().endUpdate()}}else{var e=
-d.getSelectionCell(),f=d.model.getParent(e),h=d.getView().scale;c=null;1==d.getSelectionCount()&&d.model.isVertex(e)&&null!=d.layoutManager&&!d.isCellLocked(e)&&(c=d.layoutManager.getLayout(f));if(null!=c&&c.constructor==mxStackLayout)b=f.getIndex(e),37==a||38==a?d.model.add(f,e,Math.max(0,b-1)):39!=a&&40!=a||d.model.add(f,e,Math.min(d.model.getChildCount(f),b+1));else{var k=d.graphHandler;null!=k&&(null==k.first&&k.start(d.getSelectionCell(),0,0,d.getSelectionCells()),null!=k.first&&(f=e=0,37==a?
-e=-b:38==a?f=-b:39==a?e=b:40==a&&(f=b),k.currentDx+=e*h,k.currentDy+=f*h,k.checkPreview(),k.updatePreview()),null!=l&&window.clearTimeout(l),l=window.setTimeout(function(){if(null!=k.first){var a=k.roundLength(k.currentDx/h),b=k.roundLength(k.currentDy/h);k.moveCells(k.cells,a,b);k.reset()}},400))}}}var c=this,d=this.editor.graph,f=new mxKeyHandler(d),e=f.isEventIgnored;f.isEventIgnored=function(a){return!(mxEvent.isShiftDown(a)&&9==a.keyCode)&&(!this.isControlDown(a)||mxEvent.isShiftDown(a)||90!=
+EditorUi.prototype.createKeyHandler=function(a){function b(a,b,e){if(!d.isSelectionEmpty()&&d.isEnabled())if(b=null!=b?b:1,e){d.getModel().beginUpdate();try{var c=d.getSelectionCells();for(e=0;e<c.length;e++)if(d.getModel().isVertex(c[e])&&d.isCellResizable(c[e])){var f=d.getCellGeometry(c[e]);null!=f&&(f=f.clone(),37==a?f.width=Math.max(0,f.width-b):38==a?f.height=Math.max(0,f.height-b):39==a?f.width+=b:40==a&&(f.height+=b),d.getModel().setGeometry(c[e],f))}}finally{d.getModel().endUpdate()}}else{var c=
+d.getSelectionCell(),f=d.model.getParent(c),h=d.getView().scale;e=null;1==d.getSelectionCount()&&d.model.isVertex(c)&&null!=d.layoutManager&&!d.isCellLocked(c)&&(e=d.layoutManager.getLayout(f));if(null!=e&&e.constructor==mxStackLayout)b=f.getIndex(c),37==a||38==a?d.model.add(f,c,Math.max(0,b-1)):39!=a&&40!=a||d.model.add(f,c,Math.min(d.model.getChildCount(f),b+1));else{var k=d.graphHandler;null!=k&&(null==k.first&&k.start(d.getSelectionCell(),0,0,d.getSelectionCells()),null!=k.first&&(f=c=0,37==a?
+c=-b:38==a?f=-b:39==a?c=b:40==a&&(f=b),k.currentDx+=c*h,k.currentDy+=f*h,k.checkPreview(),k.updatePreview()),null!=l&&window.clearTimeout(l),l=window.setTimeout(function(){if(null!=k.first){var a=k.roundLength(k.currentDx/h),b=k.roundLength(k.currentDy/h);k.moveCells(k.cells,a,b);k.reset()}},400))}}}var c=this,d=this.editor.graph,f=new mxKeyHandler(d),e=f.isEventIgnored;f.isEventIgnored=function(a){return!(mxEvent.isShiftDown(a)&&9==a.keyCode)&&(!this.isControlDown(a)||mxEvent.isShiftDown(a)||90!=
a.keyCode&&89!=a.keyCode&&188!=a.keyCode&&190!=a.keyCode&&85!=a.keyCode)&&(66!=a.keyCode&&73!=a.keyCode||!this.isControlDown(a)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&e.apply(this,arguments)};f.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==c.dialogs||0==c.dialogs.length)};f.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var l=null,k={37:mxConstants.DIRECTION_WEST,
38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},h=f.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(d.isEnabled()){if(mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){var e=c.actions.get(c.altShiftActions[a.keyCode]);if(null!=e)return e.funct}if(null!=k[a.keyCode]&&!d.isSelectionEmpty())if(!this.isControlDown(a)&&mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(d.model.isVertex(d.getSelectionCell()))return function(){var b=d.connectVertex(d.getSelectionCell(),
k[a.keyCode],d.defaultEdgeLength,a,!0);null!=b&&0<b.length&&(1==b.length&&d.model.isEdge(b[0])?d.setSelectionCell(d.model.getTerminal(b[0],!1)):d.setSelectionCell(b[b.length-1]),d.scrollCellToVisible(d.getSelectionCell()),null!=c.hoverIcons&&c.hoverIcons.update(d.view.getState(d.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null,!0)}:function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null)}}return h.apply(this,arguments)};f.bindAction=
-mxUtils.bind(this,function(a,b,d,c){var e=this.actions.get(d);null!=e&&(d=function(){e.isEnabled()&&e.funct()},b?c?f.bindControlShiftKey(a,d):f.bindControlKey(a,d):c?f.bindShiftKey(a,d):f.bindKey(a,d))});var g=this,m=f.escape;f.escape=function(a){m.apply(this,arguments)};f.enter=function(){};f.bindControlShiftKey(36,function(){d.exitGroup()});f.bindControlShiftKey(35,function(){d.enterGroup()});f.bindShiftKey(36,function(){d.home()});f.bindKey(35,function(){d.refresh()});f.bindAction(107,!0,"zoomIn");
+mxUtils.bind(this,function(a,b,d,e){var c=this.actions.get(d);null!=c&&(d=function(){c.isEnabled()&&c.funct()},b?e?f.bindControlShiftKey(a,d):f.bindControlKey(a,d):e?f.bindShiftKey(a,d):f.bindKey(a,d))});var g=this,m=f.escape;f.escape=function(a){m.apply(this,arguments)};f.enter=function(){};f.bindControlShiftKey(36,function(){d.exitGroup()});f.bindControlShiftKey(35,function(){d.enterGroup()});f.bindShiftKey(36,function(){d.home()});f.bindKey(35,function(){d.refresh()});f.bindAction(107,!0,"zoomIn");
f.bindAction(109,!0,"zoomOut");f.bindAction(80,!0,"print");f.bindAction(79,!0,"outline",!0);if(!this.editor.chromeless||this.editor.editable)f.bindControlKey(36,function(){d.isEnabled()&&d.foldCells(!0)}),f.bindControlKey(35,function(){d.isEnabled()&&d.foldCells(!1)}),f.bindControlKey(13,function(){g.ctrlEnter()}),f.bindAction(8,!1,"delete"),f.bindAction(8,!0,"deleteAll"),f.bindAction(8,!1,"deleteLabels",!0),f.bindAction(46,!1,"delete"),f.bindAction(46,!0,"deleteAll"),f.bindAction(46,!1,"deleteLabels",
!0),f.bindAction(36,!1,"resetView"),f.bindAction(72,!0,"fitWindow",!0),f.bindAction(74,!0,"fitPage"),f.bindAction(74,!0,"fitTwoPages",!0),f.bindAction(48,!0,"customZoom"),f.bindAction(82,!0,"turn"),f.bindAction(82,!0,"clearDefaultStyle",!0),f.bindAction(83,!0,"save"),f.bindAction(83,!0,"saveAs",!0),f.bindAction(65,!0,"selectAll"),f.bindAction(65,!0,"selectNone",!0),f.bindAction(73,!0,"selectVertices",!0),f.bindAction(69,!0,"selectEdges",!0),f.bindAction(69,!0,"editStyle"),f.bindAction(66,!0,"bold"),
f.bindAction(66,!0,"toBack",!0),f.bindAction(70,!0,"toFront",!0),f.bindAction(68,!0,"duplicate"),f.bindAction(68,!0,"setAsDefaultStyle",!0),f.bindAction(90,!0,"undo"),f.bindAction(89,!0,"autosize",!0),f.bindAction(88,!0,"cut"),f.bindAction(67,!0,"copy"),f.bindAction(86,!0,"paste"),f.bindAction(71,!0,"group"),f.bindAction(77,!0,"editData"),f.bindAction(71,!0,"grid",!0),f.bindAction(73,!0,"italic"),f.bindAction(76,!0,"lockUnlock"),f.bindAction(76,!0,"layers",!0),f.bindAction(80,!0,"formatPanel",!0),
@@ -2402,9 +2402,9 @@ null,e)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for
Sidebar.prototype.addSearchPalette=function(a){var b=document.createElement("div");b.style.visibility="hidden";this.container.appendChild(b);var c=document.createElement("div");c.className="geSidebar";c.style.boxSizing="border-box";c.style.overflow="hidden";c.style.width="100%";c.style.padding="8px";c.style.paddingTop="14px";c.style.paddingBottom="0px";a||(c.style.display="none");var d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.textOverflow="clip";d.style.paddingBottom="8px";
d.style.cursor="default";var f=document.createElement("input");f.setAttribute("placeholder",mxResources.get("searchShapes"));f.setAttribute("type","text");f.style.fontSize="12px";f.style.overflow="hidden";f.style.boxSizing="border-box";f.style.border="solid 1px #d5d5d5";f.style.borderRadius="4px";f.style.width="100%";f.style.outline="none";f.style.padding="6px";f.style.paddingRight="20px";d.appendChild(f);var e=document.createElement("img");e.setAttribute("src",Sidebar.prototype.searchImage);e.setAttribute("title",
mxResources.get("search"));e.style.position="relative";e.style.left="-18px";e.style.top="1px";e.style.background="url('"+this.editorUi.editor.transparentImage+"')";var l;d.appendChild(e);c.appendChild(d);var k=document.createElement("center"),h=mxUtils.button(mxResources.get("moreResults"),function(){l()});h.style.display="none";h.style.lineHeight="normal";h.style.fontSize="12px";h.style.padding="6px 12px 6px 12px";h.style.marginTop="4px";h.style.marginBottom="8px";k.style.paddingTop="4px";k.style.paddingBottom=
-"4px";k.appendChild(h);c.appendChild(k);var g="",m=!1,n=!1,p=0,q={},t=12,u=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var a=c.firstChild;null!=a;){var b=a.nextSibling;a!=d&&a!=k&&a.parentNode.removeChild(a);a=b}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),h.style.display="none",g=f.value="",u());f.focus()});l=mxUtils.bind(this,
-function(){t=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=k.parentNode&&(g!=f.value&&(u(),g=f.value,q={},n=!1,p=0),!m&&!n)){h.setAttribute("disabled","true");h.style.display="";h.style.cursor="wait";h.innerHTML=mxResources.get("loading")+"...";m=!0;var a={};this.currentSearch=a;this.searchEntries(g,t,p,mxUtils.bind(this,function(b,d,e,f){if(this.currentSearch==a){b=null!=b?b:[];m=!1;p++;this.insertSearchHint(c,g,t,p,b,d,e,f);
-0==b.length&&1==p&&(g="");null!=k.parentNode&&k.parentNode.removeChild(k);for(d=0;d<b.length;d++)mxUtils.bind(this,function(a){try{var b=a();null==q[b.innerHTML]?(q[b.innerHTML]=null!=a.parentLibraries?a.parentLibraries.slice():[],c.appendChild(b)):null!=a.parentLibraries&&(q[b.innerHTML]=q[b.innerHTML].concat(a.parentLibraries));mxEvent.addGestureListeners(b,null,null,mxUtils.bind(this,function(a){var d=q[b.innerHTML];mxEvent.isPopupTrigger(a)&&this.showPopupMenuForEntry(b,d,a)}));mxEvent.disableContextMenu(b)}catch(D){}})(b[d]);
+"4px";k.appendChild(h);c.appendChild(k);var g="",m=!1,n=!1,p=0,q={},r=12,u=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var a=c.firstChild;null!=a;){var b=a.nextSibling;a!=d&&a!=k&&a.parentNode.removeChild(a);a=b}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),h.style.display="none",g=f.value="",u());f.focus()});l=mxUtils.bind(this,
+function(){r=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=k.parentNode&&(g!=f.value&&(u(),g=f.value,q={},n=!1,p=0),!m&&!n)){h.setAttribute("disabled","true");h.style.display="";h.style.cursor="wait";h.innerHTML=mxResources.get("loading")+"...";m=!0;var a={};this.currentSearch=a;this.searchEntries(g,r,p,mxUtils.bind(this,function(b,d,e,f){if(this.currentSearch==a){b=null!=b?b:[];m=!1;p++;this.insertSearchHint(c,g,r,p,b,d,e,f);
+0==b.length&&1==p&&(g="");null!=k.parentNode&&k.parentNode.removeChild(k);for(d=0;d<b.length;d++)mxUtils.bind(this,function(a){try{var b=a();null==q[b.innerHTML]?(q[b.innerHTML]=null!=a.parentLibraries?a.parentLibraries.slice():[],c.appendChild(b)):null!=a.parentLibraries&&(q[b.innerHTML]=q[b.innerHTML].concat(a.parentLibraries));mxEvent.addGestureListeners(b,null,null,mxUtils.bind(this,function(a){var d=q[b.innerHTML];mxEvent.isPopupTrigger(a)&&this.showPopupMenuForEntry(b,d,a)}));mxEvent.disableContextMenu(b)}catch(E){}})(b[d]);
e?(h.removeAttribute("disabled"),h.innerHTML=mxResources.get("moreResults")):(h.innerHTML=mxResources.get("reset"),h.style.display="none",n=!0);h.style.cursor="";c.appendChild(k)}}),mxUtils.bind(this,function(){h.style.cursor=""}))}}else u(),g=f.value="",q={},h.style.display="none",n=!1,f.focus()});this.searchShapes=function(a){f.value=a;l()};mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(l(),mxEvent.consume(a))}));mxEvent.addListener(f,"keyup",mxUtils.bind(this,function(a){""==
f.value?(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search"))):(e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("reset")));""==f.value?(n=!0,h.style.display="none"):f.value!=g?(h.style.display="none",n=!1):m||(h.style.display=n?"none":"")}));mxEvent.addListener(f,"mousedown",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});mxEvent.addListener(f,"selectstart",function(a){a.stopPropagation&&
a.stopPropagation();a.cancelBubble=!0});a=document.createElement("div");a.appendChild(c);this.container.appendChild(a);this.palettes.search=[b,a]};
@@ -2528,13 +2528,13 @@ Sidebar.prototype.updateShapes=function(a,b){var c=this.editorUi.editor.graph,d=
0;k<b.length;k++){var h=b[k];if(c.getModel().isVertex(h)==c.getModel().isVertex(a)||c.getModel().isEdge(h)==c.getModel().isEdge(a)){var g=c.getCurrentCellStyle(b[k]);c.getModel().setStyle(h,e);if("1"==mxUtils.getValue(g,"composite","0"))for(var m=c.model.getChildCount(h);0<=m;m--)c.model.remove(c.model.getChildAt(h,m));"umlLifeline"==g[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=d[mxConstants.STYLE_SHAPE]&&(c.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[h]),c.setCellStyles("participant",d[mxConstants.STYLE_SHAPE],
[h]));for(m=0;m<l.length;m++){var n=g[l[m]];null!=n&&c.setCellStyles(l[m],n,[h])}f.push(h)}}}finally{c.model.endUpdate()}return f};
Sidebar.prototype.createDropHandler=function(a,b,c,d){c=null!=c?c:!0;return mxUtils.bind(this,function(f,e,l,k,h,g){for(g=g?null:mxEvent.isTouchEvent(e)||mxEvent.isPenEvent(e)?document.elementFromPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)):mxEvent.getSource(e);null!=g&&g!=this.container;)g=g.parentNode;if(null==g&&f.isEnabled()){a=f.getImportableCells(a);if(0<a.length){f.stopEditing();g=null==l||mxEvent.isAltDown(e)?!1:f.isValidDropTarget(l,a,e);var m=null;null==l||g||(l=null);if(!f.isCellLocked(l||
-f.getDefaultParent())){f.model.beginUpdate();try{k=Math.round(k);h=Math.round(h);if(b&&f.isSplitTarget(l,a,e)){var n=f.view.scale,p=f.view.translate,q=(k+p.x)*n,t=(h+p.y)*n,u=f.cloneCells(a);f.splitEdge(l,u,null,k-d.width/2,h-d.height/2,q,t);m=u}else 0<a.length&&(m=f.importCells(a,k,h,l));if(null!=f.layoutManager){var r=f.layoutManager.getLayout(l);if(null!=r)for(n=f.view.scale,p=f.view.translate,q=(k+p.x)*n,t=(h+p.y)*n,l=0;l<m.length;l++)r.moveCell(m[l],q,t)}!c||null!=e&&mxEvent.isShiftDown(e)||
-f.fireEvent(new mxEventObject("cellsInserted","cells",m))}catch(x){this.editorUi.handleError(x)}finally{f.model.endUpdate()}null!=m&&0<m.length&&(f.scrollCellToVisible(m[0]),f.setSelectionCells(m));f.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=m&&1==m.length&&window.setTimeout(function(){f.startEditing(m[0])},0)}}mxEvent.consume(e)}})};
+f.getDefaultParent())){f.model.beginUpdate();try{k=Math.round(k);h=Math.round(h);if(b&&f.isSplitTarget(l,a,e)){var n=f.view.scale,p=f.view.translate,q=(k+p.x)*n,r=(h+p.y)*n,u=f.cloneCells(a);f.splitEdge(l,u,null,k-d.width/2,h-d.height/2,q,r);m=u}else 0<a.length&&(m=f.importCells(a,k,h,l));if(null!=f.layoutManager){var t=f.layoutManager.getLayout(l);if(null!=t)for(n=f.view.scale,p=f.view.translate,q=(k+p.x)*n,r=(h+p.y)*n,l=0;l<m.length;l++)t.moveCell(m[l],q,r)}!c||null!=e&&mxEvent.isShiftDown(e)||
+f.fireEvent(new mxEventObject("cellsInserted","cells",m))}catch(w){this.editorUi.handleError(w)}finally{f.model.endUpdate()}null!=m&&0<m.length&&(f.scrollCellToVisible(m[0]),f.setSelectionCells(m));f.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=m&&1==m.length&&window.setTimeout(function(){f.startEditing(m[0])},0)}}mxEvent.consume(e)}})};
Sidebar.prototype.createDragPreview=function(a,b){var c=document.createElement("div");c.className="geDragPreview";c.style.width=a+"px";c.style.height=b+"px";return c};
-Sidebar.prototype.dropAndConnect=function(a,b,c,d,f){var e=this.getDropAndConnectGeometry(a,b[d],c,b),l=[];if(null!=e){var k=this.editorUi.editor.graph,h=null;k.model.beginUpdate();try{var g=k.getCellGeometry(a),m=k.getCellGeometry(b[d]),n=k.model.getParent(a),p=!0;if(null!=k.layoutManager){var q=k.layoutManager.getLayout(n);null!=q&&q.constructor==mxStackLayout&&(p=!1)}var l=k.model.isEdge(a)?null:k.view.getState(n),t=q=0;if(null!=l){var u=l.origin,q=u.x,t=u.y,r=e.getTerminalPoint(!1);null!=r&&(r.x+=
-u.x,r.y+=u.y)}var x=!k.isTableRow(a)&&!k.isTableCell(a)&&(k.model.isEdge(a)||null!=g&&!g.relative&&p),y=k.getCellAt((e.x+q+k.view.translate.x)*k.view.scale,(e.y+t+k.view.translate.y)*k.view.scale,null,null,null,function(a,b,d){return!k.isContainer(a.cell)});if(null!=y&&y!=n)l=k.view.getState(y),null!=l&&(u=l.origin,n=y,x=!0,k.model.isEdge(a)||(e.x-=u.x-q,e.y-=u.y-t));else if(!p||k.isTableRow(a)||k.isTableCell(a))e.x+=q,e.y+=t;q=m.x;t=m.y;k.model.isEdge(b[d])&&(t=q=0);l=b=k.importCells(b,e.x-(x?q:
-0),e.y-(x?t:0),x?n:null);if(k.model.isEdge(a))k.model.setTerminal(a,b[d],c==mxConstants.DIRECTION_NORTH);else if(k.model.isEdge(b[d])){k.model.setTerminal(b[d],a,!0);var w=k.getCellGeometry(b[d]);w.points=null;if(null!=w.getTerminalPoint(!1))w.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(x&&k.model.isVertex(n)){var F=k.view.getState(n),u=F.cell!=k.view.currentRoot?F.origin:new mxPoint(0,0);k.cellsMoved(b,u.x,u.y,null,null,!0)}}else m=k.getCellGeometry(b[d]),q=e.x-Math.round(m.x),t=e.y-Math.round(m.y),
-e.x=Math.round(m.x),e.y=Math.round(m.y),k.model.setGeometry(b[d],e),k.cellsMoved(b,q,t,null,null,!0),l=b.slice(),h=1==l.length?l[0]:null,b.push(k.insertEdge(null,null,"",a,b[d],k.createCurrentEdgeStyle()));null!=f&&mxEvent.isShiftDown(f)||k.fireEvent(new mxEventObject("cellsInserted","cells",b))}catch(H){this.editorUi.handleError(H)}finally{k.model.endUpdate()}k.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=h&&window.setTimeout(function(){k.startEditing(h)},0)}return l};
+Sidebar.prototype.dropAndConnect=function(a,b,c,d,f){var e=this.getDropAndConnectGeometry(a,b[d],c,b),l=[];if(null!=e){var k=this.editorUi.editor.graph,h=null;k.model.beginUpdate();try{var g=k.getCellGeometry(a),m=k.getCellGeometry(b[d]),n=k.model.getParent(a),p=!0;if(null!=k.layoutManager){var q=k.layoutManager.getLayout(n);null!=q&&q.constructor==mxStackLayout&&(p=!1)}var l=k.model.isEdge(a)?null:k.view.getState(n),r=q=0;if(null!=l){var u=l.origin,q=u.x,r=u.y,t=e.getTerminalPoint(!1);null!=t&&(t.x+=
+u.x,t.y+=u.y)}var w=!k.isTableRow(a)&&!k.isTableCell(a)&&(k.model.isEdge(a)||null!=g&&!g.relative&&p),x=k.getCellAt((e.x+q+k.view.translate.x)*k.view.scale,(e.y+r+k.view.translate.y)*k.view.scale,null,null,null,function(a,b,d){return!k.isContainer(a.cell)});if(null!=x&&x!=n)l=k.view.getState(x),null!=l&&(u=l.origin,n=x,w=!0,k.model.isEdge(a)||(e.x-=u.x-q,e.y-=u.y-r));else if(!p||k.isTableRow(a)||k.isTableCell(a))e.x+=q,e.y+=r;q=m.x;r=m.y;k.model.isEdge(b[d])&&(r=q=0);l=b=k.importCells(b,e.x-(w?q:
+0),e.y-(w?r:0),w?n:null);if(k.model.isEdge(a))k.model.setTerminal(a,b[d],c==mxConstants.DIRECTION_NORTH);else if(k.model.isEdge(b[d])){k.model.setTerminal(b[d],a,!0);var y=k.getCellGeometry(b[d]);y.points=null;if(null!=y.getTerminalPoint(!1))y.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(w&&k.model.isVertex(n)){var F=k.view.getState(n),u=F.cell!=k.view.currentRoot?F.origin:new mxPoint(0,0);k.cellsMoved(b,u.x,u.y,null,null,!0)}}else m=k.getCellGeometry(b[d]),q=e.x-Math.round(m.x),r=e.y-Math.round(m.y),
+e.x=Math.round(m.x),e.y=Math.round(m.y),k.model.setGeometry(b[d],e),k.cellsMoved(b,q,r,null,null,!0),l=b.slice(),h=1==l.length?l[0]:null,b.push(k.insertEdge(null,null,"",a,b[d],k.createCurrentEdgeStyle()));null!=f&&mxEvent.isShiftDown(f)||k.fireEvent(new mxEventObject("cellsInserted","cells",b))}catch(H){this.editorUi.handleError(H)}finally{k.model.endUpdate()}k.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=h&&window.setTimeout(function(){k.startEditing(h)},0)}return l};
Sidebar.prototype.getDropAndConnectGeometry=function(a,b,c,d){var f=this.editorUi.editor.graph,e=f.view,l=1<d.length,k=f.getCellGeometry(a);d=f.getCellGeometry(b);null!=k&&null!=d&&(d=d.clone(),f.model.isEdge(a)?(a=f.view.getState(a),k=a.absolutePoints,b=k[0],f=k[k.length-1],c==mxConstants.DIRECTION_NORTH?(d.x=b.x/e.scale-e.translate.x-d.width/2,d.y=b.y/e.scale-e.translate.y-d.height/2):(d.x=f.x/e.scale-e.translate.x-d.width/2,d.y=f.y/e.scale-e.translate.y-d.height/2)):(k.relative&&(a=f.view.getState(a),
k=k.clone(),k.x=(a.x-e.translate.x)/e.scale,k.y=(a.y-e.translate.y)/e.scale),e=f.defaultEdgeLength,f.model.isEdge(b)&&null!=d.getTerminalPoint(!0)&&null!=d.getTerminalPoint(!1)?(b=d.getTerminalPoint(!0),f=d.getTerminalPoint(!1),e=f.x-b.x,b=f.y-b.y,e=Math.sqrt(e*e+b*b),d.x=k.getCenterX(),d.y=k.getCenterY(),d.width=1,d.height=1,c==mxConstants.DIRECTION_NORTH?(d.height=e,d.y=k.y-e,d.setTerminalPoint(new mxPoint(d.x,d.y),!1)):c==mxConstants.DIRECTION_EAST?(d.width=e,d.x=k.x+k.width,d.setTerminalPoint(new mxPoint(d.x+
d.width,d.y),!1)):c==mxConstants.DIRECTION_SOUTH?(d.height=e,d.y=k.y+k.height,d.setTerminalPoint(new mxPoint(d.x,d.y+d.height),!1)):c==mxConstants.DIRECTION_WEST&&(d.width=e,d.x=k.x-e,d.setTerminalPoint(new mxPoint(d.x,d.y),!1))):(!l&&45<d.width&&45<d.height&&45<k.width&&45<k.height&&(d.width*=k.height/d.height,d.height=k.height),d.x=k.x+k.width/2-d.width/2,d.y=k.y+k.height/2-d.height/2,c==mxConstants.DIRECTION_NORTH?d.y=d.y-k.height/2-d.height/2-e:c==mxConstants.DIRECTION_EAST?d.x=d.x+k.width/2+
@@ -2542,27 +2542,27 @@ d.width/2+e:c==mxConstants.DIRECTION_SOUTH?d.y=d.y+k.height/2+d.height/2+e:c==mx
2):c==mxConstants.DIRECTION_WEST&&(d.x-=k.getCenterX()+k.width/2,d.y-=k.getCenterY()))))));return d};Sidebar.prototype.isDropStyleEnabled=function(a,b){var c=!0;if(null!=b&&1==a.length){var d=this.graph.getCellStyle(a[b]);null!=d&&(c=mxUtils.getValue(d,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(d,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE)}return c};
Sidebar.prototype.isDropStyleTargetIgnored=function(a){return this.graph.isSwimlane(a.cell)||this.graph.isTableCell(a.cell)||this.graph.isTableRow(a.cell)||this.graph.isTable(a.cell)};
Sidebar.prototype.createDragSource=function(a,b,c,d,f){function e(a,b){var d;d=mxUtils.createImage(a.src);d.style.width=a.width+"px";d.style.height=a.height+"px";null!=b&&d.setAttribute("title",b);mxUtils.setOpacity(d,a==this.refreshTarget?30:20);d.style.position="absolute";d.style.cursor="crosshair";return d}function l(a,b,d,c){null!=c.parentNode&&(mxUtils.contains(d,a,b)?(mxUtils.setOpacity(c,100),K=c):mxUtils.setOpacity(c,c==z?30:20));return d}for(var k=this.editorUi,h=k.editor.graph,g=null,m=
-null,n=this,p=0;p<d.length&&(null==m&&h.model.isVertex(d[p])?m=p:null==g&&h.model.isEdge(d[p])&&null==h.model.getTerminal(d[p],!0)&&(g=p),null==m||null==g);p++);var q=this.isDropStyleEnabled(d,m),t=mxUtils.makeDraggable(a,h,mxUtils.bind(this,function(a,c,e,f,l){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=d&&null!=y&&K==z){var h=a.isCellSelected(y.cell)?a.getSelectionCells():[y.cell],h=this.updateShapes(a.model.isEdge(y.cell)?d[0]:d[m],h);a.setSelectionCells(h)}else null!=
-d&&null!=K&&null!=r&&K!=z?(h=a.model.isEdge(r.cell)||null==g?m:g,a.setSelectionCells(this.dropAndConnect(r.cell,d,O,h,c))):b.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),c,0,0,h.autoscroll,!0,!0);h.addListener(mxEvent.ESCAPE,function(a,b){t.isActive()&&t.reset()});var u=t.mouseDown;t.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||h.isCellLocked(h.getDefaultParent())||(h.stopEditing(),
-u.apply(this,arguments))};var r=null,x=null,y=null,w=!1,F=e(this.triangleUp,mxResources.get("connect")),H=e(this.triangleRight,mxResources.get("connect")),C=e(this.triangleDown,mxResources.get("connect")),D=e(this.triangleLeft,mxResources.get("connect")),z=e(this.refreshTarget,mxResources.get("replace")),G=null,J=e(this.roundDrop),L=e(this.roundDrop),O=mxConstants.DIRECTION_NORTH,K=null,P=t.createPreviewElement;t.createPreviewElement=function(a){var b=P.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents=
-"none");this.previewElementWidth=b.style.width;this.previewElementHeight=b.style.height;return b};var Y=t.dragEnter;t.dragEnter=function(a,b){null!=k.hoverIcons&&k.hoverIcons.setDisplay("none");Y.apply(this,arguments)};var ba=t.dragExit;t.dragExit=function(a,b){null!=k.hoverIcons&&k.hoverIcons.setDisplay("");ba.apply(this,arguments)};t.dragOver=function(a,b){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=K&&this.currentGuide.hide();if(null!=this.previewElement){var c=
-a.view;if(null!=y&&K==z)this.previewElement.style.display=a.model.isEdge(y.cell)?"none":"",this.previewElement.style.left=y.x+"px",this.previewElement.style.top=y.y+"px",this.previewElement.style.width=y.width+"px",this.previewElement.style.height=y.height+"px";else if(null!=r&&null!=K){null!=t.currentHighlight&&null!=t.currentHighlight.state&&t.currentHighlight.hide();var e=a.model.isEdge(r.cell)||null==g?m:g,l=n.getDropAndConnectGeometry(r.cell,d[e],O,d),h=a.model.isEdge(r.cell)?null:a.getCellGeometry(r.cell),
-k=a.getCellGeometry(d[e]),p=a.model.getParent(r.cell),q=c.translate.x*c.scale,u=c.translate.y*c.scale;null!=h&&!h.relative&&a.model.isVertex(p)&&p!=c.currentRoot&&(u=c.getState(p),q=u.x,u=u.y);h=k.x;k=k.y;a.model.isEdge(d[e])&&(k=h=0);this.previewElement.style.left=(l.x-h)*c.scale+q+"px";this.previewElement.style.top=(l.y-k)*c.scale+u+"px";1==d.length&&(this.previewElement.style.width=l.width*c.scale+"px",this.previewElement.style.height=l.height*c.scale+"px");this.previewElement.style.display=""}else null!=
-t.currentHighlight.state&&a.model.isEdge(t.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-f.width*c.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*c.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var M=(new Date).getTime(),R=0,V=null,Z=this.editorUi.editor.graph.getCellStyle(d[0]);
-t.getDropTarget=mxUtils.bind(this,function(a,b,c,e){var f=mxEvent.isAltDown(e)||null==d?null:a.getCellAt(b,c,null,null,null,function(b,d,c){return a.isContainer(b.cell)});if(null!=f&&!this.graph.isCellConnectable(f)&&!this.graph.model.isEdge(f)){var h=this.graph.getModel().getParent(f);this.graph.getModel().isVertex(h)&&this.graph.isCellConnectable(h)&&(f=h)}a.isCellLocked(f)&&(f=null);var k=a.view.getState(f),h=K=null;V!=k?(M=(new Date).getTime(),R=0,V=k,null!=this.updateThread&&window.clearTimeout(this.updateThread),
-null!=k&&(this.updateThread=window.setTimeout(function(){null==K&&(V=k,t.getDropTarget(a,b,c,e))},this.dropTargetDelay+10))):R=(new Date).getTime()-M;if(q&&2500>R&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!=mxUtils.getValue(Z,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,
-mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(Z,mxConstants.STYLE_SHAPE)||1500<R||a.model.isEdge(k.cell))&&R>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(k)&&(a.model.isVertex(k.cell)&&null!=m||a.model.isEdge(k.cell)&&a.model.isEdge(d[0]))){if(a.isCellEditable(k.cell)){y=k;var g=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),g=new mxRectangle(g.x-this.refreshTarget.width/2,g.y-this.refreshTarget.height/
-2,this.refreshTarget.width,this.refreshTarget.height);z.style.left=Math.floor(g.x)+"px";z.style.top=Math.floor(g.y)+"px";null==G&&(a.container.appendChild(z),G=z.parentNode);l(b,c,g,z)}}else null==y||!mxUtils.contains(y,b,c)||1500<R&&!mxEvent.isShiftDown(e)?(y=null,null!=G&&(z.parentNode.removeChild(z),G=null)):null!=y&&null!=G&&(g=a.model.isEdge(y.cell)?a.view.getPoint(y):new mxPoint(y.getCenterX(),y.getCenterY()),g=new mxRectangle(g.x-this.refreshTarget.width/2,g.y-this.refreshTarget.height/2,this.refreshTarget.width,
-this.refreshTarget.height),l(b,c,g,z));if(w&&null!=r&&!mxEvent.isAltDown(e)&&null==K){h=mxRectangle.fromRectangle(r);if(a.model.isEdge(r.cell)){var n=r.absolutePoints;null!=J.parentNode&&(g=n[0],h.add(l(b,c,new mxRectangle(g.x-this.roundDrop.width/2,g.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),J)));null!=L.parentNode&&(n=n[n.length-1],h.add(l(b,c,new mxRectangle(n.x-this.roundDrop.width/2,n.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else g=
-mxRectangle.fromRectangle(r),null!=r.shape&&null!=r.shape.boundingBox&&(g=mxRectangle.fromRectangle(r.shape.boundingBox)),g.grow(this.graph.tolerance),g.grow(HoverIcons.prototype.arrowSpacing),n=this.graph.selectionCellsHandler.getHandler(r.cell),null!=n&&(g.x-=n.horizontalOffset/2,g.y-=n.verticalOffset/2,g.width+=n.horizontalOffset,g.height+=n.verticalOffset,null!=n.rotationShape&&null!=n.rotationShape.node&&"hidden"!=n.rotationShape.node.style.visibility&&"none"!=n.rotationShape.node.style.display&&
-null!=n.rotationShape.boundingBox&&g.add(n.rotationShape.boundingBox)),h.add(l(b,c,new mxRectangle(r.getCenterX()-this.triangleUp.width/2,g.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),F)),h.add(l(b,c,new mxRectangle(g.x+g.width,r.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),H)),h.add(l(b,c,new mxRectangle(r.getCenterX()-this.triangleDown.width/2,g.y+g.height,this.triangleDown.width,this.triangleDown.height),C)),h.add(l(b,c,
-new mxRectangle(g.x-this.triangleLeft.width,r.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),D));null!=h&&h.grow(10)}O=mxConstants.DIRECTION_NORTH;K==H?O=mxConstants.DIRECTION_EAST:K==C||K==L?O=mxConstants.DIRECTION_SOUTH:K==D&&(O=mxConstants.DIRECTION_WEST);null!=y&&K==z&&(k=y);g=(null==m||a.isCellConnectable(d[m]))&&(a.model.isEdge(f)&&null!=m||a.model.isVertex(f)&&a.isCellConnectable(f));if(null!=r&&5E3<=R||r!=k&&(null==h||!mxUtils.contains(h,b,c)||500<
-R&&null==K&&g))if(w=!1,r=5E3>R&&R>this.dropTargetDelay||a.model.isEdge(f)?k:null,null!=r&&g){h=[J,L,F,H,C,D];for(g=0;g<h.length;g++)null!=h[g].parentNode&&h[g].parentNode.removeChild(h[g]);a.model.isEdge(f)?(n=k.absolutePoints,null!=n&&(g=n[0],n=n[n.length-1],h=a.tolerance,new mxRectangle(b-h,c-h,2*h,2*h),J.style.left=Math.floor(g.x-this.roundDrop.width/2)+"px",J.style.top=Math.floor(g.y-this.roundDrop.height/2)+"px",L.style.left=Math.floor(n.x-this.roundDrop.width/2)+"px",L.style.top=Math.floor(n.y-
+null,n=this,p=0;p<d.length&&(null==m&&h.model.isVertex(d[p])?m=p:null==g&&h.model.isEdge(d[p])&&null==h.model.getTerminal(d[p],!0)&&(g=p),null==m||null==g);p++);var q=this.isDropStyleEnabled(d,m),r=mxUtils.makeDraggable(a,h,mxUtils.bind(this,function(a,c,e,f,l){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=d&&null!=x&&K==z){var h=a.isCellSelected(x.cell)?a.getSelectionCells():[x.cell],h=this.updateShapes(a.model.isEdge(x.cell)?d[0]:d[m],h);a.setSelectionCells(h)}else null!=
+d&&null!=K&&null!=t&&K!=z?(h=a.model.isEdge(t.cell)||null==g?m:g,a.setSelectionCells(this.dropAndConnect(t.cell,d,M,h,c))):b.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),c,0,0,h.autoscroll,!0,!0);h.addListener(mxEvent.ESCAPE,function(a,b){r.isActive()&&r.reset()});var u=r.mouseDown;r.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||h.isCellLocked(h.getDefaultParent())||(h.stopEditing(),
+u.apply(this,arguments))};var t=null,w=null,x=null,y=!1,F=e(this.triangleUp,mxResources.get("connect")),H=e(this.triangleRight,mxResources.get("connect")),C=e(this.triangleDown,mxResources.get("connect")),E=e(this.triangleLeft,mxResources.get("connect")),z=e(this.refreshTarget,mxResources.get("replace")),G=null,J=e(this.roundDrop),L=e(this.roundDrop),M=mxConstants.DIRECTION_NORTH,K=null,P=r.createPreviewElement;r.createPreviewElement=function(a){var b=P.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents=
+"none");this.previewElementWidth=b.style.width;this.previewElementHeight=b.style.height;return b};var ba=r.dragEnter;r.dragEnter=function(a,b){null!=k.hoverIcons&&k.hoverIcons.setDisplay("none");ba.apply(this,arguments)};var Y=r.dragExit;r.dragExit=function(a,b){null!=k.hoverIcons&&k.hoverIcons.setDisplay("");Y.apply(this,arguments)};r.dragOver=function(a,b){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=K&&this.currentGuide.hide();if(null!=this.previewElement){var c=
+a.view;if(null!=x&&K==z)this.previewElement.style.display=a.model.isEdge(x.cell)?"none":"",this.previewElement.style.left=x.x+"px",this.previewElement.style.top=x.y+"px",this.previewElement.style.width=x.width+"px",this.previewElement.style.height=x.height+"px";else if(null!=t&&null!=K){null!=r.currentHighlight&&null!=r.currentHighlight.state&&r.currentHighlight.hide();var e=a.model.isEdge(t.cell)||null==g?m:g,l=n.getDropAndConnectGeometry(t.cell,d[e],M,d),h=a.model.isEdge(t.cell)?null:a.getCellGeometry(t.cell),
+k=a.getCellGeometry(d[e]),p=a.model.getParent(t.cell),q=c.translate.x*c.scale,u=c.translate.y*c.scale;null!=h&&!h.relative&&a.model.isVertex(p)&&p!=c.currentRoot&&(u=c.getState(p),q=u.x,u=u.y);h=k.x;k=k.y;a.model.isEdge(d[e])&&(k=h=0);this.previewElement.style.left=(l.x-h)*c.scale+q+"px";this.previewElement.style.top=(l.y-k)*c.scale+u+"px";1==d.length&&(this.previewElement.style.width=l.width*c.scale+"px",this.previewElement.style.height=l.height*c.scale+"px");this.previewElement.style.display=""}else null!=
+r.currentHighlight.state&&a.model.isEdge(r.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-f.width*c.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*c.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var N=(new Date).getTime(),R=0,V=null,Z=this.editorUi.editor.graph.getCellStyle(d[0]);
+r.getDropTarget=mxUtils.bind(this,function(a,b,c,e){var f=mxEvent.isAltDown(e)||null==d?null:a.getCellAt(b,c,null,null,null,function(b,d,c){return a.isContainer(b.cell)});if(null!=f&&!this.graph.isCellConnectable(f)&&!this.graph.model.isEdge(f)){var h=this.graph.getModel().getParent(f);this.graph.getModel().isVertex(h)&&this.graph.isCellConnectable(h)&&(f=h)}a.isCellLocked(f)&&(f=null);var k=a.view.getState(f),h=K=null;V!=k?(N=(new Date).getTime(),R=0,V=k,null!=this.updateThread&&window.clearTimeout(this.updateThread),
+null!=k&&(this.updateThread=window.setTimeout(function(){null==K&&(V=k,r.getDropTarget(a,b,c,e))},this.dropTargetDelay+10))):R=(new Date).getTime()-N;if(q&&2500>R&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!=mxUtils.getValue(Z,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,
+mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(Z,mxConstants.STYLE_SHAPE)||1500<R||a.model.isEdge(k.cell))&&R>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(k)&&(a.model.isVertex(k.cell)&&null!=m||a.model.isEdge(k.cell)&&a.model.isEdge(d[0]))){if(a.isCellEditable(k.cell)){x=k;var g=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),g=new mxRectangle(g.x-this.refreshTarget.width/2,g.y-this.refreshTarget.height/
+2,this.refreshTarget.width,this.refreshTarget.height);z.style.left=Math.floor(g.x)+"px";z.style.top=Math.floor(g.y)+"px";null==G&&(a.container.appendChild(z),G=z.parentNode);l(b,c,g,z)}}else null==x||!mxUtils.contains(x,b,c)||1500<R&&!mxEvent.isShiftDown(e)?(x=null,null!=G&&(z.parentNode.removeChild(z),G=null)):null!=x&&null!=G&&(g=a.model.isEdge(x.cell)?a.view.getPoint(x):new mxPoint(x.getCenterX(),x.getCenterY()),g=new mxRectangle(g.x-this.refreshTarget.width/2,g.y-this.refreshTarget.height/2,this.refreshTarget.width,
+this.refreshTarget.height),l(b,c,g,z));if(y&&null!=t&&!mxEvent.isAltDown(e)&&null==K){h=mxRectangle.fromRectangle(t);if(a.model.isEdge(t.cell)){var n=t.absolutePoints;null!=J.parentNode&&(g=n[0],h.add(l(b,c,new mxRectangle(g.x-this.roundDrop.width/2,g.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),J)));null!=L.parentNode&&(n=n[n.length-1],h.add(l(b,c,new mxRectangle(n.x-this.roundDrop.width/2,n.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else g=
+mxRectangle.fromRectangle(t),null!=t.shape&&null!=t.shape.boundingBox&&(g=mxRectangle.fromRectangle(t.shape.boundingBox)),g.grow(this.graph.tolerance),g.grow(HoverIcons.prototype.arrowSpacing),n=this.graph.selectionCellsHandler.getHandler(t.cell),null!=n&&(g.x-=n.horizontalOffset/2,g.y-=n.verticalOffset/2,g.width+=n.horizontalOffset,g.height+=n.verticalOffset,null!=n.rotationShape&&null!=n.rotationShape.node&&"hidden"!=n.rotationShape.node.style.visibility&&"none"!=n.rotationShape.node.style.display&&
+null!=n.rotationShape.boundingBox&&g.add(n.rotationShape.boundingBox)),h.add(l(b,c,new mxRectangle(t.getCenterX()-this.triangleUp.width/2,g.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),F)),h.add(l(b,c,new mxRectangle(g.x+g.width,t.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),H)),h.add(l(b,c,new mxRectangle(t.getCenterX()-this.triangleDown.width/2,g.y+g.height,this.triangleDown.width,this.triangleDown.height),C)),h.add(l(b,c,
+new mxRectangle(g.x-this.triangleLeft.width,t.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),E));null!=h&&h.grow(10)}M=mxConstants.DIRECTION_NORTH;K==H?M=mxConstants.DIRECTION_EAST:K==C||K==L?M=mxConstants.DIRECTION_SOUTH:K==E&&(M=mxConstants.DIRECTION_WEST);null!=x&&K==z&&(k=x);g=(null==m||a.isCellConnectable(d[m]))&&(a.model.isEdge(f)&&null!=m||a.model.isVertex(f)&&a.isCellConnectable(f));if(null!=t&&5E3<=R||t!=k&&(null==h||!mxUtils.contains(h,b,c)||500<
+R&&null==K&&g))if(y=!1,t=5E3>R&&R>this.dropTargetDelay||a.model.isEdge(f)?k:null,null!=t&&g){h=[J,L,F,H,C,E];for(g=0;g<h.length;g++)null!=h[g].parentNode&&h[g].parentNode.removeChild(h[g]);a.model.isEdge(f)?(n=k.absolutePoints,null!=n&&(g=n[0],n=n[n.length-1],h=a.tolerance,new mxRectangle(b-h,c-h,2*h,2*h),J.style.left=Math.floor(g.x-this.roundDrop.width/2)+"px",J.style.top=Math.floor(g.y-this.roundDrop.height/2)+"px",L.style.left=Math.floor(n.x-this.roundDrop.width/2)+"px",L.style.top=Math.floor(n.y-
this.roundDrop.height/2)+"px",null==a.model.getTerminal(f,!0)&&a.container.appendChild(J),null==a.model.getTerminal(f,!1)&&a.container.appendChild(L))):(g=mxRectangle.fromRectangle(k),null!=k.shape&&null!=k.shape.boundingBox&&(g=mxRectangle.fromRectangle(k.shape.boundingBox)),g.grow(this.graph.tolerance),g.grow(HoverIcons.prototype.arrowSpacing),n=this.graph.selectionCellsHandler.getHandler(k.cell),null!=n&&(g.x-=n.horizontalOffset/2,g.y-=n.verticalOffset/2,g.width+=n.horizontalOffset,g.height+=n.verticalOffset,
null!=n.rotationShape&&null!=n.rotationShape.node&&"hidden"!=n.rotationShape.node.style.visibility&&"none"!=n.rotationShape.node.style.display&&null!=n.rotationShape.boundingBox&&g.add(n.rotationShape.boundingBox)),F.style.left=Math.floor(k.getCenterX()-this.triangleUp.width/2)+"px",F.style.top=Math.floor(g.y-this.triangleUp.height)+"px",H.style.left=Math.floor(g.x+g.width)+"px",H.style.top=Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",C.style.left=F.style.left,C.style.top=Math.floor(g.y+
-g.height)+"px",D.style.left=Math.floor(g.x-this.triangleLeft.width)+"px",D.style.top=H.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(F),a.container.appendChild(C)),a.container.appendChild(H),a.container.appendChild(D));null!=k&&(x=a.selectionCellsHandler.getHandler(k.cell),null!=x&&null!=x.setHandlesVisible&&x.setHandlesVisible(!1));w=!0}else for(h=[J,L,F,H,C,D],g=0;g<h.length;g++)null!=h[g].parentNode&&h[g].parentNode.removeChild(h[g]);w||null==x||x.setHandlesVisible(!0);
-f=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=y&&K==z?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);h=a.getModel();if(null!=f&&(null!=K||!a.isSplitTarget(f,d,e))){for(;null!=f&&!a.isValidDropTarget(f,d,e)&&h.isVertex(h.getParent(f));)f=h.getParent(f);null!=f&&(a.view.currentRoot==f||!a.isValidRoot(f)&&0==a.getModel().getChildCount(f)||a.isCellLocked(f)||h.isEdge(f)||!a.isValidDropTarget(f,d,e))&&(f=null)}a.isCellLocked(f)&&(f=null);return f});t.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,
-arguments);for(var a=[J,L,z,F,H,C,D],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=r&&null!=x&&x.reset();K=G=y=r=x=null};return t};
+g.height)+"px",E.style.left=Math.floor(g.x-this.triangleLeft.width)+"px",E.style.top=H.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(F),a.container.appendChild(C)),a.container.appendChild(H),a.container.appendChild(E));null!=k&&(w=a.selectionCellsHandler.getHandler(k.cell),null!=w&&null!=w.setHandlesVisible&&w.setHandlesVisible(!1));y=!0}else for(h=[J,L,F,H,C,E],g=0;g<h.length;g++)null!=h[g].parentNode&&h[g].parentNode.removeChild(h[g]);y||null==w||w.setHandlesVisible(!0);
+f=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=x&&K==z?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);h=a.getModel();if(null!=f&&(null!=K||!a.isSplitTarget(f,d,e))){for(;null!=f&&!a.isValidDropTarget(f,d,e)&&h.isVertex(h.getParent(f));)f=h.getParent(f);null!=f&&(a.view.currentRoot==f||!a.isValidRoot(f)&&0==a.getModel().getChildCount(f)||a.isCellLocked(f)||h.isEdge(f)||!a.isValidDropTarget(f,d,e))&&(f=null)}a.isCellLocked(f)&&(f=null);return f});r.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,
+arguments);for(var a=[J,L,z,F,H,C,E],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=t&&null!=w&&w.reset();K=G=x=t=w=null};return r};
Sidebar.prototype.itemClicked=function(a,b,c,d){d=this.editorUi.editor.graph;d.container.focus();if(mxEvent.isAltDown(c)&&1==d.getSelectionCount()&&d.model.isVertex(d.getSelectionCell())){b=null;for(var f=0;f<a.length&&null==b;f++)d.model.isVertex(a[f])&&(b=f);null!=b&&(d.setSelectionCells(this.dropAndConnect(d.getSelectionCell(),a,mxEvent.isMetaDown(c)||mxEvent.isControlDown(c)?mxEvent.isShiftDown(c)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(c)?mxConstants.DIRECTION_EAST:
mxConstants.DIRECTION_SOUTH,b,c)),d.scrollCellToVisible(d.getSelectionCell()))}else mxEvent.isShiftDown(c)&&!d.isSelectionEmpty()?(c=d.getEditableCells(d.getSelectionCells()),this.updateShapes(a[0],c),d.scrollCellToVisible(c)):(a=mxEvent.isAltDown(c)?d.getFreeInsertPoint():d.getCenterInsertPoint(d.getBoundingBoxFromGeometry(a,!0)),b.drop(d,c,null,a.x,a.y,!0))};
Sidebar.prototype.addClickHandler=function(a,b,c){var d=b.mouseDown,f=b.mouseMove,e=b.mouseUp,l=this.editorUi.editor.graph.tolerance,k=null,h=this;b.mouseDown=function(b){d.apply(this,arguments);k=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};b.mouseMove=function(b){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=k&&(Math.abs(k.x-mxEvent.getClientX(b))>l||Math.abs(k.y-mxEvent.getClientY(b))>
@@ -2579,7 +2579,7 @@ Sidebar.prototype.removePalette=function(a){var b=this.palettes[a];if(null!=b){t
Sidebar.prototype.addImagePalette=function(a,b,c,d,f,e,l){for(var k=[],h=0;h<f.length;h++)mxUtils.bind(this,function(a,b,e){if(null==e){e=a.lastIndexOf("/");var f=a.lastIndexOf(".");e=a.substring(0<=e?e+1:0,0<=f?f:a.length).replace(/[-_]/g," ")}k.push(this.createVertexTemplateEntry("image;html=1;image="+c+a+d,this.defaultImageWidth,this.defaultImageHeight,"",b,null!=b,null,this.filterTags(e)))})(f[h],null!=e?e[h]:null,null!=l?l[f[h]]:null);this.addPaletteFunctions(a,b,!1,k)};
Sidebar.prototype.getTagsForStencil=function(a,b,c){a=a.split(".");for(var d=1;d<a.length;d++)a[d]=a[d].replace(/_/g," ");a.push(b.replace(/_/g," "));null!=c&&a.push(c);return a.slice(1,a.length)};
Sidebar.prototype.addStencilPalette=function(a,b,c,d,f,e,l,k,h,g){l=null!=l?l:1;if(this.addStencilsToIndex){var m=[];if(null!=h)for(g=0;g<h.length;g++)m.push(h[g]);mxStencilRegistry.loadStencilSet(c,mxUtils.bind(this,function(a,b,c,e,h){if(null==f||0>mxUtils.indexOf(f,b)){c=this.getTagsForStencil(a,b);var g=null!=k?k[b]:null;null!=g&&c.push(g);m.push(this.createVertexTemplateEntry("shape="+a+b.toLowerCase()+d,Math.round(e*l),Math.round(h*l),"",b.replace(/_/g," "),null,null,this.filterTags(c.join(" "))))}}),
-!0,!0);this.addPaletteFunctions(a,b,!1,m)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(a){null==d&&(d="");null!=e&&e.call(this,a);if(null!=h)for(var b=0;b<h.length;b++)h[b](a);mxStencilRegistry.loadStencilSet(c,mxUtils.bind(this,function(b,c,e,h,g){(null==f||0>mxUtils.indexOf(f,c))&&a.appendChild(this.createVertexTemplate("shape="+b+c.toLowerCase()+d,Math.round(h*l),Math.round(g*l),"",c.replace(/_/g," "),!0))}),!0)}))};
+!0,!0);this.addPaletteFunctions(a,b,!1,m)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(a){null==d&&(d="");null!=e&&e.call(this,a);if(null!=h)for(var b=0;b<h.length;b++)h[b](a);mxStencilRegistry.loadStencilSet(c,mxUtils.bind(this,function(b,c,e,h,k){(null==f||0>mxUtils.indexOf(f,c))&&a.appendChild(this.createVertexTemplate("shape="+b+c.toLowerCase()+d,Math.round(h*l),Math.round(k*l),"",c.replace(/_/g," "),!0))}),!0)}))};
Sidebar.prototype.destroy=function(){null!=this.graph&&(null!=this.graph.container&&null!=this.graph.container.parentNode&&this.graph.container.parentNode.removeChild(this.graph.container),this.graph.destroy(),this.graph=null);null!=this.pointerUpHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerUpHandler=null);null!=this.pointerDownHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),
this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerMoveHandler=null);null!=this.pointerOutHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),this.pointerOutHandler=null)};"undefined"!==typeof html4&&(html4.ATTRIBS["a::target"]=0,html4.ATTRIBS["source::src"]=0,html4.ATTRIBS["video::src"]=0);(function(){var a=[["nbsp","160"],["shy","173"]],b=mxUtils.parseXml;mxUtils.parseXml=function(c){for(var d=0;d<a.length;d++)c=c.replace(new RegExp("&"+a[d][0]+";","g"),"&#"+a[d][1]+";");return b(c)}})();
Date.prototype.toISOString||function(){function a(a){a=String(a);1===a.length&&(a="0"+a);return a}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()});
@@ -2592,8 +2592,8 @@ mxImageShape.prototype.getImageDataUri=function(){var a=this.image;if("data:imag
Graph=function(a,b,c,d,f,e){mxGraph.call(this,a,b,c,d);this.themes=f||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(a){a=this.getCurrentCellStyle(a);
return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var l=null,k=null,h=null,g=null,m=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var d=b.getProperty("event"),c=d.getState(),e=this.view.scale;if(!mxEvent.isAltDown(d.getEvent())&&null!=c)if(this.model.isEdge(c.cell))if(l=new mxPoint(d.getGraphX(),d.getGraphY()),m=this.isCellSelected(c.cell),h=c,k=d,null!=c.text&&null!=
c.text.boundingBox&&mxUtils.contains(c.text.boundingBox,d.getGraphX(),d.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var f=this.selectionCellsHandler.getHandler(c.cell);null!=f&&null!=f.bends&&0<f.bends.length&&(g=f.getHandleForEvent(d))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(d.getEvent())&&(f=this.selectionCellsHandler.getHandler(c.cell),null==f||null==f.getHandleForEvent(d))){var n=new mxRectangle(d.getGraphX()-1,d.getGraphY()-1),p=mxEvent.isTouchEvent(d.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+2)/2,f=p+2;n.grow(p);if(this.isTableCell(c.cell)&&!this.isCellSelected(c.cell)&&!(mxUtils.contains(c,d.getGraphX()-f,d.getGraphY()-f)&&mxUtils.contains(c,d.getGraphX()-f,d.getGraphY()+f)&&mxUtils.contains(c,d.getGraphX()+f,d.getGraphY()+f)&&mxUtils.contains(c,d.getGraphX()+f,d.getGraphY()-f))){var q=this.model.getParent(c.cell),f=this.model.getParent(q);if(!this.isCellSelected(f)){var p=p*e,t=2*p;if(this.model.getChildAt(f,0)!=q&&mxUtils.intersects(n,new mxRectangle(c.x,
-c.y-p,c.width,t))||this.model.getChildAt(q,0)!=c.cell&&mxUtils.intersects(n,new mxRectangle(c.x-p,c.y,t,c.height))||mxUtils.intersects(n,new mxRectangle(c.x,c.y+c.height-p,c.width,t))||mxUtils.intersects(n,new mxRectangle(c.x+c.width-p,c.y,t,c.height)))q=this.selectionCellsHandler.isHandled(f),this.selectCellForEvent(f,d.getEvent()),f=this.selectionCellsHandler.getHandler(f),null!=f&&(p=f.getHandleForEvent(d),null!=p&&(f.start(d.getGraphX(),d.getGraphY(),p),f.blockDelayedSelection=!q,d.consume()))}}for(;!d.isConsumed()&&
+1:(mxShape.prototype.svgStrokeTolerance+2)/2,f=p+2;n.grow(p);if(this.isTableCell(c.cell)&&!this.isCellSelected(c.cell)&&!(mxUtils.contains(c,d.getGraphX()-f,d.getGraphY()-f)&&mxUtils.contains(c,d.getGraphX()-f,d.getGraphY()+f)&&mxUtils.contains(c,d.getGraphX()+f,d.getGraphY()+f)&&mxUtils.contains(c,d.getGraphX()+f,d.getGraphY()-f))){var q=this.model.getParent(c.cell),f=this.model.getParent(q);if(!this.isCellSelected(f)){var p=p*e,r=2*p;if(this.model.getChildAt(f,0)!=q&&mxUtils.intersects(n,new mxRectangle(c.x,
+c.y-p,c.width,r))||this.model.getChildAt(q,0)!=c.cell&&mxUtils.intersects(n,new mxRectangle(c.x-p,c.y,r,c.height))||mxUtils.intersects(n,new mxRectangle(c.x,c.y+c.height-p,c.width,r))||mxUtils.intersects(n,new mxRectangle(c.x+c.width-p,c.y,r,c.height)))q=this.selectionCellsHandler.isHandled(f),this.selectCellForEvent(f,d.getEvent()),f=this.selectionCellsHandler.getHandler(f),null!=f&&(p=f.getHandleForEvent(d),null!=p&&(f.start(d.getGraphX(),d.getGraphY(),p),f.blockDelayedSelection=!q,d.consume()))}}for(;!d.isConsumed()&&
null!=c&&(this.isTableCell(c.cell)||this.isTableRow(c.cell)||this.isTable(c.cell));)this.isSwimlane(c.cell)&&(f=this.getActualStartSize(c.cell),(0<f.x||0<f.width)&&mxUtils.intersects(n,new mxRectangle(c.x+(f.x-f.width-1)*e+(0==f.x?c.width:0),c.y,1,c.height))||(0<f.y||0<f.height)&&mxUtils.intersects(n,new mxRectangle(c.x,c.y+(f.y-f.height-1)*e+(0==f.y?c.height:0),c.width,1)))&&(this.selectCellForEvent(c.cell,d.getEvent()),f=this.selectionCellsHandler.getHandler(c.cell),null!=f&&(p=mxEvent.CUSTOM_HANDLE-
f.customHandles.length+1,f.start(d.getGraphX(),d.getGraphY(),p),d.consume())),c=this.view.getState(this.model.getParent(c.cell))}}}));this.addMouseListener({mouseDown:function(a,b){},mouseMove:mxUtils.bind(this,function(a,b){var d=this.selectionCellsHandler.handlers.map,c;for(c in d)if(null!=d[c].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(b.getEvent())){var e=this.tolerance;if(null!=l&&null!=h&&null!=k){if(d=h,Math.abs(l.x-b.getGraphX())>e||Math.abs(l.y-
b.getGraphY())>e){var f=this.selectionCellsHandler.getHandler(d.cell);null==f&&this.model.isEdge(d.cell)&&(f=this.createHandler(d));if(null!=f&&null!=f.bends&&0<f.bends.length){c=f.getHandleForEvent(k);var n=this.view.getEdgeStyle(d),e=n==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(c=g);if(e&&0!=c&&c!=f.bends.length-1&&c!=mxEvent.LABEL_HANDLE)!e||null==d.visibleSourceState&&null==d.visibleTargetState||(this.graphHandler.reset(),b.consume());else if(c==mxEvent.LABEL_HANDLE||0==c||null!=
@@ -2607,15 +2607,15 @@ arguments);a.view.graph.isHtmlLabel(a.cell)&&(b=1!=a.style.html?mxUtils.htmlEnti
this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,b){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var n=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var a=n.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],d=this.graph.pageFormat,c=this.graph.pageScale,e=d.width*c,d=d.height*c,c=this.graph.view.translate,f=this.graph.view.scale,h=this.graph.getPageLayout(),l=0;l<h.width;l++)b.push(new mxRectangle(((h.x+
l)*e+c.x)*f,(h.y*d+c.y)*f,e*f,d*f));for(l=1;l<h.height;l++)b.push(new mxRectangle((h.x*e+c.x)*f,((h.y+l)*d+c.y)*f,e*f,d*f));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,
arguments)};var p=this.graphHandler.getCells;this.graphHandler.getCells=function(a){for(var b=p.apply(this,arguments),d=new mxDictionary,c=[],e=0;e<b.length;e++){var f=this.graph.isTableCell(a)&&this.graph.isTableCell(b[e])&&this.graph.isCellSelected(b[e])?this.graph.model.getParent(b[e]):this.graph.isTableRow(a)&&this.graph.isTableRow(b[e])&&this.graph.isCellSelected(b[e])?b[e]:this.graph.getCompositeParent(b[e]);null==f||d.get(f)||(d.put(f,!0),c.push(f))}return c};var q=this.graphHandler.start;
-this.graphHandler.start=function(a,b,d,c){var e=!1;this.graph.isTableCell(a)&&(this.graph.isCellSelected(a)?e=!0:a=this.graph.model.getParent(a));e||this.graph.isTableRow(a)&&this.graph.isCellSelected(a)||(a=this.graph.getCompositeParent(a));q.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,b){b=this.graph.getCompositeParent(b);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var t=new mxRubberband(this);this.getRubberband=function(){return t};
-var u=(new Date).getTime(),r=0,x=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;x.apply(this,arguments);a!=this.currentState?(u=(new Date).getTime(),r=0):r=(new Date).getTime()-u};var y=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<r||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect",
-"1"))&&y.apply(this,arguments)};var w=this.isToggleEvent;this.isToggleEvent=function(a){return w.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var F=t.isForceRubberbandEvent;t.isForceRubberbandEvent=function(a){return F.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var H=null;this.panningHandler.addListener(mxEvent.PAN_START,
+this.graphHandler.start=function(a,b,d,c){var e=!1;this.graph.isTableCell(a)&&(this.graph.isCellSelected(a)?e=!0:a=this.graph.model.getParent(a));e||this.graph.isTableRow(a)&&this.graph.isCellSelected(a)||(a=this.graph.getCompositeParent(a));q.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,b){b=this.graph.getCompositeParent(b);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var r=new mxRubberband(this);this.getRubberband=function(){return r};
+var u=(new Date).getTime(),t=0,w=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;w.apply(this,arguments);a!=this.currentState?(u=(new Date).getTime(),t=0):t=(new Date).getTime()-u};var x=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<t||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect",
+"1"))&&x.apply(this,arguments)};var y=this.isToggleEvent;this.isToggleEvent=function(a){return y.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var F=r.isForceRubberbandEvent;r.isForceRubberbandEvent=function(a){return F.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var H=null;this.panningHandler.addListener(mxEvent.PAN_START,
mxUtils.bind(this,function(){this.isEnabled()&&(H=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=H)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var C=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&
-!b||a.isConsumed())return C.apply(this,arguments);var d=b?a.sourceState.cell:a.getCell();null!=d&&(d=this.getClickableLinkForCell(d),null!=d&&(this.isCustomLink(d)?this.customLinkClicked(d):this.openLink(d)));this.isEnabled()&&b&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};var D=this.tooltipHandler.show;this.tooltipHandler.show=function(){D.apply(this,arguments);if(null!=this.div)for(var a=this.div.getElementsByTagName("a"),b=0;b<a.length;b++)null!=
+!b||a.isConsumed())return C.apply(this,arguments);var d=b?a.sourceState.cell:a.getCell();null!=d&&(d=this.getClickableLinkForCell(d),null!=d&&(this.isCustomLink(d)?this.customLinkClicked(d):this.openLink(d)));this.isEnabled()&&b&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};var E=this.tooltipHandler.show;this.tooltipHandler.show=function(){E.apply(this,arguments);if(null!=this.div)for(var a=this.div.getElementsByTagName("a"),b=0;b<a.length;b++)null!=
a[b].getAttribute("href")&&null==a[b].getAttribute("target")&&a[b].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var z=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=this.getClickableLinkForCell(a))return"pointer";
if(this.isCellLocked(a))return"default"}return z.apply(this,arguments)};this.selectRegion=function(a,b){var d=mxEvent.isAltDown(b)?a:null,d=this.getCells(a.x,a.y,a.width,a.height,null,null,d,function(a){return"1"==mxUtils.getValue(a.style,"locked","0")},!0);if(this.isToggleEvent(b))for(var c=0;c<d.length;c++)this.selectCellForEvent(d[c],b);else this.selectCellsForEvent(d,b);return d};var G=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,d){return this.graph.isCellSelected(a)?
!1:G.apply(this,arguments)};this.isCellLocked=function(a){for(;null!=a;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(a),"locked","0"))return!0;a=this.model.getParent(a)}return!1};var J=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")){var d=b.getProperty("event").getState();J=null==d||this.isSelectionEmpty()||this.isCellSelected(d.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,
-function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var d=b.getProperty("event"),c=b.getProperty("cell");null==c?(d=mxUtils.convertPoint(this.container,mxEvent.getClientX(d),mxEvent.getClientY(d)),t.start(d.x,d.y)):null!=J?this.addSelectionCells(J):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);J=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){var d=
+function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var d=b.getProperty("event"),c=b.getProperty("cell");null==c?(d=mxUtils.convertPoint(this.container,mxEvent.getClientX(d),mxEvent.getClientY(d)),r.start(d.x,d.y)):null!=J?this.addSelectionCells(J):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);J=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){var d=
a.view.graph;return b&&(d.isCellSelected(a.cell)||d.isTableRow(a.cell)&&d.selectionCellsHandler.isHandled(d.model.getParent(a.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var L=this.updateMouseEvent;this.updateMouseEvent=function(a){a=
L.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.translateDiagram="1"==urlParams["translate-diagram"];
Graph.diagramLanguage=null!=urlParams["diagram-language"]?urlParams["diagram-language"]:mxClient.language;Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;Graph.zoomWheel=!1;Graph.minTableColumnWidth=20;Graph.minTableRowHeight=20;Graph.foreignObjectWarningText="Text is not SVG - cannot display";Graph.foreignObjectWarningLink="https://www.diagrams.net/doc/faq/svg-export-text-problems";Graph.xmlDeclaration='<?xml version="1.0" encoding="UTF-8"?>';Graph.svgDoctype='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';
@@ -2684,8 +2684,8 @@ Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEve
Graph.prototype.getGlobalVariable=function(a){var b=null;"date"==a?b=(new Date).toLocaleDateString():"time"==a?b=(new Date).toLocaleTimeString():"timestamp"==a?b=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),b=this.formatDate(new Date,a));return b};
Graph.prototype.formatDate=function(a,b,c){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var d=this.dateFormatCache,f=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,e=/[^-+\dA-Z]/g,l=function(a,b){a=String(a);for(b=b||2;a.length<b;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)||
-/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(d.masks[b]||b||d.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),c=!0);var k=c?"getUTC":"get",h=a[k+"Date"](),g=a[k+"Day"](),m=a[k+"Month"](),n=a[k+"FullYear"](),p=a[k+"Hours"](),q=a[k+"Minutes"](),t=a[k+"Seconds"](),k=a[k+"Milliseconds"](),u=c?0:a.getTimezoneOffset(),r={d:h,dd:l(h),ddd:d.i18n.dayNames[g],dddd:d.i18n.dayNames[g+7],m:m+1,mm:l(m+1),mmm:d.i18n.monthNames[m],mmmm:d.i18n.monthNames[m+
-12],yy:String(n).slice(2),yyyy:n,h:p%12||12,hh:l(p%12||12),H:p,HH:l(p),M:q,MM:l(q),s:t,ss:l(t),l:l(k,3),L:l(99<k?Math.round(k/10):k),t:12>p?"a":"p",tt:12>p?"am":"pm",T:12>p?"A":"P",TT:12>p?"AM":"PM",Z:c?"UTC":(String(a).match(f)||[""]).pop().replace(e,""),o:(0<u?"-":"+")+l(100*Math.floor(Math.abs(u)/60)+Math.abs(u)%60,4),S:["th","st","nd","rd"][3<h%10?0:(10!=h%100-h%10)*h%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in r?r[a]:a.slice(1,
+/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(d.masks[b]||b||d.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),c=!0);var k=c?"getUTC":"get",h=a[k+"Date"](),g=a[k+"Day"](),m=a[k+"Month"](),n=a[k+"FullYear"](),p=a[k+"Hours"](),q=a[k+"Minutes"](),r=a[k+"Seconds"](),k=a[k+"Milliseconds"](),u=c?0:a.getTimezoneOffset(),t={d:h,dd:l(h),ddd:d.i18n.dayNames[g],dddd:d.i18n.dayNames[g+7],m:m+1,mm:l(m+1),mmm:d.i18n.monthNames[m],mmmm:d.i18n.monthNames[m+
+12],yy:String(n).slice(2),yyyy:n,h:p%12||12,hh:l(p%12||12),H:p,HH:l(p),M:q,MM:l(q),s:r,ss:l(r),l:l(k,3),L:l(99<k?Math.round(k/10):k),t:12>p?"a":"p",tt:12>p?"am":"pm",T:12>p?"A":"P",TT:12>p?"AM":"PM",Z:c?"UTC":(String(a).match(f)||[""]).pop().replace(e,""),o:(0<u?"-":"+")+l(100*Math.floor(Math.abs(u)/60)+Math.abs(u)%60,4),S:["th","st","nd","rd"][3<h%10?0:(10!=h%100-h%10)*h%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in t?t[a]:a.slice(1,
a.length-1)})};Graph.prototype.getLayerForCells=function(a){var b=null;if(0<a.length){for(b=a[0];!this.model.isLayer(b);)b=this.model.getParent(b);for(var c=1;c<a.length;c++)if(!this.model.isAncestor(b,a[c])){b=null;break}}return b};
Graph.prototype.createLayersDialog=function(a,b){var c=document.createElement("div");c.style.position="absolute";for(var d=this.getModel(),f=d.getChildCount(d.root),e=0;e<f;e++)mxUtils.bind(this,function(e){function f(){d.isVisible(e)?(l.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(g,75)):(l.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(g,25))}var h=this.convertValueToString(e)||mxResources.get("background")||"Background",g=document.createElement("div");g.style.overflow=
"hidden";g.style.textOverflow="ellipsis";g.style.padding="2px";g.style.whiteSpace="nowrap";g.style.cursor="pointer";g.setAttribute("title",mxResources.get(d.isVisible(e)?"hideIt":"show",[h]));var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","absmiddle");l.setAttribute("border","0");l.style.position="relative";l.style.width="16px";l.style.padding="0px 6px 0 4px";b&&(l.style.filter="invert(100%)",l.style.top="-2px");g.appendChild(l);mxUtils.write(g,h);c.appendChild(g);
@@ -2694,15 +2694,17 @@ Graph.prototype.replacePlaceholders=function(a,b,c,d){d=[];if(null!=b){for(var f
null==l&&(l=h.hasAttribute(k)?null!=h.getAttribute(k)?h.getAttribute(k):"":null)),h=this.model.getParent(h);null==l&&(l=this.getGlobalVariable(k));null==l&&null!=c&&(l=c[k])}d.push(b.substring(f,match.index)+(null!=l?l:e));f=match.index+e.length}}d.push(b.substring(f))}return d.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],c=0;c<a.length;c++){var d=this.model.getCell(a[c].id);null!=d&&b.push(d)}this.setSelectionCells(b)}else this.clearSelection()};
Graph.prototype.selectCellForEvent=function(a,b){mxEvent.isShiftDown(b)&&!this.isSelectionEmpty()&&this.selectTableRange(this.getSelectionCell(),a)||mxGraph.prototype.selectCellForEvent.apply(this,arguments)};
Graph.prototype.selectTableRange=function(a,b){var c=!1;if(this.isTableCell(a)&&this.isTableCell(b)){var d=this.model.getParent(a),f=this.model.getParent(d),e=this.model.getParent(b);if(f==this.model.getParent(e)){for(var l=d.getIndex(a),k=f.getIndex(d),h=e.getIndex(b),g=f.getIndex(e),e=Math.max(k,g),d=Math.min(l,h),l=Math.max(l,h),h=[],k=Math.min(k,g);k<=e;k++)for(var g=this.model.getChildAt(f,k),m=d;m<=l;m++)h.push(this.model.getChildAt(g,m));0<h.length&&(1<h.length||1<this.getSelectionCount()||
-!this.isCellSelected(h[0]))&&(this.setSelectionCells(h),c=!0)}}return c};Graph.prototype.getTableRange=function(a,b){};Graph.prototype.selectCellsForConnectVertex=function(a,b,c){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=c&&(mxEvent.isTouchEvent(b)?c.update(c.getState(this.view.getState(a[1]))):c.reset())):this.setSelectionCells(a)};
+!this.isCellSelected(h[0]))&&(this.setSelectionCells(h),c=!0)}}return c};
+Graph.prototype.snapCellsToGrid=function(a,b){this.getModel().beginUpdate();try{for(var c=0;c<a.length;c++){var d=a[c],f=this.getCellGeometry(d);if(null!=f){f=f.clone();if(this.getModel().isVertex(d))f.x=Math.round(f.x/b)*b,f.y=Math.round(f.y/b)*b,f.width=Math.round(f.width/b)*b,f.height=Math.round(f.height/b)*b;else if(this.getModel().isEdge(d)&&null!=f.points)for(var e=0;e<f.points.length;e++)f.points[e].x=Math.round(f.points[e].x/b)*b,f.points[e].y=Math.round(f.points[e].y/b)*b;this.getModel().setGeometry(d,
+f)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnectVertex=function(a,b,c){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=c&&(mxEvent.isTouchEvent(b)?c.update(c.getState(this.view.getState(a[1]))):c.reset())):this.setSelectionCells(a)};
Graph.prototype.isCloneConnectSource=function(a){var b=null;null!=this.layoutManager&&(b=this.layoutManager.getLayout(this.model.getParent(a)));return this.isTableRow(a)||this.isTableCell(a)||null!=b&&b.constructor==mxStackLayout};
Graph.prototype.connectVertex=function(a,b,c,d,f,e,l,k){e=e?e:!1;if(a.geometry.relative&&this.model.isEdge(a.parent))return[];for(;a.geometry.relative&&this.model.isVertex(a.parent);)a=a.parent;var h=this.isCloneConnectSource(a),g=h?a:this.getCompositeParent(a),m=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(g.geometry.x,g.geometry.y);b==mxConstants.DIRECTION_NORTH?(m.x+=g.geometry.width/2,m.y-=c):b==
mxConstants.DIRECTION_SOUTH?(m.x+=g.geometry.width/2,m.y+=g.geometry.height+c):(m.x=b==mxConstants.DIRECTION_WEST?m.x-c:m.x+(g.geometry.width+c),m.y+=g.geometry.height/2);var n=this.view.getState(this.model.getParent(a));c=this.view.scale;var p=this.view.translate,g=p.x*c,p=p.y*c;null!=n&&this.model.isVertex(n.cell)&&(g=n.x,p=n.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(m.x+=a.parent.geometry.x,m.y+=a.parent.geometry.y);e=e?null:(new mxRectangle(g+m.x*c,p+m.y*c)).grow(40*c);e=null!=e?
-this.getCells(0,0,0,0,null,null,e,null,!0):null;var n=this.view.getState(a),q=null,t=null;if(null!=e){e=e.reverse();for(var u=0;u<e.length;u++)if(!this.isCellLocked(e[u])&&!this.model.isEdge(e[u])&&e[u]!=a)if(!this.model.isAncestor(a,e[u])&&this.isContainer(e[u])&&(null==q||e[u]==this.model.getParent(a)))q=e[u];else if(null==t&&this.isCellConnectable(e[u])&&!this.model.isAncestor(e[u],a)&&!this.isSwimlane(e[u])){var r=this.view.getState(e[u]);null==n||null==r||mxUtils.intersects(n,r)||(t=e[u])}}var x=
-!mxEvent.isShiftDown(d)||mxEvent.isControlDown(d)||f;x&&("1"!=urlParams.sketch||f)&&(b==mxConstants.DIRECTION_NORTH?m.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?m.y+=a.geometry.height/2:m.x=b==mxConstants.DIRECTION_WEST?m.x-a.geometry.width/2:m.x+a.geometry.width/2);var y=[],w=t,t=q;f=mxUtils.bind(this,function(c){if(null==l||null!=c||null==t&&h){this.model.beginUpdate();try{if(null==w&&x){var e=this.getAbsoluteParent(null!=c?c:a),e=h?a:this.getCompositeParent(e);w=null!=c?c:this.duplicateCells([e],
-!1)[0];null!=c&&this.addCells([w],this.model.getParent(a),null,null,null,!0);var f=this.getCellGeometry(w);null!=f&&(null!=c&&"1"==urlParams.sketch&&(b==mxConstants.DIRECTION_NORTH?m.y-=f.height/2:b==mxConstants.DIRECTION_SOUTH?m.y+=f.height/2:m.x=b==mxConstants.DIRECTION_WEST?m.x-f.width/2:m.x+f.width/2),f.x=m.x-f.width/2,f.y=m.y-f.height/2);null!=q?(this.addCells([w],q,null,null,null,!0),t=null):x&&!h&&this.addCells([w],this.getDefaultParent(),null,null,null,!0)}var g=mxEvent.isControlDown(d)&&
-mxEvent.isShiftDown(d)&&x||null==t&&h?null:this.insertEdge(this.model.getParent(a),null,"",a,w,this.createCurrentEdgeStyle());if(null!=g&&this.connectionHandler.insertBeforeSource){var n=null;for(c=a;null!=c.parent&&null!=c.geometry&&c.geometry.relative&&c.parent!=g.parent;)c=this.model.getParent(c);null!=c&&null!=c.parent&&c.parent==g.parent&&(n=c.parent.getIndex(c),this.model.add(c.parent,g,n))}null==t&&null!=w&&null!=a.parent&&h&&b==mxConstants.DIRECTION_WEST&&(n=a.parent.getIndex(a),this.model.add(a.parent,
-w,n));null!=g&&y.push(g);null==t&&null!=w&&y.push(w);null==w&&null!=g&&g.geometry.setTerminalPoint(m,!1);null!=g&&this.fireEvent(new mxEventObject("cellsInserted","cells",[g]))}finally{this.model.endUpdate()}}if(null!=k)k(y);else return y});if(null==l||null!=w||!x||null==t&&h)return f(w);l(g+m.x*c,p+m.y*c,f)};
+this.getCells(0,0,0,0,null,null,e,null,!0):null;var n=this.view.getState(a),q=null,r=null;if(null!=e){e=e.reverse();for(var u=0;u<e.length;u++)if(!this.isCellLocked(e[u])&&!this.model.isEdge(e[u])&&e[u]!=a)if(!this.model.isAncestor(a,e[u])&&this.isContainer(e[u])&&(null==q||e[u]==this.model.getParent(a)))q=e[u];else if(null==r&&this.isCellConnectable(e[u])&&!this.model.isAncestor(e[u],a)&&!this.isSwimlane(e[u])){var t=this.view.getState(e[u]);null==n||null==t||mxUtils.intersects(n,t)||(r=e[u])}}var w=
+!mxEvent.isShiftDown(d)||mxEvent.isControlDown(d)||f;w&&("1"!=urlParams.sketch||f)&&(b==mxConstants.DIRECTION_NORTH?m.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?m.y+=a.geometry.height/2:m.x=b==mxConstants.DIRECTION_WEST?m.x-a.geometry.width/2:m.x+a.geometry.width/2);var x=[],y=r,r=q;f=mxUtils.bind(this,function(c){if(null==l||null!=c||null==r&&h){this.model.beginUpdate();try{if(null==y&&w){var e=this.getAbsoluteParent(null!=c?c:a),e=h?a:this.getCompositeParent(e);y=null!=c?c:this.duplicateCells([e],
+!1)[0];null!=c&&this.addCells([y],this.model.getParent(a),null,null,null,!0);var f=this.getCellGeometry(y);null!=f&&(null!=c&&"1"==urlParams.sketch&&(b==mxConstants.DIRECTION_NORTH?m.y-=f.height/2:b==mxConstants.DIRECTION_SOUTH?m.y+=f.height/2:m.x=b==mxConstants.DIRECTION_WEST?m.x-f.width/2:m.x+f.width/2),f.x=m.x-f.width/2,f.y=m.y-f.height/2);null!=q?(this.addCells([y],q,null,null,null,!0),r=null):w&&!h&&this.addCells([y],this.getDefaultParent(),null,null,null,!0)}var g=mxEvent.isControlDown(d)&&
+mxEvent.isShiftDown(d)&&w||null==r&&h?null:this.insertEdge(this.model.getParent(a),null,"",a,y,this.createCurrentEdgeStyle());if(null!=g&&this.connectionHandler.insertBeforeSource){var n=null;for(c=a;null!=c.parent&&null!=c.geometry&&c.geometry.relative&&c.parent!=g.parent;)c=this.model.getParent(c);null!=c&&null!=c.parent&&c.parent==g.parent&&(n=c.parent.getIndex(c),this.model.add(c.parent,g,n))}null==r&&null!=y&&null!=a.parent&&h&&b==mxConstants.DIRECTION_WEST&&(n=a.parent.getIndex(a),this.model.add(a.parent,
+y,n));null!=g&&x.push(g);null==r&&null!=y&&x.push(y);null==y&&null!=g&&g.geometry.setTerminalPoint(m,!1);null!=g&&this.fireEvent(new mxEventObject("cellsInserted","cells",[g]))}finally{this.model.endUpdate()}}if(null!=k)k(x);else return x});if(null==l||null!=y||!w||null==r&&h)return f(y);l(g+m.x*c,p+m.y*c,f)};
Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],c,d;for(d in this.model.cells)if(c=this.model.cells[d],this.model.isVertex(c)||this.model.isEdge(c))this.isHtmlLabel(c)?(a.innerHTML=this.sanitizeHtml(this.getLabel(c)),c=mxUtils.extractTextWithWhitespace([a])):c=this.getLabel(c),c=mxUtils.trim(c.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<c.length&&b.push(c);return b.join(" ")};
Graph.prototype.convertValueToString=function(a){var b=this.model.getValue(a);if(null!=b&&"object"==typeof b){var c=null;if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var b=a.getAttribute("placeholder"),d=a;null==c&&null!=d;)null!=d.value&&"object"==typeof d.value&&(c=d.hasAttribute(b)?null!=d.getAttribute(b)?d.getAttribute(b):"":null),d=this.model.getParent(d);else c=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(c=b.getAttribute("label_"+Graph.diagramLanguage)),
null==c&&(c=b.getAttribute("label")||"");return c||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null};
@@ -2779,23 +2781,23 @@ TableLayout.prototype.getRowLayout=function(a,b){for(var c=this.graph.model.getC
TableLayout.prototype.layoutRow=function(a,b,c,d){var f=this.graph.getModel(),e=f.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var l=a.x,k=0;null!=b&&(b=b.slice(),b.splice(0,0,a.x));for(var h=0;h<e.length;h++){var g=this.graph.getCellGeometry(e[h]);null!=g&&(g=g.clone(),g.y=a.y,g.height=c-a.y-a.height,null!=b?(g.x=b[h],g.width=b[h+1]-g.x,h==e.length-1&&h<b.length-2&&(g.width=d-g.x-a.x-a.width)):(g.x=l,l+=g.width,h==e.length-1?g.width=d-a.x-a.width-k:k+=g.width),g.alternateBounds=new mxRectangle(0,
0,g.width,g.height),f.setGeometry(e[h],g))}return k};
TableLayout.prototype.execute=function(a){if(null!=a){var b=this.graph.getActualStartSize(a,!0),c=this.graph.getCellGeometry(a),d=this.graph.getCellStyle(a),f="1"==mxUtils.getValue(d,"resizeLastRow","0"),e="1"==mxUtils.getValue(d,"resizeLast","0"),d="1"==mxUtils.getValue(d,"fixedRows","0"),l=this.graph.getModel(),k=0;l.beginUpdate();try{for(var h=c.height-b.y-b.height,g=c.width-b.x-b.width,m=l.getChildCells(a,!0),n=0;n<m.length;n++)l.setVisible(m[n],!0);var p=this.getSize(m,!1);if(0<h&&0<g&&0<m.length&&
-0<p){if(f){var q=this.graph.getCellGeometry(m[m.length-1]);null!=q&&(q=q.clone(),q.height=h-p+q.height,l.setGeometry(m[m.length-1],q))}for(var t=e?null:this.getRowLayout(m[0],g),u=[],r=b.y,n=0;n<m.length;n++)q=this.graph.getCellGeometry(m[n]),null!=q&&(q=q.clone(),q.x=b.x,q.width=g,q.y=Math.round(r),r=f||d?r+q.height:r+q.height/p*h,q.height=Math.round(r)-q.y,l.setGeometry(m[n],q)),k=Math.max(k,this.layoutRow(m[n],t,q.height,g,u));d&&h<p&&(c=c.clone(),c.height=r+b.height,l.setGeometry(a,c));e&&g<k+
+0<p){if(f){var q=this.graph.getCellGeometry(m[m.length-1]);null!=q&&(q=q.clone(),q.height=h-p+q.height,l.setGeometry(m[m.length-1],q))}for(var r=e?null:this.getRowLayout(m[0],g),u=[],t=b.y,n=0;n<m.length;n++)q=this.graph.getCellGeometry(m[n]),null!=q&&(q=q.clone(),q.x=b.x,q.width=g,q.y=Math.round(t),t=f||d?t+q.height:t+q.height/p*h,q.height=Math.round(t)-q.y,l.setGeometry(m[n],q)),k=Math.max(k,this.layoutRow(m[n],r,q.height,g,u));d&&h<p&&(c=c.clone(),c.height=t+b.height,l.setGeometry(a,c));e&&g<k+
Graph.minTableColumnWidth&&(c=c.clone(),c.width=k+b.width+b.x+Graph.minTableColumnWidth,l.setGeometry(a,c));this.graph.visitTableCells(a,mxUtils.bind(this,function(a){l.setVisible(a.cell,a.actual.cell==a.cell);if(a.actual.cell!=a.cell){if(a.actual.row==a.row){var b=null!=a.geo.alternateBounds?a.geo.alternateBounds:a.geo;a.actual.geo.width+=b.width}a.actual.col==a.col&&(b=null!=a.geo.alternateBounds?a.geo.alternateBounds:a.geo,a.actual.geo.height+=b.height)}}))}else for(n=0;n<m.length;n++)l.setVisible(m[n],
!1)}finally{l.endUpdate()}}};
(function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,d){d=null!=d?d:!0;var c=this.getState(a);null!=c&&d&&this.graph.model.isEdge(c.cell)&&null!=c.style&&1!=c.style[mxConstants.STYLE_CURVED]&&!c.invalid&&this.updateLineJumps(c)&&this.graph.cellRenderer.redraw(c,!1,this.isRendering());c=b.apply(this,
arguments);null!=c&&d&&this.graph.model.isEdge(c.cell)&&null!=c.style&&1!=c.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(c);return c};var c=mxShape.prototype.paint;mxShape.prototype.paint=function(){c.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var a=this.node.getElementsByTagName("path");if(1<a.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&a[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var b=this.state.view.graph.getFlowAnimationStyle();null!=b&&a[1].setAttribute("class",b.getAttribute("id"))}}};var d=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return d.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var f=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
function(a){f.apply(this,arguments);this.graph.model.isEdge(a.cell)&&1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var d=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,d,e){var f=new mxPoint(d,e);f.type=b;c.push(f);f=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==f||f.type!=
-b||f.x!=d||f.y!=e},f=.5*this.scale,d=!1,c=[],g=0;g<b.length-1;g++){for(var h=b[g+1],k=b[g],l=[],m=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,m.x,m.y,h.x,h.y)<1*this.scale*this.scale;)h=m,g++,m=b[g+2];for(var d=e(0,k.x,k.y)||d,H=0;H<this.validEdges.length;H++){var C=this.validEdges[H],D=C.absolutePoints;if(null!=D&&mxUtils.intersects(a,C)&&"1"!=C.style.noJump)for(C=0;C<D.length-1;C++){for(var z=D[C+1],G=D[C],m=D[C+2];C<D.length-2&&mxUtils.ptSegDistSq(G.x,G.y,m.x,m.y,z.x,z.y)<1*this.scale*this.scale;)z=
-m,C++,m=D[C+2];m=mxUtils.intersection(k.x,k.y,h.x,h.y,G.x,G.y,z.x,z.y);if(null!=m&&(Math.abs(m.x-k.x)>f||Math.abs(m.y-k.y)>f)&&(Math.abs(m.x-h.x)>f||Math.abs(m.y-h.y)>f)&&(Math.abs(m.x-G.x)>f||Math.abs(m.y-G.y)>f)&&(Math.abs(m.x-z.x)>f||Math.abs(m.y-z.y)>f)){z=m.x-k.x;G=m.y-k.y;m={distSq:z*z+G*G,x:m.x,y:m.y};for(z=0;z<l.length;z++)if(l[z].distSq>m.distSq){l.splice(z,0,m);m=null;break}null==m||0!=l.length&&l[l.length-1].x===m.x&&l[l.length-1].y===m.y||l.push(m)}}}for(C=0;C<l.length;C++)d=e(1,l[C].x,
+b||f.x!=d||f.y!=e},f=.5*this.scale,d=!1,c=[],g=0;g<b.length-1;g++){for(var h=b[g+1],k=b[g],l=[],m=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,m.x,m.y,h.x,h.y)<1*this.scale*this.scale;)h=m,g++,m=b[g+2];for(var d=e(0,k.x,k.y)||d,H=0;H<this.validEdges.length;H++){var C=this.validEdges[H],E=C.absolutePoints;if(null!=E&&mxUtils.intersects(a,C)&&"1"!=C.style.noJump)for(C=0;C<E.length-1;C++){for(var z=E[C+1],G=E[C],m=E[C+2];C<E.length-2&&mxUtils.ptSegDistSq(G.x,G.y,m.x,m.y,z.x,z.y)<1*this.scale*this.scale;)z=
+m,C++,m=E[C+2];m=mxUtils.intersection(k.x,k.y,h.x,h.y,G.x,G.y,z.x,z.y);if(null!=m&&(Math.abs(m.x-k.x)>f||Math.abs(m.y-k.y)>f)&&(Math.abs(m.x-h.x)>f||Math.abs(m.y-h.y)>f)&&(Math.abs(m.x-G.x)>f||Math.abs(m.y-G.y)>f)&&(Math.abs(m.x-z.x)>f||Math.abs(m.y-z.y)>f)){z=m.x-k.x;G=m.y-k.y;m={distSq:z*z+G*G,x:m.x,y:m.y};for(z=0;z<l.length;z++)if(l[z].distSq>m.distSq){l.splice(z,0,m);m=null;break}null==m||0!=l.length&&l[l.length-1].x===m.x&&l[l.length-1].y===m.y||l.push(m)}}}for(C=0;C<l.length;C++)d=e(1,l[C].x,
l[C].y)||d}m=b[b.length-1];d=e(0,m.x,m.y)||d}a.routedPoints=c;return d}return!1};var e=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,d){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)e.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,f=(parseInt(mxUtils.getValue(this.style,
-"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h=!0,k=null,l=null,m=[],n=null;a.begin();for(var p=0;p<this.state.routedPoints.length;p++){var C=this.state.routedPoints[p],D=new mxPoint(C.x/this.scale,C.y/this.scale);0==p?D=b[0]:p==this.state.routedPoints.length-1&&(D=b[b.length-1]);var z=!1;if(null!=k&&1==C.type){var G=this.state.routedPoints[p+1],C=G.x/this.scale-D.x,G=G.y/this.scale-D.y,C=C*C+G*G;null==n&&(n=new mxPoint(D.x-k.x,D.y-k.y),
-l=Math.sqrt(n.x*n.x+n.y*n.y),0<l?(n.x=n.x*f/l,n.y=n.y*f/l):n=null);C>f*f&&0<l&&(C=k.x-D.x,G=k.y-D.y,C=C*C+G*G,C>f*f&&(z=new mxPoint(D.x-n.x,D.y-n.y),C=new mxPoint(D.x+n.x,D.y+n.y),m.push(z),this.addPoints(a,m,d,c,!1,null,h),m=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,h=!1,"sharp"==g?(a.lineTo(z.x-n.y*m,z.y+n.x*m),a.lineTo(C.x-n.y*m,C.y+n.x*m),a.lineTo(C.x,C.y)):"line"==g?(a.moveTo(z.x+n.y*m,z.y-n.x*m),a.lineTo(z.x-n.y*m,z.y+n.x*m),a.moveTo(C.x-n.y*m,C.y+n.x*m),a.lineTo(C.x+n.y*
-m,C.y-n.x*m),a.moveTo(C.x,C.y)):"arc"==g?(m*=1.3,a.curveTo(z.x-n.y*m,z.y+n.x*m,C.x-n.y*m,C.y+n.x*m,C.x,C.y)):(a.moveTo(C.x,C.y),h=!0),m=[C],z=!0))}else n=null;z||(m.push(D),k=D)}this.addPoints(a,m,d,c,!1,null,h);a.stroke()}};var l=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(a,b,d,c){return null!=b&&"centerPerimeter"==b.style[mxConstants.STYLE_PERIMETER]?new mxPoint(b.getCenterX(),b.getCenterY()):l.apply(this,arguments)};var k=mxGraphView.prototype.updateFloatingTerminalPoint;
+"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h=!0,k=null,l=null,m=[],n=null;a.begin();for(var p=0;p<this.state.routedPoints.length;p++){var C=this.state.routedPoints[p],E=new mxPoint(C.x/this.scale,C.y/this.scale);0==p?E=b[0]:p==this.state.routedPoints.length-1&&(E=b[b.length-1]);var z=!1;if(null!=k&&1==C.type){var G=this.state.routedPoints[p+1],C=G.x/this.scale-E.x,G=G.y/this.scale-E.y,C=C*C+G*G;null==n&&(n=new mxPoint(E.x-k.x,E.y-k.y),
+l=Math.sqrt(n.x*n.x+n.y*n.y),0<l?(n.x=n.x*f/l,n.y=n.y*f/l):n=null);C>f*f&&0<l&&(C=k.x-E.x,G=k.y-E.y,C=C*C+G*G,C>f*f&&(z=new mxPoint(E.x-n.x,E.y-n.y),C=new mxPoint(E.x+n.x,E.y+n.y),m.push(z),this.addPoints(a,m,d,c,!1,null,h),m=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,h=!1,"sharp"==g?(a.lineTo(z.x-n.y*m,z.y+n.x*m),a.lineTo(C.x-n.y*m,C.y+n.x*m),a.lineTo(C.x,C.y)):"line"==g?(a.moveTo(z.x+n.y*m,z.y-n.x*m),a.lineTo(z.x-n.y*m,z.y+n.x*m),a.moveTo(C.x-n.y*m,C.y+n.x*m),a.lineTo(C.x+n.y*
+m,C.y-n.x*m),a.moveTo(C.x,C.y)):"arc"==g?(m*=1.3,a.curveTo(z.x-n.y*m,z.y+n.x*m,C.x-n.y*m,C.y+n.x*m,C.x,C.y)):(a.moveTo(C.x,C.y),h=!0),m=[C],z=!0))}else n=null;z||(m.push(E),k=E)}this.addPoints(a,m,d,c,!1,null,h);a.stroke()}};var l=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(a,b,d,c){return null!=b&&"centerPerimeter"==b.style[mxConstants.STYLE_PERIMETER]?new mxPoint(b.getCenterX(),b.getCenterY()):l.apply(this,arguments)};var k=mxGraphView.prototype.updateFloatingTerminalPoint;
mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,d,c){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)k.apply(this,arguments);else{b=this.getTerminalPort(a,b,c);var e=this.getNextPoint(a,d,c),f=this.graph.isOrthogonal(a),g=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),h=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=g)var l=Math.cos(-g),m=Math.sin(-g),e=mxUtils.getRotatedPoint(e,l,m,h);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||
0);l+=parseFloat(a.style[c?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);e=this.getPerimeterPoint(b,e,0==g&&f,l);0!=g&&(l=Math.cos(g),m=Math.sin(g),e=mxUtils.getRotatedPoint(e,l,m,h));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,d,c,e),c)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,d,c,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);c=d=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,
a[f]);if(null!=g){var h=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null==c||h<c)d=g,c=h}}null!=d&&(e=d)}return e};var h=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,d){var c=h.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=d.state&&(c=d.state.view.graph.replacePlaceholders(d.state.cell,c));return c};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=
-mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=b&&"string"===typeof b&&"stencil("==b.substring(0,8))try{var d=b.substring(8,b.length-1),c=mxUtils.parseXml(Graph.decompress(d));return new mxShape(new mxStencil(c.documentElement))}catch(t){null!=window.console&&console.log("Error in shape: "+t)}}return g.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];
+mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=b&&"string"===typeof b&&"stencil("==b.substring(0,8))try{var d=b.substring(8,b.length-1),c=mxUtils.parseXml(Graph.decompress(d));return new mxShape(new mxStencil(c.documentElement))}catch(r){null!=window.console&&console.log("Error in shape: "+r)}}return g.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];
mxStencilRegistry.filesLoaded={};
mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var c=mxStencilRegistry.getBasenameForStencil(a);if(null!=c){b=mxStencilRegistry.libraries[c];if(null!=b){if(null==mxStencilRegistry.packages[c]){for(var d=0;d<b.length;d++){var f=b[d];if(!mxStencilRegistry.filesLoaded[f])if(mxStencilRegistry.filesLoaded[f]=!0,".xml"==f.toLowerCase().substring(f.length-4,f.length))mxStencilRegistry.loadStencilSet(f,
null);else if(".js"==f.toLowerCase().substring(f.length-3,f.length))try{if(mxStencilRegistry.allowEval){var e=mxUtils.load(f);null!=e&&200<=e.getStatus()&&299>=e.getStatus()&&eval.call(window,e.getText())}}catch(l){null!=window.console&&console.log("error in getStencil:",a,c,b,f,l)}}mxStencilRegistry.packages[c]=1}}else c=c.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+c+".xml",null);b=mxStencilRegistry.stencils[a]}}return b};
@@ -2804,7 +2806,7 @@ mxStencilRegistry.loadStencilSet=function(a,b,c,d){var f=mxStencilRegistry.packa
f.documentElement&&mxStencilRegistry.parseStencilSet(f.documentElement,b,e)}};mxStencilRegistry.loadStencil=function(a,b){if(null!=b)mxUtils.get(a,mxUtils.bind(this,function(a){b(200<=a.getStatus()&&299>=a.getStatus()?a.getXml():null)}));else return mxUtils.load(a).getXml()};mxStencilRegistry.parseStencilSets=function(a){for(var b=0;b<a.length;b++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(a[b]).documentElement)};
mxStencilRegistry.parseStencilSet=function(a,b,c){if("stencils"==a.nodeName)for(var d=a.firstChild;null!=d;)"shapes"==d.nodeName&&mxStencilRegistry.parseStencilSet(d,b,c),d=d.nextSibling;else{c=null!=c?c:!0;var d=a.firstChild,f="";a=a.getAttribute("name");for(null!=a&&(f=a+".");null!=d;){if(d.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=d.getAttribute("name"),null!=a)){var f=f.toLowerCase(),e=a.replace(/ /g,"_");c&&mxStencilRegistry.addStencil(f+e.toLowerCase(),new mxStencil(d));if(null!=b){var l=d.getAttribute("w"),
k=d.getAttribute("h"),l=null==l?80:parseInt(l,10),k=null==k?80:parseInt(k,10);b(f,e,a,l,k)}}d=d.nextSibling}}};
-"undefined"!=typeof mxVertexHandler&&function(){function a(){var a=document.createElement("div");a.className="geHint";a.style.whiteSpace="nowrap";a.style.position="absolute";return a}function b(a,b){switch(b){case mxConstants.POINTS:return a;case mxConstants.MILLIMETERS:return(a/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(a/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(a/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
+"undefined"!==typeof mxVertexHandler&&function(){function a(){var a=document.createElement("div");a.className="geHint";a.style.whiteSpace="nowrap";a.style.position="absolute";return a}function b(a,b){switch(b){case mxConstants.POINTS:return a;case mxConstants.MILLIMETERS:return(a/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(a/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(a/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00a8ff";mxConstants.OUTLINE_COLOR="#00a8ff";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.EDGE_SELECTION_COLOR="#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=
!0;mxGraphHandler.prototype.guidesEnabled=!0;mxGraphHandler.prototype.removeEmptyParents=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(a){return!mxEvent.isAltDown(a)};var c=mxGraphLayout.prototype.isVertexIgnored;mxGraphLayout.prototype.isVertexIgnored=function(a){return c.apply(this,arguments)||this.graph.isTableRow(a)||this.graph.isTableCell(a)};var d=mxGraphLayout.prototype.isEdgeIgnored;mxGraphLayout.prototype.isEdgeIgnored=function(a){return d.apply(this,arguments)||
this.graph.isEdgeIgnored(a)};var f=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(a){return this.graph.isCloneEvent(a)!=f.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var a=new mxEllipse(null,this.highlightColor,this.highlightColor,0);a.opacity=mxConstants.HIGHLIGHT_OPACITY;return a};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
@@ -2824,7 +2826,7 @@ else{var c=this.getSelectionCell(),e=null,f=[],h=mxUtils.bind(this,function(b){i
if(null!=b&&1==a.length){var c=this.view.getState(b),e=this.view.getState(a[0]);if(null!=c&&null!=e&&"umlLifeline"==c.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(b),c=this.getCellGeometry(a[0]),null!=e&&null!=c)){d=e.clone();e=c.clone();e.x=d.x;e.y=d.y;d.x=c.x;d.y=c.y;this.model.beginUpdate();try{this.model.setGeometry(b,d),this.model.setGeometry(a[0],e)}finally{this.model.endUpdate()}d=!0}}return d};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(a,b,d,c,
e,f,g){if(!c&&this.swapUmlLifelines(a,e))return a;g=null!=g?g:{};if(this.isTable(e)){for(var h=[],k=0;k<a.length;k++)this.isTable(a[k])?h=h.concat(this.model.getChildCells(a[k],!0).reverse()):h.push(a[k]);a=h}this.model.beginUpdate();try{h=[];for(k=0;k<a.length;k++)if(null!=e&&this.isTableRow(a[k])){var l=this.model.getParent(a[k]),Q=this.getCellGeometry(a[k]);this.isTable(l)&&h.push(l);if(null!=l&&null!=Q&&this.isTable(l)&&this.isTable(e)&&(c||l!=e)){if(!c){var n=this.getCellGeometry(l);null!=n&&
(n=n.clone(),n.height-=Q.height,this.model.setGeometry(l,n))}n=this.getCellGeometry(e);null!=n&&(n=n.clone(),n.height+=Q.height,this.model.setGeometry(e,n));var T=this.model.getChildCells(e,!0);if(0<T.length){a[k]=c?this.cloneCell(a[k]):a[k];var p=this.model.getChildCells(a[k],!0),ca=this.model.getChildCells(T[0],!0),q=ca.length-p.length;if(0<q)for(var X=0;X<q;X++){var ga=this.cloneCell(p[p.length-1]);null!=ga&&(ga.value="",this.model.add(a[k],ga))}else if(0>q)for(X=0;X>q;X--)this.model.remove(p[p.length+
-X-1]);p=this.model.getChildCells(a[k],!0);for(X=0;X<ca.length;X++){var t=this.getCellGeometry(ca[X]),r=this.getCellGeometry(p[X]);null!=t&&null!=r&&(r=r.clone(),r.width=t.width,this.model.setGeometry(p[X],r))}}}}for(var sa=m.apply(this,arguments),k=0;k<h.length;k++)!c&&this.model.contains(h[k])&&0==this.model.getChildCount(h[k])&&this.model.remove(h[k]);c&&this.updateCustomLinks(this.createCellMapping(g,this.createCellLookup(a)),sa)}finally{this.model.endUpdate()}return sa};var n=Graph.prototype.removeCells;
+X-1]);p=this.model.getChildCells(a[k],!0);for(X=0;X<ca.length;X++){var r=this.getCellGeometry(ca[X]),t=this.getCellGeometry(p[X]);null!=r&&null!=t&&(t=t.clone(),t.width=r.width,this.model.setGeometry(p[X],t))}}}}for(var sa=m.apply(this,arguments),k=0;k<h.length;k++)!c&&this.model.contains(h[k])&&0==this.model.getChildCount(h[k])&&this.model.remove(h[k]);c&&this.updateCustomLinks(this.createCellMapping(g,this.createCellLookup(a)),sa)}finally{this.model.endUpdate()}return sa};var n=Graph.prototype.removeCells;
Graph.prototype.removeCells=function(a,b){var d=[];this.model.beginUpdate();try{for(var c=0;c<a.length;c++)if(this.isTableCell(a[c])){var e=this.model.getParent(a[c]),f=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(f)?0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(d,f)&&d.push(f):this.labelChanged(a[c],"")}else{if(this.isTableRow(a[c])&&(f=this.model.getParent(a[c]),0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(d,f))){for(var g=this.model.getChildCells(f,!0),h=0,k=0;k<
g.length;k++)0<=mxUtils.indexOf(a,g[k])&&h++;h==g.length&&d.push(f)}d.push(a[c])}d=n.apply(this,[d,b])}finally{this.model.endUpdate()}return d};Graph.prototype.updateCustomLinks=function(a,b,d){d=null!=d?d:new Graph;for(var c=0;c<b.length;c++)null!=b[c]&&d.updateCustomLinksForCell(a,b[c],d)};Graph.prototype.updateCustomLinksForCell=function(a,b){this.doUpdateCustomLinksForCell(a,b);for(var d=this.model.getChildCount(b),c=0;c<d;c++)this.updateCustomLinksForCell(a,this.model.getChildAt(b,c))};Graph.prototype.doUpdateCustomLinksForCell=
function(a,b){};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var d=mxUtils.getValue(a.style,"points",null);if(null!=d){var c=[];try{for(var e=JSON.parse(d),d=0;d<e.length;d++){var f=e[d];c.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}}catch(Ba){}return c}if(null!=a.shape&&null!=a.shape.bounds){f=a.shape.direction;e=a.shape.bounds;d=a.shape.scale;c=e.width/d;e=e.height/d;if(f==mxConstants.DIRECTION_NORTH||
@@ -2833,8 +2835,8 @@ this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a])}};Graph.prototype.isValidRoot=
this.isContainer(a))&&"0"!=mxUtils.getValue(c,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(a))&&!this.isTableRow(a)&&(!this.isTable(a)||f||e)&&!this.isCellLocked(a)};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(b&&null!=a&&null!=this.layoutManager){var d=
this.model.getParent(a);null!=d&&(d=this.layoutManager.getLayout(d),null!=d&&d.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a,b){var d=this.getModel(),c=[];d.beginUpdate();try{for(var e=0;e<a.length;e++){var f=a[e];if(d.isEdge(f)){var g=
d.getTerminal(f,!0),h=d.getTerminal(f,!1);d.setTerminal(f,h,!0);d.setTerminal(f,g,!1);var k=d.getGeometry(f);if(null!=k){k=k.clone();null!=k.points&&k.points.reverse();var l=k.getTerminalPoint(!0),m=k.getTerminalPoint(!1);k.setTerminalPoint(l,!1);k.setTerminalPoint(m,!0);d.setGeometry(f,k);var n=this.view.getState(f),Q=this.view.getState(g),p=this.view.getState(h);if(null!=n){var T=null!=Q?this.getConnectionConstraint(n,Q,!0):null,q=null!=p?this.getConnectionConstraint(n,p,!1):null;this.setConnectionConstraint(f,
-g,!0,q);this.setConnectionConstraint(f,h,!1,T);var t=mxUtils.getValue(n.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(n.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[f]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,t,[f])}c.push(f)}}else if(d.isVertex(f)&&(k=this.getCellGeometry(f),null!=k)){if(!(this.isTable(f)||this.isTableRow(f)||this.isTableCell(f)||this.isSwimlane(f))){k=k.clone();k.x+=k.width/
-2-k.height/2;k.y+=k.height/2-k.width/2;var r=k.width;k.width=k.height;k.height=r;d.setGeometry(f,k)}var u=this.view.getState(f);if(null!=u){var w=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Z=mxUtils.getValue(u.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,w[mxUtils.mod(mxUtils.indexOf(w,Z)+(b?-1:1),w.length)],[f])}c.push(f)}}}finally{d.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=
+g,!0,q);this.setConnectionConstraint(f,h,!1,T);var r=mxUtils.getValue(n.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(n.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[f]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,r,[f])}c.push(f)}}else if(d.isVertex(f)&&(k=this.getCellGeometry(f),null!=k)){if(!(this.isTable(f)||this.isTableRow(f)||this.isTableCell(f)||this.isSwimlane(f))){k=k.clone();k.x+=k.width/
+2-k.height/2;k.y+=k.height/2-k.width/2;var t=k.width;k.width=k.height;k.height=t;d.setGeometry(f,k)}var u=this.view.getState(f);if(null!=u){var w=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Z=mxUtils.getValue(u.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,w[mxUtils.mod(mxUtils.indexOf(w,Z)+(b?-1:1),w.length)],[f])}c.push(f)}}}finally{d.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=
function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};var p=Graph.prototype.processChange;Graph.prototype.processChange=function(a){if(a instanceof mxGeometryChange&&(this.isTableCell(a.cell)||this.isTableRow(a.cell))&&(null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))){var b=a.cell;this.isTableCell(b)&&(b=this.model.getParent(b));this.isTableRow(b)&&
(b=this.model.getParent(b));var d=this.view.getState(b);null!=d&&null!=d.shape&&(this.view.invalidate(b),d.shape.bounds=null)}p.apply(this,arguments);a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value&&this.invalidateDescendantsWithPlaceholders(a.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(a){a=this.model.getDescendants(a);if(0<a.length)for(var b=0;b<a.length;b++){var d=this.view.getState(a[b]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&
this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(a[b]):this.isReplacePlaceholders(a[b])&&this.view.invalidate(a[b],!1,!1)}};Graph.prototype.replaceElement=function(a,b){for(var d=a.ownerDocument.createElement(null!=b?b:"span"),c=Array.prototype.slice.call(a.attributes);attr=c.pop();)d.setAttribute(attr.nodeName,attr.nodeValue);d.innerHTML=a.innerHTML;a.parentNode.replaceChild(d,a)};Graph.prototype.processElements=function(a,b){if(null!=a)for(var d=a.getElementsByTagName("*"),c=
@@ -2865,83 +2867,86 @@ d[c-1]){for(b=b[c].getElementsByTagName("a");0<b.length;){for(d=b[0].parentNode;
Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var d=[],c=null,e=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var h=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,h):h,e=null!=e?Math.min(e,h):h;d.push(g)}}if(2<d.length){d.sort(function(b,d){return a?b.x-d.x:b.y-d.y});g=this.view.translate;h=this.view.scale;e=e/h-(a?g.x:g.y);c=c/h-(a?g.x:g.y);this.getModel().beginUpdate();
try{for(var k=(c-e)/(d.length-1),c=e,f=1;f<d.length-1;f++){var l=this.view.getState(this.model.getParent(d[f].cell)),m=this.getCellGeometry(d[f].cell),c=c+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(c-m.width/2)-l.origin.x:m.y=Math.round(c-m.height/2)-l.origin.y,this.getModel().setGeometry(d[f].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.createSvgImageExport=
function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.parseBackgroundImage=function(a){var b=null;null!=a&&0<a.length&&(a=JSON.parse(a),b=new mxImage(a.src,a.width,a.height));return b};Graph.prototype.getBackgroundImageObject=function(a){return a};Graph.prototype.getSvg=function(a,b,d,c,e,f,g,h,k,l,m,n,p,q){var Q=null;if(null!=q)for(Q=new mxDictionary,m=0;m<q.length;m++)Q.put(q[m],!0);if(q=this.useCssTransforms)this.useCssTransforms=
-!1,this.view.revalidate(),this.sizeDidChange();try{b=null!=b?b:1;d=null!=d?d:0;e=null!=e?e:!0;f=null!=f?f:!0;g=null!=g?g:!0;l=null!=l?l:!1;var T="page"==p?this.view.getBackgroundPageBounds():f&&null==Q||c||"diagram"==p?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),t=this.view.scale;"diagram"==p&&null!=this.backgroundImage&&(T=mxRectangle.fromRectangle(T),T.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*t,(this.view.translate.y+this.backgroundImage.y)*t,this.backgroundImage.width*
-t,this.backgroundImage.height*t)));if(null==T)throw Error(mxResources.get("drawingEmpty"));var ca=mxUtils.createXmlDocument(),r=null!=ca.createElementNS?ca.createElementNS(mxConstants.NS_SVG,"svg"):ca.createElement("svg");null!=a&&(null!=r.style?r.style.backgroundColor=a:r.setAttribute("style","background-color:"+a));null==ca.createElementNS?(r.setAttribute("xmlns",mxConstants.NS_SVG),r.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",
-mxConstants.NS_XLINK);a=b/t;var u=Math.max(1,Math.ceil(T.width*a)+2*d)+(l&&0==d?5:0),X=Math.max(1,Math.ceil(T.height*a)+2*d)+(l&&0==d?5:0);r.setAttribute("version","1.1");r.setAttribute("width",u+"px");r.setAttribute("height",X+"px");r.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+u+" "+X);ca.appendChild(r);var ga=null!=ca.createElementNS?ca.createElementNS(mxConstants.NS_SVG,"g"):ca.createElement("g");r.appendChild(ga);var w=this.createSvgCanvas(ga);w.foOffset=e?-.5:0;w.textOffset=e?-.5:0;w.imageOffset=
-e?-.5:0;w.translate(Math.floor(d/b-T.x/t),Math.floor(d/b-T.y/t));var Z=document.createElement("div"),x=w.getAlternateText;w.getAlternateText=function(a,b,d,c,e,f,g,h,k,l,m,n,p){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(Z.innerHTML=f,f=mxUtils.extractTextWithWhitespace(Z.childNodes));for(var Q=Math.ceil(2*c/this.state.fontSize),q=[],v=0,B=0;(0==Q||v<Q)&&B<f.length;){var A=f.charCodeAt(B);if(10==A||13==A){if(0<v)break}else q.push(f.charAt(B)),255>A&&v++;B++}q.length<f.length&&
-1<f.length-q.length&&(f=mxUtils.trim(q.join(""))+"...");return f}catch(E){return x.apply(this,arguments)}else return x.apply(this,arguments)};var D=this.backgroundImage;if(null!=D){b=t/b;var C=this.view.translate,z=new mxRectangle((D.x+C.x)*b,(D.y+C.y)*b,D.width*b,D.height*b);mxUtils.intersects(T,z)&&w.image(D.x+C.x,D.y+C.y,D.width,D.height,D.src,!0)}w.scale(a);w.textEnabled=g;h=null!=h?h:this.createSvgImageExport();var y=h.drawCellState,J=h.getLinkForCellState;h.getLinkForCellState=function(a,b){var d=
-J.apply(this,arguments);return null==d||a.view.graph.isCustomLink(d)?null:d};h.getLinkTargetForCellState=function(a,b){return a.view.graph.getLinkTargetForCell(a.cell)};h.drawCellState=function(a,b){for(var d=a.view.graph,c=null!=Q?Q.get(a.cell):d.isCellSelected(a.cell),e=d.model.getParent(a.cell);!(f&&null==Q||c)&&null!=e;)c=null!=Q?Q.get(e):d.isCellSelected(e),e=d.model.getParent(e);(f&&null==Q||c)&&y.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),w);this.updateSvgLinks(r,
-k,!0);this.addForeignObjectWarning(w,r);return r}finally{q&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if("0"!=urlParams["svg-warning"]&&0<b.getElementsByTagName("foreignObject").length){var d=a.createElement("switch"),c=a.createElement("g");c.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=a.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
-b.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var f=a.createElement("text");f.setAttribute("text-anchor","middle");f.setAttribute("font-size","10px");f.setAttribute("x","50%");f.setAttribute("y","100%");mxUtils.write(f,Graph.foreignObjectWarningText);d.appendChild(c);
-e.appendChild(f);d.appendChild(e);b.appendChild(d)}};Graph.prototype.updateSvgLinks=function(a,b,d){a=a.getElementsByTagName("a");for(var c=0;c<a.length;c++)if(null==a[c].getAttribute("target")){var e=a[c].getAttribute("href");null==e&&(e=a[c].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[c].setAttribute("target",b):d&&this.isCustomLink(e)&&a[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){a=new mxSvgCanvas2D(a);a.pointerEvents=
-!0;return a};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getSelectedEditingElement=function(){for(var a=this.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;null!=a&&a==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&
+!1,this.view.revalidate(),this.sizeDidChange();try{b=null!=b?b:1;d=null!=d?d:0;e=null!=e?e:!0;f=null!=f?f:!0;g=null!=g?g:!0;l=null!=l?l:!1;var T="page"==p?this.view.getBackgroundPageBounds():f&&null==Q||c||"diagram"==p?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),ca=this.view.scale;"diagram"==p&&null!=this.backgroundImage&&(T=mxRectangle.fromRectangle(T),T.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*ca,(this.view.translate.y+this.backgroundImage.y)*ca,
+this.backgroundImage.width*ca,this.backgroundImage.height*ca)));if(null==T)throw Error(mxResources.get("drawingEmpty"));var r=mxUtils.createXmlDocument(),t=null!=r.createElementNS?r.createElementNS(mxConstants.NS_SVG,"svg"):r.createElement("svg");null!=a&&(null!=t.style?t.style.backgroundColor=a:t.setAttribute("style","background-color:"+a));null==r.createElementNS?(t.setAttribute("xmlns",mxConstants.NS_SVG),t.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):t.setAttributeNS("http://www.w3.org/2000/xmlns/",
+"xmlns:xlink",mxConstants.NS_XLINK);a=b/ca;var X=Math.max(1,Math.ceil(T.width*a)+2*d)+(l&&0==d?5:0),u=Math.max(1,Math.ceil(T.height*a)+2*d)+(l&&0==d?5:0);t.setAttribute("version","1.1");t.setAttribute("width",X+"px");t.setAttribute("height",u+"px");t.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+X+" "+u);r.appendChild(t);var ga=null!=r.createElementNS?r.createElementNS(mxConstants.NS_SVG,"g"):r.createElement("g");t.appendChild(ga);var w=this.createSvgCanvas(ga);w.foOffset=e?-.5:0;w.textOffset=
+e?-.5:0;w.imageOffset=e?-.5:0;w.translate(Math.floor(d/b-T.x/ca),Math.floor(d/b-T.y/ca));var Z=document.createElement("div"),y=w.getAlternateText;w.getAlternateText=function(a,b,d,c,e,f,g,h,k,l,m,n,p){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(Z.innerHTML=f,f=mxUtils.extractTextWithWhitespace(Z.childNodes));for(var Q=Math.ceil(2*c/this.state.fontSize),q=[],v=0,B=0;(0==Q||v<Q)&&B<f.length;){var A=f.charCodeAt(B);if(10==A||13==A){if(0<v)break}else q.push(f.charAt(B)),255>
+A&&v++;B++}q.length<f.length&&1<f.length-q.length&&(f=mxUtils.trim(q.join(""))+"...");return f}catch(D){return y.apply(this,arguments)}else return y.apply(this,arguments)};var E=this.backgroundImage;if(null!=E){b=ca/b;var C=this.view.translate,z=new mxRectangle((E.x+C.x)*b,(E.y+C.y)*b,E.width*b,E.height*b);mxUtils.intersects(T,z)&&w.image(E.x+C.x,E.y+C.y,E.width,E.height,E.src,!0)}w.scale(a);w.textEnabled=g;h=null!=h?h:this.createSvgImageExport();var x=h.drawCellState,J=h.getLinkForCellState;h.getLinkForCellState=
+function(a,b){var d=J.apply(this,arguments);return null==d||a.view.graph.isCustomLink(d)?null:d};h.getLinkTargetForCellState=function(a,b){return a.view.graph.getLinkTargetForCell(a.cell)};h.drawCellState=function(a,b){for(var d=a.view.graph,c=null!=Q?Q.get(a.cell):d.isCellSelected(a.cell),e=d.model.getParent(a.cell);!(f&&null==Q||c)&&null!=e;)c=null!=Q?Q.get(e):d.isCellSelected(e),e=d.model.getParent(e);(f&&null==Q||c)&&x.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),
+w);this.updateSvgLinks(t,k,!0);this.addForeignObjectWarning(w,t);return t}finally{q&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if("0"!=urlParams["svg-warning"]&&0<b.getElementsByTagName("foreignObject").length){var d=a.createElement("switch"),c=a.createElement("g");c.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=a.createElement("a");e.setAttribute("transform","translate(0,-5)");
+null==e.setAttributeNS||b.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var f=a.createElement("text");f.setAttribute("text-anchor","middle");f.setAttribute("font-size","10px");f.setAttribute("x","50%");f.setAttribute("y","100%");mxUtils.write(f,Graph.foreignObjectWarningText);
+d.appendChild(c);e.appendChild(f);d.appendChild(e);b.appendChild(d)}};Graph.prototype.updateSvgLinks=function(a,b,d){a=a.getElementsByTagName("a");for(var c=0;c<a.length;c++)if(null==a[c].getAttribute("target")){var e=a[c].getAttribute("href");null==e&&(e=a[c].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[c].setAttribute("target",b):d&&this.isCustomLink(e)&&a[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){a=new mxSvgCanvas2D(a);
+a.pointerEvents=!0;return a};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getSelectedEditingElement=function(){for(var a=this.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;null!=a&&a==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&
this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=this.cellEditor.textarea.firstChild);return a};Graph.prototype.getParentByName=function(a,b,d){for(;null!=a&&a.nodeName!=b;){if(a==d)return null;a=a.parentNode}return a};Graph.prototype.getParentByNames=function(a,b,d){for(;null!=a&&!(0<=mxUtils.indexOf(b,a.nodeName));){if(a==d)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&
-b.rangeCount){var d=document.createRange();d.selectNode(a);b.removeAllRanges();b.addRange(d)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),d=b.createRange(),d.setEndPoint("StartToStart",a),d.select())};Graph.prototype.deleteCells=function(a,b){var d=null;if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++){var e=this.model.getParent(a[c]);if(this.isTable(e)){var f=this.getCellGeometry(a[c]),g=this.getCellGeometry(e);null!=f&&null!=g&&
-(g=g.clone(),g.height-=f.height,this.model.setGeometry(e,g))}}var h=this.selectParentAfterDelete?this.model.getParents(a):null;this.removeCells(a,b)}finally{this.model.endUpdate()}if(null!=h)for(d=[],c=0;c<h.length;c++)this.model.contains(h[c])&&(this.model.isVertex(h[c])||this.model.isEdge(h[c]))&&d.push(h[c])}return d};Graph.prototype.insertTableColumn=function(a,b){var d=this.getModel();d.beginUpdate();try{var c=a,e=0;if(this.isTableCell(a))var f=d.getParent(a),c=d.getParent(f),e=mxUtils.indexOf(d.getChildCells(f,
-!0),a);else this.isTableRow(a)?c=d.getParent(a):a=d.getChildCells(c,!0)[0],b||(e=d.getChildCells(a,!0).length-1);for(var g=d.getChildCells(c,!0),h=Graph.minTableColumnWidth,f=0;f<g.length;f++){var k=d.getChildCells(g[f],!0)[e],l=d.cloneCell(k,!1),m=this.getCellGeometry(l);l.value=null;l.style=mxUtils.setStyle(mxUtils.setStyle(l.style,"rowspan",null),"colspan",null);if(null!=m){null!=m.alternateBounds&&(m.width=m.alternateBounds.width,m.height=m.alternateBounds.height,m.alternateBounds=null);var h=
-m.width,n=this.getCellGeometry(g[f]);null!=n&&(m.height=n.height)}d.add(g[f],l,e+(b?0:1))}var p=this.getCellGeometry(c);null!=p&&(p=p.clone(),p.width+=h,d.setGeometry(c,p))}finally{d.endUpdate()}};Graph.prototype.deleteLane=function(a){var b=this.getModel();b.beginUpdate();try{var d=null,d="stackLayout"==this.getCurrentCellStyle(a).childLayout?a:b.getParent(a),c=b.getChildCells(d,!0);0==c.length?b.remove(d):(d==a&&(a=c[c.length-1]),b.remove(a))}finally{b.endUpdate()}};Graph.prototype.insertLane=function(a,
-b){var d=this.getModel();d.beginUpdate();try{var c=null,e=a;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var c=e,f=d.getChildCells(c,!0),e=f[b?0:f.length-1];else c=d.getParent(e);var g=c.getIndex(e),e=d.cloneCell(e,!1);e.value=null;d.add(c,e,g+(b?0:1))}finally{d.endUpdate()}};Graph.prototype.insertTableRow=function(a,b){var d=this.getModel();d.beginUpdate();try{var c=a,e=a;if(this.isTableCell(a))e=d.getParent(a),c=d.getParent(e);else if(this.isTableRow(a))c=d.getParent(a);else var f=
-d.getChildCells(c,!0),e=f[b?0:f.length-1];var g=d.getChildCells(e,!0),h=c.getIndex(e),e=d.cloneCell(e,!1);e.value=null;var k=this.getCellGeometry(e);if(null!=k){for(f=0;f<g.length;f++){a=d.cloneCell(g[f],!1);a.value=null;a.style=mxUtils.setStyle(mxUtils.setStyle(a.style,"rowspan",null),"colspan",null);var l=this.getCellGeometry(a);null!=l&&(null!=l.alternateBounds&&(l.width=l.alternateBounds.width,l.height=l.alternateBounds.height,l.alternateBounds=null),l.height=k.height);e.insert(a)}d.add(c,e,h+
-(b?0:1));var m=this.getCellGeometry(c);null!=m&&(m=m.clone(),m.height+=k.height,d.setGeometry(c,m))}}finally{d.endUpdate()}};Graph.prototype.deleteTableColumn=function(a){var b=this.getModel();b.beginUpdate();try{var d=a,c=a;this.isTableCell(a)&&(c=b.getParent(a));this.isTableRow(c)&&(d=b.getParent(c));var e=b.getChildCells(d,!0);if(0==e.length)b.remove(d);else{this.isTableRow(c)||(c=e[0]);var f=b.getChildCells(c,!0);if(1>=f.length)b.remove(d);else{var g=f.length-1;this.isTableCell(a)&&(g=mxUtils.indexOf(f,
-a));for(c=a=0;c<e.length;c++){var h=b.getChildCells(e[c],!0)[g];b.remove(h);var k=this.getCellGeometry(h);null!=k&&(a=Math.max(a,k.width))}var l=this.getCellGeometry(d);null!=l&&(l=l.clone(),l.width-=a,b.setGeometry(d,l))}}}finally{b.endUpdate()}};Graph.prototype.deleteTableRow=function(a){var b=this.getModel();b.beginUpdate();try{var d=a,c=a;this.isTableCell(a)&&(a=c=b.getParent(a));this.isTableRow(a)&&(d=b.getParent(c));var e=b.getChildCells(d,!0);if(1>=e.length)b.remove(d);else{this.isTableRow(c)||
-(c=e[e.length-1]);b.remove(c);a=0;var f=this.getCellGeometry(c);null!=f&&(a=f.height);var g=this.getCellGeometry(d);null!=g&&(g=g.clone(),g.height-=a,b.setGeometry(d,g))}}finally{b.endUpdate()}};Graph.prototype.insertRow=function(a,b){for(var d=a.tBodies[0],c=d.rows[0].cells,e=0,f=0;f<c.length;f++)var g=c[f].getAttribute("colspan"),e=e+(null!=g?parseInt(g):1);d=d.insertRow(b);for(f=0;f<e;f++)mxUtils.br(d.insertCell(-1));return d.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};
-Graph.prototype.insertColumn=function(a,b){var d=a.tHead;if(null!=d)for(var c=0;c<d.rows.length;c++){var e=document.createElement("th");d.rows[c].appendChild(e);mxUtils.br(e)}d=a.tBodies[0];for(c=0;c<d.rows.length;c++)e=d.rows[c].insertCell(b),mxUtils.br(e);return d.rows[0].cells[0<=b?b:d.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var d=a.tBodies[0].rows,c=0;c<d.length;c++)d[c].cells.length>b&&d[c].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;
-if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var d=document.createElement("div");d.innerHTML=a;a=document.createDocumentFragment();for(var c;c=d.firstChild;)lastNode=a.appendChild(c);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function d(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));
-return a}a=null!=a?a:"javascript:void(0);";if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var c=document.createElement("a");c.setAttribute("rel",this.linkRelation);c.setAttribute("href",this.getAbsoluteUrl(a));c.setAttribute("title",d(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&c.setAttribute("target",this.linkTarget);mxUtils.write(c,d(b,40));this.isCustomLink(a)&&mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.customLinkClicked(a);
-mxEvent.consume(b)}));return c};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(a,b){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(b){b=a.apply(this,arguments);if(mxEvent.isTouchEvent(b.getEvent())&&null==b.getState()){var d=this.getCellAt(b.graphX,b.graphY);null!=d&&this.isSwimlane(d)&&this.hitsSwimlaneContent(d,b.graphX,
-b.graphY)||(b.state=this.view.getState(d),null!=b.state&&null!=b.state.shape&&(this.container.style.cursor=b.state.shape.node.style.cursor))}null==b.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return b};var b=!1,d=!1,c=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(a,f,g){a==mxEvent.MOUSE_DOWN&&(f=this.updateMouseEvent(f),b=this.isCellSelected(f.getCell()),d=this.isSelectionEmpty(),c=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=
-mxUtils.bind(this,function(a,e){var f=mxEvent.isMouseEvent(e.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!c&&!f&&(d&&null==e.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(e.getCell())));f=!b||f?null:mxUtils.bind(this,function(a){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var b=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(e.getX()+
-b.x+1,e.getY()+b.y+1,a,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[a,e,f])})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var a="";window.getSelection?a=window.getSelection():
-document.getSelection?a=document.getSelection():document.selection&&(a=document.selection.createRange().text);return""!=a};mxCellEditor.prototype.insertTab=function(a){var b=this.textarea.ownerDocument.defaultView.getSelection(),d=b.getRangeAt(0),c="\t";if(null!=a)for(c="";0<a;)c+=" ",a--;a=document.createElement("span");a.style.whiteSpace="pre";a.appendChild(document.createTextNode(c));d.insertNode(a);d.setStartAfter(a);d.setEndAfter(a);b.removeAllRanges();b.addRange(d)};mxCellEditor.prototype.alignText=
-function(a,b){var d=null!=b&&mxEvent.isShiftDown(b);if(d||null!=window.getSelection&&null!=window.getSelection().containsNode){var c=!0;this.graph.processElements(this.textarea,function(a){d||window.getSelection().containsNode(a,!0)?(a.removeAttribute("align"),a.style.textAlign=null):c=!1});c&&this.graph.cellEditor.setAlign(a)}document.execCommand("justify"+a.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&
-a.rangeCount){for(var b=[],d=0,c=a.rangeCount;d<c;++d)b.push(a.getRangeAt(d));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,d=a.length;b<d;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(X){}};var t=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
-function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));t.apply(this,arguments)};var u=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?u.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var r=mxCellEditor.prototype.startEditing;
-mxCellEditor.prototype.startEditing=function(a,b){a=this.graph.getStartEditingCell(a,b);r.apply(this,arguments);var d=this.graph.view.getState(a);this.textarea.className=null!=d&&1==d.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var d=this.graph.getModel().getParent(a),c=this.graph.getCellGeometry(a);if(this.graph.getModel().isEdge(d)&&null!=c&&c.relative||this.graph.getModel().isEdge(a))this.textarea.style.outline=
-mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var x=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,d){d.originalNode=a;a=a.firstChild;for(var c=d.firstChild;null!=a&&null!=c;)b(a,c),a=a.nextSibling,c=c.nextSibling;return d}function d(a,b){if(null!=a)if(b.originalNode!=a)c(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?c(a):(d(a,b),b=b.nextSibling);a=e}}function c(a){for(var b=
-a.firstChild;null!=b;){var d=b.nextSibling;c(b);b=d}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}x.apply(this,arguments);
-7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var c=b(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]>")?d(this.textarea,c):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);
-if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),d=this.saveSelection();if(this.codeViewMode){k=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<k.length&&"\n"==k.charAt(k.length-1)&&(k=k.substring(0,k.length-1));k=this.graph.sanitizeHtml(b?k.replace(/\n/g,"<br/>"):k,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,
-mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,h=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&h.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,
-0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&h.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration=h.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding=
-"0px";this.textarea.innerHTML!=k&&(this.textarea.innerHTML=k,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.innerHTML="");var k=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(k=mxUtils.replaceTrailingNewlines(k,"<div><br></div>"));k=this.graph.sanitizeHtml(b?
-k.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):k,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var c=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"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!=k&&(this.textarea.innerHTML=k);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=d;this.resize()}};var y=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=
-a){var d=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*d;this.bounds.height=60*d;var c=null!=a.text?a.text.margin:null;null==c&&(c=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=c.x*this.bounds.width;this.bounds.y+=c.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-
-4)/d)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/d)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/d)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*d);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/d)+(this.textarea.offsetWidth-this.textarea.clientWidth)+
-"px",this.bounds.width=parseInt(this.textarea.style.width)*d);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+d+","+d+")")}else this.textarea.style.height="",this.textarea.style.overflow="",y.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html",
-"0"))return mxCellEditorGetInitialValue.apply(this,arguments);var d=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(d=d.replace(/\n/g,"<br/>"));return d=this.graph.sanitizeHtml(d,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b=
-"1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var w=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();w.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(Q){}};var F=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();
-try{F.apply(this,arguments),""==b&&this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)&&this.graph.isTransparentState(a)&&this.graph.removeCells([a.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var b=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=b&&b!=mxConstants.NONE||!(null!=a.cell.geometry&&0<a.cell.geometry.width)||0==mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0)&&0!=
-mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)||(b=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,null));b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getBorderColor=function(a){var b=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=b&&b!=mxConstants.NONE||!(null!=a.cell.geometry&&0<a.cell.geometry.width)||0==mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)||(b=mxUtils.getValue(a.style,
-mxConstants.STYLE_STROKECOLOR,null));b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize=function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(a,b){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(b.getEvent)};mxGraphView.prototype.formatUnitText=function(a){return a?
-b(a,this.unit):a};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var c=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+this.currentDx)/e-c.x);c=this.roundLength((this.bounds.y+this.currentDy)/e-c.y);e=this.graph.view.unit;this.hint.innerHTML=b(d,e)+", "+b(c,e);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 H=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(a,b){H.apply(this,arguments);var d=this.graph.getCellStyle(a);if(null==d.childLayout){var c=this.graph.model.getParent(a),e=null!=c?this.graph.getCellGeometry(c):null;
-if(null!=e&&(d=this.graph.getCellStyle(c),"stackLayout"==d.childLayout)){var f=parseFloat(mxUtils.getValue(d,"stackBorder",mxStackLayout.prototype.border)),d="1"==mxUtils.getValue(d,"horizontalStack","1"),g=this.graph.getActualStartSize(c),e=e.clone();d?e.height=b.height+g.y+g.height+2*f:e.width=b.width+g.x+g.width+2*f;this.graph.model.setGeometry(c,e)}}};var C=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function a(a){d.get(a)||
-(d.put(a,!0),e.push(a))}for(var b=C.apply(this,arguments),d=new mxDictionary,c=this.graph.model,e=[],f=0;f<b.length;f++){var g=b[f];this.graph.isTableCell(g)?a(c.getParent(c.getParent(g))):this.graph.isTableRow(g)&&a(c.getParent(g));a(g)}return e};var D=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(a){var b=D.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};var z=mxEdgeHandler.prototype.createParentHighlightShape;
-mxEdgeHandler.prototype.createParentHighlightShape=function(a){var b=z.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var a=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+a.x/2,this.bounds.y+this.rotationHandleVSpacing-a.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return this.graph.isRecursiveVertexResize(a)&&
-!mxEvent.isControlDown(b.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())};var G=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return G.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 J=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return J.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&
-!this.graph.isTableRow(this.state.cell)};var L=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(a){return a.tableHandle||L.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var a=0;this.graph.isTableRow(this.state.cell)?a=1:this.graph.isTableCell(this.state.cell)&&(a=2);return a};var O=mxVertexHandler.prototype.getSelectionBorderBounds;
-mxVertexHandler.prototype.getSelectionBorderBounds=function(){return O.apply(this,arguments).grow(-this.getSelectionBorderInset())};var K=null,P=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==K&&(K=mxCellRenderer.defaultShapes.tableLine);var a=P.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var b=function(a,b,d){for(var c=[],e=0;e<a.length;e++){var g=a[e];c.push(null==g?null:new mxPoint((k+g.x+b)*f,(l+g.y+d)*f))}return c},
-d=this,c=this.graph,e=c.model,f=c.view.scale,g=this.state,h=this.selectionBorder,k=this.state.origin.x+c.view.translate.x,l=this.state.origin.y+c.view.translate.y;null==a&&(a=[]);var m=c.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<m.length){for(var n=e.getChildCells(m[0].cell,!0),p=c.getTableLines(this.state.cell,!1,!0),q=c.getTableLines(this.state.cell,!0,!1),e=0;e<m.length;e++)mxUtils.bind(this,function(e){var k=m[e],l=e<m.length-1?m[e+1]:null,l=null!=l?c.getCellGeometry(l.cell):
-null,n=null!=l&&null!=l.alternateBounds?l.alternateBounds:l,l=null!=q[e]?new K(q[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);l.isDashed=h.isDashed;l.svgStrokeTolerance++;k=new mxHandle(k,"row-resize",null,l);k.tableHandle=!0;var p=0;k.shape.node.parentNode.insertBefore(k.shape.node,k.shape.node.parentNode.firstChild);k.redraw=function(){if(null!=this.shape){this.shape.stroke=0==p?mxConstants.NONE:h.stroke;if(this.shape.constructor==K)this.shape.line=b(q[e],0,p),this.shape.updateBoundsFromLine();
-else{var a=c.getActualStartSize(g.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+p*f;this.shape.bounds.x=g.x+(e==m.length-1?0:a.x*f);this.shape.bounds.width=g.width-(e==m.length-1?0:a.width+a.x+f)}this.shape.redraw()}};var t=!1;k.setPosition=function(a,b,d){p=Math.max(Graph.minTableRowHeight-a.height,b.y-a.y-a.height);t=mxEvent.isShiftDown(d.getEvent());null!=n&&t&&(p=Math.min(p,n.height-Graph.minTableRowHeight))};k.execute=function(a){if(0!=p)c.setTableRowHeight(this.state.cell,
-p,!t);else if(!d.blockDelayedSelection){var b=c.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;c.graphHandler.selectCellForEvent(b,a)}p=0};k.reset=function(){p=0};a.push(k)})(e);for(e=0;e<n.length;e++)mxUtils.bind(this,function(e){var k=c.view.getState(n[e]),l=c.getCellGeometry(n[e]),m=null!=l.alternateBounds?l.alternateBounds:l;null==k&&(k=new mxCellState(c.view,n[e],c.getCellStyle(n[e])),k.x=g.x+l.x*f,k.y=g.y+l.y*f,k.width=m.width*f,k.height=m.height*f,k.updateCachedBounds());var l=e<n.length-1?
-n[e+1]:null,l=null!=l?c.getCellGeometry(l):null,q=null!=l&&null!=l.alternateBounds?l.alternateBounds:l,l=null!=p[e]?new K(p[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);l.isDashed=h.isDashed;l.svgStrokeTolerance++;k=new mxHandle(k,"col-resize",null,l);k.tableHandle=!0;var t=0;k.shape.node.parentNode.insertBefore(k.shape.node,k.shape.node.parentNode.firstChild);k.redraw=function(){if(null!=this.shape){this.shape.stroke=0==t?mxConstants.NONE:h.stroke;if(this.shape.constructor==
-K)this.shape.line=b(p[e],t,0),this.shape.updateBoundsFromLine();else{var a=c.getActualStartSize(g.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(m.width+t)*f;this.shape.bounds.y=g.y+(e==n.length-1?0:a.y*f);this.shape.bounds.height=g.height-(e==n.length-1?0:(a.height+a.y)*f)}this.shape.redraw()}};var r=!1;k.setPosition=function(a,b,d){t=Math.max(Graph.minTableColumnWidth-m.width,b.x-a.x-m.width);r=mxEvent.isShiftDown(d.getEvent());null==q||r||(t=Math.min(t,q.width-Graph.minTableColumnWidth))};
-k.execute=function(a){if(0!=t)c.setTableColumnWidth(this.state.cell,t,r);else if(!d.blockDelayedSelection){var b=c.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;c.graphHandler.selectCellForEvent(b,a)}t=0};k.positionChanged=function(){};k.reset=function(){t=0};a.push(k)})(e)}}return null!=a?a.reverse():null};var Y=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){Y.apply(this,arguments);if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.visibility=
-a?"":"hidden";if(null!=this.cornerHandles)for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.visibility=a?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var a=this.graph.model;if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);this.moveHandles=null}this.moveHandles=[];for(b=0;b<a.getChildCount(this.state.cell);b++)mxUtils.bind(this,function(b){if(null!=b&&a.isVertex(b.cell)){var d=
-mxUtils.createImage(Editor.rowMoveImage);d.style.position="absolute";d.style.cursor="pointer";d.style.width="7px";d.style.height="4px";d.style.padding="4px 2px 4px 2px";d.rowState=b;mxEvent.addGestureListeners(d,mxUtils.bind(this,function(a){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(a)&&this.graph.isCellSelected(b.cell)||this.graph.selectCellForEvent(b.cell,a);mxEvent.isPopupTrigger(a)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),
-mxEvent.getClientY(a),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0);mxEvent.consume(a)}),null,mxUtils.bind(this,function(a){mxEvent.isPopupTrigger(a)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(a),mxEvent.getClientY(a),b.cell,a),mxEvent.consume(a))}));this.moveHandles.push(d);this.graph.container.appendChild(d)}})(this.graph.view.getState(a.getChildAt(this.state.cell,b)))};mxVertexHandler.prototype.refresh=
-function(){if(null!=this.customHandles){for(var a=0;a<this.customHandles.length;a++)this.customHandles[a].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ba=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance,d=this.state.style.shape;null==mxCellRenderer.defaultShapes[d]&&mxStencilRegistry.getStencil(d);d=this.graph.isTable(this.state.cell)||
-this.graph.cellEditor.getEditingCell()==this.state.cell;if(!d&&null!=this.customHandles)for(var c=0;c<this.customHandles.length;c++)if(null!=this.customHandles[c].shape&&null!=this.customHandles[c].shape.bounds){var e=this.customHandles[c].shape.bounds,f=e.getCenterX(),g=e.getCenterY();if(Math.abs(this.state.x-f)<e.width/2||Math.abs(this.state.y-g)<e.height/2||Math.abs(this.state.x+this.state.width-f)<e.width/2||Math.abs(this.state.y+this.state.height-g)<e.height/2){d=!0;break}}d&&null!=this.sizers&&
-0<this.sizers.length&&null!=this.sizers[0]?(b/=2,this.graph.isTable(this.state.cell)&&(b+=7),a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+b):a=ba.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(d){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{d=this.state.view.scale;var c=this.state.view.unit;
-this.hint.innerHTML=b(this.roundLength(this.bounds.width/d),c)+" x "+b(this.roundLength(this.bounds.height/d),c)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=d.y+d.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 M=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(a,b){M.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 R=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(a,b){R.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&
-(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,c){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,f=this.graph.view.scale,g=this.roundLength(c.x/f-e.x),e=this.roundLength(c.y/f-e.y),f=this.graph.view.unit;this.hint.innerHTML=b(g,f)+", "+b(e,f);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?
-(g=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*g.x)+"%, "+Math.round(100*g.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),c.y)+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};Graph.prototype.expandedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="50%" y1="0%" x2="50%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 2 4.5 L 7 4.5 z" stroke="#000"/>');
-Graph.prototype.collapsedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 4.5 2 L 4.5 7 M 2 4.5 L 7 4.5 z" stroke="#000"/>');mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=
-Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.endMainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.secondaryHandle=Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>');HoverIcons.prototype.fixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');
+b.rangeCount){var d=document.createRange();d.selectNode(a);b.removeAllRanges();b.addRange(d)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),d=b.createRange(),d.setEndPoint("StartToStart",a),d.select())};Graph.prototype.flipEdge=function(a,b,d){var c=this.getCellGeometry(a);if(null!=c){c=c.clone();if(null!=c.points)for(var e=0;e<c.points.length;e++)b?c.points[e].x=d+(d-c.points[e].x):c.points[e].y=d+(d-c.points[e].y);e=function(a){null!=a&&(b?a.x=d+(d-a.x):a.y=d+
+(d-a.y))};e(c.getTerminalPoint(!0));e(c.getTerminalPoint(!1));this.model.setGeometry(a,c)}};Graph.prototype.flipChildren=function(a,b,d){this.model.beginUpdate();try{for(var c=this.model.getChildCount(a),e=0;e<c;e++){var f=this.model.getChildAt(a,e);if(this.model.isEdge(f))this.flipEdge(f,b,d);else{var g=this.getCellGeometry(f);null!=g&&(g=g.clone(),b?g.x=d+(d-g.x-g.width):g.y=d+(d-g.y-g.height),this.model.setGeometry(f,g))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(a,b){this.model.beginUpdate();
+try{a=this.model.getTopmostCells(a);for(var d=[],c=0;c<a.length;c++)if(this.model.isEdge(a[c])){var e=this.view.getState(a[c]);null!=e&&this.flipEdge(a[c],b,(b?e.getCenterX():e.getCenterY())/this.view.scale-(b?e.origin.x:e.origin.y)-(b?this.view.translate.x:this.view.translate.y))}else{var f=this.getCellGeometry(a[c]);null!=f&&this.flipChildren(a[c],b,b?f.getCenterX()-f.x:f.getCenterY()-f.y);d.push(a[c])}this.toggleCellStyles(b?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,d)}finally{this.model.endUpdate()}};
+Graph.prototype.deleteCells=function(a,b){var d=null;if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++){var e=this.model.getParent(a[c]);if(this.isTable(e)){var f=this.getCellGeometry(a[c]),g=this.getCellGeometry(e);null!=f&&null!=g&&(g=g.clone(),g.height-=f.height,this.model.setGeometry(e,g))}}var h=this.selectParentAfterDelete?this.model.getParents(a):null;this.removeCells(a,b)}finally{this.model.endUpdate()}if(null!=h)for(d=[],c=0;c<h.length;c++)this.model.contains(h[c])&&
+(this.model.isVertex(h[c])||this.model.isEdge(h[c]))&&d.push(h[c])}return d};Graph.prototype.insertTableColumn=function(a,b){var d=this.getModel();d.beginUpdate();try{var c=a,e=0;if(this.isTableCell(a))var f=d.getParent(a),c=d.getParent(f),e=mxUtils.indexOf(d.getChildCells(f,!0),a);else this.isTableRow(a)?c=d.getParent(a):a=d.getChildCells(c,!0)[0],b||(e=d.getChildCells(a,!0).length-1);for(var g=d.getChildCells(c,!0),h=Graph.minTableColumnWidth,f=0;f<g.length;f++){var k=d.getChildCells(g[f],!0)[e],
+l=d.cloneCell(k,!1),m=this.getCellGeometry(l);l.value=null;l.style=mxUtils.setStyle(mxUtils.setStyle(l.style,"rowspan",null),"colspan",null);if(null!=m){null!=m.alternateBounds&&(m.width=m.alternateBounds.width,m.height=m.alternateBounds.height,m.alternateBounds=null);var h=m.width,n=this.getCellGeometry(g[f]);null!=n&&(m.height=n.height)}d.add(g[f],l,e+(b?0:1))}var p=this.getCellGeometry(c);null!=p&&(p=p.clone(),p.width+=h,d.setGeometry(c,p))}finally{d.endUpdate()}};Graph.prototype.deleteLane=function(a){var b=
+this.getModel();b.beginUpdate();try{var d=null,d="stackLayout"==this.getCurrentCellStyle(a).childLayout?a:b.getParent(a),c=b.getChildCells(d,!0);0==c.length?b.remove(d):(d==a&&(a=c[c.length-1]),b.remove(a))}finally{b.endUpdate()}};Graph.prototype.insertLane=function(a,b){var d=this.getModel();d.beginUpdate();try{var c=null,e=a;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var c=e,f=d.getChildCells(c,!0),e=f[b?0:f.length-1];else c=d.getParent(e);var g=c.getIndex(e),e=d.cloneCell(e,!1);
+e.value=null;d.add(c,e,g+(b?0:1))}finally{d.endUpdate()}};Graph.prototype.insertTableRow=function(a,b){var d=this.getModel();d.beginUpdate();try{var c=a,e=a;if(this.isTableCell(a))e=d.getParent(a),c=d.getParent(e);else if(this.isTableRow(a))c=d.getParent(a);else var f=d.getChildCells(c,!0),e=f[b?0:f.length-1];var g=d.getChildCells(e,!0),h=c.getIndex(e),e=d.cloneCell(e,!1);e.value=null;var k=this.getCellGeometry(e);if(null!=k){for(f=0;f<g.length;f++){a=d.cloneCell(g[f],!1);a.value=null;a.style=mxUtils.setStyle(mxUtils.setStyle(a.style,
+"rowspan",null),"colspan",null);var l=this.getCellGeometry(a);null!=l&&(null!=l.alternateBounds&&(l.width=l.alternateBounds.width,l.height=l.alternateBounds.height,l.alternateBounds=null),l.height=k.height);e.insert(a)}d.add(c,e,h+(b?0:1));var m=this.getCellGeometry(c);null!=m&&(m=m.clone(),m.height+=k.height,d.setGeometry(c,m))}}finally{d.endUpdate()}};Graph.prototype.deleteTableColumn=function(a){var b=this.getModel();b.beginUpdate();try{var d=a,c=a;this.isTableCell(a)&&(c=b.getParent(a));this.isTableRow(c)&&
+(d=b.getParent(c));var e=b.getChildCells(d,!0);if(0==e.length)b.remove(d);else{this.isTableRow(c)||(c=e[0]);var f=b.getChildCells(c,!0);if(1>=f.length)b.remove(d);else{var g=f.length-1;this.isTableCell(a)&&(g=mxUtils.indexOf(f,a));for(c=a=0;c<e.length;c++){var h=b.getChildCells(e[c],!0)[g];b.remove(h);var k=this.getCellGeometry(h);null!=k&&(a=Math.max(a,k.width))}var l=this.getCellGeometry(d);null!=l&&(l=l.clone(),l.width-=a,b.setGeometry(d,l))}}}finally{b.endUpdate()}};Graph.prototype.deleteTableRow=
+function(a){var b=this.getModel();b.beginUpdate();try{var d=a,c=a;this.isTableCell(a)&&(a=c=b.getParent(a));this.isTableRow(a)&&(d=b.getParent(c));var e=b.getChildCells(d,!0);if(1>=e.length)b.remove(d);else{this.isTableRow(c)||(c=e[e.length-1]);b.remove(c);a=0;var f=this.getCellGeometry(c);null!=f&&(a=f.height);var g=this.getCellGeometry(d);null!=g&&(g=g.clone(),g.height-=a,b.setGeometry(d,g))}}finally{b.endUpdate()}};Graph.prototype.insertRow=function(a,b){for(var d=a.tBodies[0],c=d.rows[0].cells,
+e=0,f=0;f<c.length;f++)var g=c[f].getAttribute("colspan"),e=e+(null!=g?parseInt(g):1);d=d.insertRow(b);for(f=0;f<e;f++)mxUtils.br(d.insertCell(-1));return d.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn=function(a,b){var d=a.tHead;if(null!=d)for(var c=0;c<d.rows.length;c++){var e=document.createElement("th");d.rows[c].appendChild(e);mxUtils.br(e)}d=a.tBodies[0];for(c=0;c<d.rows.length;c++)e=d.rows[c].insertCell(b),mxUtils.br(e);return d.rows[0].cells[0<=
+b?b:d.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var d=a.tBodies[0].rows,c=0;c<d.length;c++)d[c].cells.length>b&&d[c].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var d=document.createElement("div");d.innerHTML=a;a=document.createDocumentFragment();for(var c;c=d.firstChild;)lastNode=a.appendChild(c);b.insertNode(a)}}else(b=document.selection)&&
+"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function d(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));return a}a=null!=a?a:"javascript:void(0);";if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var c=document.createElement("a");c.setAttribute("rel",this.linkRelation);c.setAttribute("href",this.getAbsoluteUrl(a));c.setAttribute("title",d(this.isCustomLink(a)?this.getLinkTitle(a):
+a,80));null!=this.linkTarget&&c.setAttribute("target",this.linkTarget);mxUtils.write(c,d(b,40));this.isCustomLink(a)&&mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.customLinkClicked(a);mxEvent.consume(b)}));return c};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(a,b){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=
+function(b){b=a.apply(this,arguments);if(mxEvent.isTouchEvent(b.getEvent())&&null==b.getState()){var d=this.getCellAt(b.graphX,b.graphY);null!=d&&this.isSwimlane(d)&&this.hitsSwimlaneContent(d,b.graphX,b.graphY)||(b.state=this.view.getState(d),null!=b.state&&null!=b.state.shape&&(this.container.style.cursor=b.state.shape.node.style.cursor))}null==b.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return b};var b=!1,d=!1,c=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(a,
+f,g){a==mxEvent.MOUSE_DOWN&&(f=this.updateMouseEvent(f),b=this.isCellSelected(f.getCell()),d=this.isSelectionEmpty(),c=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,e){var f=mxEvent.isMouseEvent(e.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!c&&!f&&(d&&null==e.getCell()&&this.isSelectionEmpty()||
+b&&this.isCellSelected(e.getCell())));f=!b||f?null:mxUtils.bind(this,function(a){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var b=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(e.getX()+b.x+1,e.getY()+b.y+1,a,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[a,e,f])})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.isTableSelected=
+function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var a="";window.getSelection?a=window.getSelection():document.getSelection?a=document.getSelection():document.selection&&(a=document.selection.createRange().text);return""!=a};mxCellEditor.prototype.insertTab=function(a){var b=this.textarea.ownerDocument.defaultView.getSelection(),d=b.getRangeAt(0),c="\t";if(null!=a)for(c="";0<a;)c+=" ",a--;a=
+document.createElement("span");a.style.whiteSpace="pre";a.appendChild(document.createTextNode(c));d.insertNode(a);d.setStartAfter(a);d.setEndAfter(a);b.removeAllRanges();b.addRange(d)};mxCellEditor.prototype.alignText=function(a,b){var d=null!=b&&mxEvent.isShiftDown(b);if(d||null!=window.getSelection&&null!=window.getSelection().containsNode){var c=!0;this.graph.processElements(this.textarea,function(a){d||window.getSelection().containsNode(a,!0)?(a.removeAttribute("align"),a.style.textAlign=null):
+c=!1});c&&this.graph.cellEditor.setAlign(a)}document.execCommand("justify"+a.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],d=0,c=a.rangeCount;d<c;++d)b.push(a.getRangeAt(d));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=
+window.getSelection();sel.removeAllRanges();for(var b=0,d=a.length;b<d;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(X){}};var r=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));r.apply(this,arguments)};var u=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?
+u.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var t=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,b){a=this.graph.getStartEditingCell(a,b);t.apply(this,arguments);var d=this.graph.view.getState(a);this.textarea.className=null!=d&&1==d.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";
+this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var d=this.graph.getModel().getParent(a),c=this.graph.getCellGeometry(a);if(this.graph.getModel().isEdge(d)&&null!=c&&c.relative||this.graph.getModel().isEdge(a))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var w=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,d){d.originalNode=a;a=a.firstChild;
+for(var c=d.firstChild;null!=a&&null!=c;)b(a,c),a=a.nextSibling,c=c.nextSibling;return d}function d(a,b){if(null!=a)if(b.originalNode!=a)c(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?c(a):(d(a,b),b=b.nextSibling);a=e}}function c(a){for(var b=a.firstChild;null!=b;){var d=b.nextSibling;c(b);b=d}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,
+"")),1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}w.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var c=b(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]>")?d(this.textarea,c):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),d=this.saveSelection();if(this.codeViewMode){k=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<k.length&&"\n"==k.charAt(k.length-1)&&(k=k.substring(0,k.length-1));k=this.graph.sanitizeHtml(b?
+k.replace(/\n/g,"<br/>"):k,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&
+mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,h=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&h.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&h.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+
+"px";this.textarea.style.textDecoration=h.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=k&&(this.textarea.innerHTML=k,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.innerHTML="");var k=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(k=mxUtils.replaceTrailingNewlines(k,"<div><br></div>"));k=this.graph.sanitizeHtml(b?k.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):k,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var c=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;
+this.textarea.style.fontSize=Math.round(c)+"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!=k&&(this.textarea.innerHTML=k);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);
+this.switchSelectionState=d;this.resize()}};var x=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var d=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*d;this.bounds.height=60*d;var c=null!=a.text?a.text.margin:null;null==c&&(c=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,
+mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=c.x*this.bounds.width;this.bounds.y+=c.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/d)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/d)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/d)+(this.textarea.offsetHeight-
+this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*d);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/d)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*d);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+d+","+
+d+")")}else this.textarea.style.height="",this.textarea.style.overflow="",x.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var d=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(d=d.replace(/\n/g,"<br/>"));return d=this.graph.sanitizeHtml(d,!0)};mxCellEditorGetCurrentValue=
+mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b="1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var y=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();
+y.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(Q){}};var F=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{F.apply(this,arguments),""==b&&this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)&&this.graph.isTransparentState(a)&&this.graph.removeCells([a.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=
+function(a){var b=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=b&&b!=mxConstants.NONE||!(null!=a.cell.geometry&&0<a.cell.geometry.width)||0==mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)||(b=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,null));b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getBorderColor=function(a){var b=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BORDERCOLOR,
+null);null!=b&&b!=mxConstants.NONE||!(null!=a.cell.geometry&&0<a.cell.geometry.width)||0==mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)||(b=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,null));b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize=function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;
+mxGraphHandler.prototype.isValidDropTarget=function(a,b){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(b.getEvent)};mxGraphView.prototype.formatUnitText=function(a){return a?b(a,this.unit):a};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var c=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+
+this.currentDx)/e-c.x);c=this.roundLength((this.bounds.y+this.currentDy)/e-c.y);e=this.graph.view.unit;this.hint.innerHTML=b(d,e)+", "+b(c,e);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 H=mxStackLayout.prototype.resizeCell;
+mxStackLayout.prototype.resizeCell=function(a,b){H.apply(this,arguments);var d=this.graph.getCellStyle(a);if(null==d.childLayout){var c=this.graph.model.getParent(a),e=null!=c?this.graph.getCellGeometry(c):null;if(null!=e&&(d=this.graph.getCellStyle(c),"stackLayout"==d.childLayout)){var f=parseFloat(mxUtils.getValue(d,"stackBorder",mxStackLayout.prototype.border)),d="1"==mxUtils.getValue(d,"horizontalStack","1"),g=this.graph.getActualStartSize(c),e=e.clone();d?e.height=b.height+g.y+g.height+2*f:e.width=
+b.width+g.x+g.width+2*f;this.graph.model.setGeometry(c,e)}}};var C=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function a(a){d.get(a)||(d.put(a,!0),e.push(a))}for(var b=C.apply(this,arguments),d=new mxDictionary,c=this.graph.model,e=[],f=0;f<b.length;f++){var g=b[f];this.graph.isTableCell(g)?a(c.getParent(c.getParent(g))):this.graph.isTableRow(g)&&a(c.getParent(g));a(g)}return e};var E=mxVertexHandler.prototype.createParentHighlightShape;
+mxVertexHandler.prototype.createParentHighlightShape=function(a){var b=E.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};var z=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(a){var b=z.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var a=this.getHandlePadding();return new mxPoint(this.bounds.x+
+this.bounds.width-this.rotationHandleVSpacing+a.x/2,this.bounds.y+this.rotationHandleVSpacing-a.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return this.graph.isRecursiveVertexResize(a)&&!mxEvent.isControlDown(b.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,
+"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())};var G=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return G.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 J=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return J.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var L=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(a){return a.tableHandle||L.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
+function(){var a=0;this.graph.isTableRow(this.state.cell)?a=1:this.graph.isTableCell(this.state.cell)&&(a=2);return a};var M=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return M.apply(this,arguments).grow(-this.getSelectionBorderInset())};var K=null,P=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==K&&(K=mxCellRenderer.defaultShapes.tableLine);var a=P.apply(this,arguments);
+if(this.graph.isTable(this.state.cell)){var b=function(a,b,d){for(var c=[],e=0;e<a.length;e++){var g=a[e];c.push(null==g?null:new mxPoint((k+g.x+b)*f,(l+g.y+d)*f))}return c},d=this,c=this.graph,e=c.model,f=c.view.scale,g=this.state,h=this.selectionBorder,k=this.state.origin.x+c.view.translate.x,l=this.state.origin.y+c.view.translate.y;null==a&&(a=[]);var m=c.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<m.length){for(var n=e.getChildCells(m[0].cell,!0),p=c.getTableLines(this.state.cell,
+!1,!0),q=c.getTableLines(this.state.cell,!0,!1),e=0;e<m.length;e++)mxUtils.bind(this,function(e){var k=m[e],l=e<m.length-1?m[e+1]:null,l=null!=l?c.getCellGeometry(l.cell):null,n=null!=l&&null!=l.alternateBounds?l.alternateBounds:l,l=null!=q[e]?new K(q[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);l.isDashed=h.isDashed;l.svgStrokeTolerance++;k=new mxHandle(k,"row-resize",null,l);k.tableHandle=!0;var p=0;k.shape.node.parentNode.insertBefore(k.shape.node,k.shape.node.parentNode.firstChild);
+k.redraw=function(){if(null!=this.shape){this.shape.stroke=0==p?mxConstants.NONE:h.stroke;if(this.shape.constructor==K)this.shape.line=b(q[e],0,p),this.shape.updateBoundsFromLine();else{var a=c.getActualStartSize(g.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+p*f;this.shape.bounds.x=g.x+(e==m.length-1?0:a.x*f);this.shape.bounds.width=g.width-(e==m.length-1?0:a.width+a.x+f)}this.shape.redraw()}};var r=!1;k.setPosition=function(a,b,d){p=Math.max(Graph.minTableRowHeight-
+a.height,b.y-a.y-a.height);r=mxEvent.isShiftDown(d.getEvent());null!=n&&r&&(p=Math.min(p,n.height-Graph.minTableRowHeight))};k.execute=function(a){if(0!=p)c.setTableRowHeight(this.state.cell,p,!r);else if(!d.blockDelayedSelection){var b=c.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;c.graphHandler.selectCellForEvent(b,a)}p=0};k.reset=function(){p=0};a.push(k)})(e);for(e=0;e<n.length;e++)mxUtils.bind(this,function(e){var k=c.view.getState(n[e]),l=c.getCellGeometry(n[e]),m=null!=l.alternateBounds?
+l.alternateBounds:l;null==k&&(k=new mxCellState(c.view,n[e],c.getCellStyle(n[e])),k.x=g.x+l.x*f,k.y=g.y+l.y*f,k.width=m.width*f,k.height=m.height*f,k.updateCachedBounds());var l=e<n.length-1?n[e+1]:null,l=null!=l?c.getCellGeometry(l):null,q=null!=l&&null!=l.alternateBounds?l.alternateBounds:l,l=null!=p[e]?new K(p[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);l.isDashed=h.isDashed;l.svgStrokeTolerance++;k=new mxHandle(k,"col-resize",null,l);k.tableHandle=!0;var r=0;k.shape.node.parentNode.insertBefore(k.shape.node,
+k.shape.node.parentNode.firstChild);k.redraw=function(){if(null!=this.shape){this.shape.stroke=0==r?mxConstants.NONE:h.stroke;if(this.shape.constructor==K)this.shape.line=b(p[e],r,0),this.shape.updateBoundsFromLine();else{var a=c.getActualStartSize(g.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(m.width+r)*f;this.shape.bounds.y=g.y+(e==n.length-1?0:a.y*f);this.shape.bounds.height=g.height-(e==n.length-1?0:(a.height+a.y)*f)}this.shape.redraw()}};var t=!1;k.setPosition=function(a,
+b,d){r=Math.max(Graph.minTableColumnWidth-m.width,b.x-a.x-m.width);t=mxEvent.isShiftDown(d.getEvent());null==q||t||(r=Math.min(r,q.width-Graph.minTableColumnWidth))};k.execute=function(a){if(0!=r)c.setTableColumnWidth(this.state.cell,r,t);else if(!d.blockDelayedSelection){var b=c.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;c.graphHandler.selectCellForEvent(b,a)}r=0};k.positionChanged=function(){};k.reset=function(){r=0};a.push(k)})(e)}}return null!=a?a.reverse():null};var ba=mxVertexHandler.prototype.setHandlesVisible;
+mxVertexHandler.prototype.setHandlesVisible=function(a){ba.apply(this,arguments);if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.visibility=a?"":"hidden";if(null!=this.cornerHandles)for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.visibility=a?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var a=this.graph.model;if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);
+this.moveHandles=null}this.moveHandles=[];for(b=0;b<a.getChildCount(this.state.cell);b++)mxUtils.bind(this,function(b){if(null!=b&&a.isVertex(b.cell)){var d=mxUtils.createImage(Editor.rowMoveImage);d.style.position="absolute";d.style.cursor="pointer";d.style.width="7px";d.style.height="4px";d.style.padding="4px 2px 4px 2px";d.rowState=b;mxEvent.addGestureListeners(d,mxUtils.bind(this,function(a){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(a)&&this.graph.isCellSelected(b.cell)||
+this.graph.selectCellForEvent(b.cell,a);mxEvent.isPopupTrigger(a)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0);mxEvent.consume(a)}),null,mxUtils.bind(this,function(a){mxEvent.isPopupTrigger(a)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(a),mxEvent.getClientY(a),b.cell,a),mxEvent.consume(a))}));
+this.moveHandles.push(d);this.graph.container.appendChild(d)}})(this.graph.view.getState(a.getChildAt(this.state.cell,b)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var a=0;a<this.customHandles.length;a++)this.customHandles[a].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var Y=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,
+0),b=this.tolerance,d=this.state.style.shape;null==mxCellRenderer.defaultShapes[d]&&mxStencilRegistry.getStencil(d);d=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!d&&null!=this.customHandles)for(var c=0;c<this.customHandles.length;c++)if(null!=this.customHandles[c].shape&&null!=this.customHandles[c].shape.bounds){var e=this.customHandles[c].shape.bounds,f=e.getCenterX(),g=e.getCenterY();if(Math.abs(this.state.x-f)<e.width/2||Math.abs(this.state.y-
+g)<e.height/2||Math.abs(this.state.x+this.state.width-f)<e.width/2||Math.abs(this.state.y+this.state.height-g)<e.height/2){d=!0;break}}d&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,this.graph.isTable(this.state.cell)&&(b+=7),a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+b):a=Y.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(d){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));
+if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{d=this.state.view.scale;var c=this.state.view.unit;this.hint.innerHTML=b(this.roundLength(this.bounds.width/d),c)+" x "+b(this.roundLength(this.bounds.height/d),c)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=
+d.y+d.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 N=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(a,b){N.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 R=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(a,b){R.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,c){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,f=this.graph.view.scale,g=this.roundLength(c.x/f-e.x),e=this.roundLength(c.y/f-e.y),f=this.graph.view.unit;this.hint.innerHTML=
+b(g,f)+", "+b(e,f);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(g=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*g.x)+"%, "+Math.round(100*g.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),c.y)+Editor.hintOffset+
+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};Graph.prototype.expandedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="50%" y1="0%" x2="50%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 2 4.5 L 7 4.5 z" stroke="#000"/>');Graph.prototype.collapsedImage=Graph.createSvgImage(9,
+9,'<defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 4.5 2 L 4.5 7 M 2 4.5 L 7 4.5 z" stroke="#000"/>');mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+
+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.endMainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.secondaryHandle=Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>');HoverIcons.prototype.fixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');
HoverIcons.prototype.endFixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="7" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');HoverIcons.prototype.terminalHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/><circle cx="11" cy="11" r="3" stroke="#fff" fill="transparent"/>');HoverIcons.prototype.endTerminalHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="7" stroke="#fff" fill="'+
HoverIcons.prototype.arrowFill+'"/><circle cx="11" cy="11" r="3" stroke="#fff" fill="transparent"/>');HoverIcons.prototype.rotationHandle=Graph.createSvgImage(16,16,'<path stroke="'+HoverIcons.prototype.arrowFill+'" fill="'+HoverIcons.prototype.arrowFill+'" d="M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z"/>',
24,24);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="'+HoverIcons.prototype.arrowFill+'"/>');mxVertexHandler.TABLE_HANDLE_COLOR="#fca000";mxVertexHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxVertexHandler.prototype.secondaryHandleImage=HoverIcons.prototype.secondaryHandle;mxEdgeHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;
@@ -3013,11 +3018,11 @@ this.panels.push(new TextFormatPanel(this,a,c));else{d.style.backgroundColor=For
n.style.display="none",this.panels.push(new StyleFormatPanel(this,a,n)),this.container.appendChild(n),h(d,n,g++));mxUtils.write(m,mxResources.get("text"));c.appendChild(m);d=c.cloneNode(!1);d.style.display="none";this.panels.push(new TextFormatPanel(this,a,d));this.container.appendChild(d);mxUtils.write(p,mxResources.get("arrange"));c.appendChild(p);c=c.cloneNode(!1);c.style.display="none";this.panels.push(new ArrangePanel(this,a,c));this.container.appendChild(c);0<f.cells.length?h(m,d,g++):m.style.display=
"none";h(p,c,g++,!0)}}};BaseFormatPanel=function(a,b,c){this.format=a;this.editorUi=b;this.container=c;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";
BaseFormatPanel.prototype.installInputHandler=function(a,b,c,d,f,e,l,k){e=null!=e?e:"";k=null!=k?k:!1;var h=this.editorUi,g=h.editor.graph;d=null!=d?d:1;f=null!=f?f:999;var m=null,n=!1,p=mxUtils.bind(this,function(p){var q=k?parseFloat(a.value):parseInt(a.value);isNaN(q)||b!=mxConstants.STYLE_ROTATION||(q=mxUtils.mod(Math.round(100*q),36E3)/100);q=Math.min(f,Math.max(d,isNaN(q)?c:q));if(g.cellEditor.isContentEditing()&&l)n||(n=!0,null!=m&&(g.cellEditor.restoreSelection(m),m=null),l(q),a.value=q+e,
-n=!1);else if(q!=mxUtils.getValue(h.getSelectionState().style,b,c)){g.isEditing()&&g.stopEditing(!0);g.getModel().beginUpdate();try{var u=h.getSelectionState().cells;g.setCellStyles(b,q,u);b==mxConstants.STYLE_FONTSIZE&&g.updateLabelElements(u,function(a){a.style.fontSize=q+"px";a.removeAttribute("size")});for(var r=0;r<u.length;r++)0==g.model.getChildCount(u[r])&&g.autoSizeCell(u[r],!1);h.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[q],"cells",u))}finally{g.getModel().endUpdate()}}a.value=
+n=!1);else if(q!=mxUtils.getValue(h.getSelectionState().style,b,c)){g.isEditing()&&g.stopEditing(!0);g.getModel().beginUpdate();try{var u=h.getSelectionState().cells;g.setCellStyles(b,q,u);b==mxConstants.STYLE_FONTSIZE&&g.updateLabelElements(u,function(a){a.style.fontSize=q+"px";a.removeAttribute("size")});for(var t=0;t<u.length;t++)0==g.model.getChildCount(u[t])&&g.autoSizeCell(u[t],!1);h.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[q],"cells",u))}finally{g.getModel().endUpdate()}}a.value=
q+e;mxEvent.consume(p)});l&&g.cellEditor.isContentEditing()&&(mxEvent.addListener(a,"mousedown",function(){document.activeElement==g.cellEditor.textarea&&(m=g.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==g.cellEditor.textarea&&(m=g.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",p);mxEvent.addListener(a,"blur",p);return p};
BaseFormatPanel.prototype.createPanel=function(){var a=document.createElement("div");a.className="geFormatSection";a.style.padding="12px 0px 12px 14px";return a};BaseFormatPanel.prototype.createTitle=function(a){var b=document.createElement("div");b.style.padding="0px 0px 6px 0px";b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.width="200px";b.style.fontWeight="bold";mxUtils.write(b,a);return b};
BaseFormatPanel.prototype.addAction=function(a,b){var c=this.editorUi.actions.get(b),d=null;null!=c&&c.isEnabled()&&(d=mxUtils.button(c.label,function(a){c.funct(a,a)}),d.setAttribute("title",c.label+(null!=c.shortcut?" ("+c.shortcut+")":"")),d.style.marginBottom="2px",d.style.width="210px",a.appendChild(d),result=!0);return d};
-BaseFormatPanel.prototype.addActions=function(a,b){for(var c=null,d=0,f=0;f<b.length;f++){var e=this.addAction(a,b[f]);null!=e&&(d++,0==mxUtils.mod(d,2)&&(c.style.marginRight="2px",c.style.width="104px",e.style.width="104px"),c=e)}0<d&&mxUtils.br(a);return d};
+BaseFormatPanel.prototype.addActions=function(a,b){for(var c=null,d=null,f=0,e=0;e<b.length;e++){var l=this.addAction(a,b[e]);null!=l&&(f++,0==mxUtils.mod(f,2)&&(d.style.marginRight="2px",d.style.width="104px",l.style.width="104px",c.parentNode.removeChild(c)),c=mxUtils.br(a),d=l)}return f};
BaseFormatPanel.prototype.createStepper=function(a,b,c,d,f,e,l){c=null!=c?c:1;d=null!=d?d:9;var k=10*c,h=document.createElement("div");mxUtils.setPrefixedStyle(h.style,"borderRadius","3px");h.style.border="1px solid rgb(192, 192, 192)";h.style.position="absolute";var g=document.createElement("div");g.style.borderBottom="1px solid rgb(192, 192, 192)";g.style.position="relative";g.style.height=d+"px";g.style.width="10px";g.className="geBtnUp";h.appendChild(g);var m=g.cloneNode(!1);m.style.border="none";
m.style.height=d+"px";m.className="geBtnDown";h.appendChild(m);mxEvent.addGestureListeners(m,function(a){mxEvent.consume(a)},null,function(d){""==a.value&&(a.value=e||"2");var f=l?parseFloat(a.value):parseInt(a.value);isNaN(f)||(a.value=f-(mxEvent.isShiftDown(d)?k:c),null!=b&&b(d));mxEvent.consume(d)});mxEvent.addGestureListeners(g,function(a){mxEvent.consume(a)},null,function(d){""==a.value&&(a.value=e||"0");var f=l?parseFloat(a.value):parseInt(a.value);isNaN(f)||(a.value=f+(mxEvent.isShiftDown(d)?
k:c),null!=b&&b(d));mxEvent.consume(d)});if(f){var n=null;mxEvent.addGestureListeners(h,function(a){mxEvent.consume(a)},null,function(a){if(null!=n){try{n.select()}catch(q){}n=null;mxEvent.consume(a)}})}else mxEvent.addListener(h,"click",function(a){mxEvent.consume(a)});return h};
@@ -3026,10 +3031,10 @@ a);e.appendChild(k);var h=!1,g=b(),m=function(a,d){h||(h=!0,a?(l.setAttribute("c
BaseFormatPanel.prototype.createCellOption=function(a,b,c,d,f,e,l,k,h){var g=this.editorUi,m=g.editor.graph;d=null!=d?"null"==d?null:d:1;f=null!=f?"null"==f?null:f:0;var n=null!=h?m.getCommonStyle(h):g.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(n,b,c)!=f},function(a){k&&m.stopEditing();if(null!=l)l.funct();else{m.getModel().beginUpdate();try{var c=null!=h?h:g.getSelectionState().cells;a=a?d:f;m.setCellStyles(b,a,c);null!=e&&e(c,a);g.fireEvent(new mxEventObject("styleChanged",
"keys",[b],"values",[a],"cells",c))}finally{m.getModel().endUpdate()}}},{install:function(a){this.listener=function(){a(mxUtils.getValue(n,b,c)!=f)};m.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){m.getModel().removeListener(this.listener)}})};
BaseFormatPanel.prototype.createColorOption=function(a,b,c,d,f,e,l,k){var h=document.createElement("div");h.style.padding="3px 0px 3px 0px";h.style.whiteSpace="nowrap";h.style.overflow="hidden";h.style.width="200px";h.style.height="18px";var g=document.createElement("input");g.setAttribute("type","checkbox");g.style.margin="1px 6px 0px 0px";g.style.verticalAlign="top";l||h.appendChild(g);var m=document.createElement("span");m.style.verticalAlign="top";mxUtils.write(m,a);h.appendChild(m);var n=b(),
-p=!1,q=null,t=function(a,f,h){if(!p){var m="null"==d?null:d;p=!0;a=/(^#?[a-zA-Z0-9]*$)/.test(a)?a:m;var m=null!=a&&a!=mxConstants.NONE?a:m,t=document.createElement("div");t.style.width="36px";t.style.height="12px";t.style.margin="3px";t.style.border="1px solid black";t.style.backgroundColor="default"==m?k:m;q.innerHTML="";q.appendChild(t);null!=a&&a!=mxConstants.NONE&&1<a.length&&"string"===typeof a&&(m="#"==a.charAt(0)?a.substring(1).toUpperCase():a,m=ColorDialog.prototype.colorNames[m],q.setAttribute("title",
+p=!1,q=null,r=function(a,f,h){if(!p){var m="null"==d?null:d;p=!0;a=/(^#?[a-zA-Z0-9]*$)/.test(a)?a:m;var m=null!=a&&a!=mxConstants.NONE?a:m,r=document.createElement("div");r.style.width="36px";r.style.height="12px";r.style.margin="3px";r.style.border="1px solid black";r.style.backgroundColor="default"==m?k:m;q.innerHTML="";q.appendChild(r);null!=a&&a!=mxConstants.NONE&&1<a.length&&"string"===typeof a&&(m="#"==a.charAt(0)?a.substring(1).toUpperCase():a,m=ColorDialog.prototype.colorNames[m],q.setAttribute("title",
null!=m?m+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=a&&a!=mxConstants.NONE?(g.setAttribute("checked","checked"),g.defaultChecked=!0,g.checked=!0):(g.removeAttribute("checked"),g.defaultChecked=!1,g.checked=!1);q.style.display=g.checked||l?"":"none";null!=e&&e("null"==a?null:a);n=a;f||(h||l||b()!=n)&&c("null"==n?null:n,n);p=!1}},u=document.createElement("input");u.setAttribute("type","color");u.style.visibility="hidden";u.style.width="0px";u.style.height="0px";u.style.border=
-"none";h.appendChild(u);q=mxUtils.button("",mxUtils.bind(this,function(a){var b=n;"default"==b&&(b=k);!mxEvent.isShiftDown(a)||mxClient.IS_IE||mxClient.IS_IE11?this.editorUi.pickColor(b,function(a){t(a,null,!0)},k):(u.value=b,u.click(),mxEvent.addListener(u,"input",function(){t(u.value,null,!0)}));mxEvent.consume(a)}));q.style.position="absolute";q.style.marginTop="-3px";q.style.left="178px";q.style.height="22px";q.className="geColorBtn";q.style.display=g.checked||l?"":"none";h.appendChild(q);a=null!=
-n&&"string"===typeof n&&"#"==n.charAt(0)?n.substring(1).toUpperCase():n;a=ColorDialog.prototype.colorNames[a];q.setAttribute("title",null!=a?a+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper");mxEvent.addListener(h,"click",function(a){a=mxEvent.getSource(a);if(a==g||"INPUT"!=a.nodeName)a!=g&&(g.checked=!g.checked),g.checked||null==n||n==mxConstants.NONE||d==mxConstants.NONE||(d=n),t(g.checked?d:mxConstants.NONE)});t(n,!0);null!=f&&(f.install(t),this.listeners.push(f));return h};
+"none";h.appendChild(u);q=mxUtils.button("",mxUtils.bind(this,function(a){var b=n;"default"==b&&(b=k);!mxEvent.isShiftDown(a)||mxClient.IS_IE||mxClient.IS_IE11?this.editorUi.pickColor(b,function(a){r(a,null,!0)},k):(u.value=b,u.click(),mxEvent.addListener(u,"input",function(){r(u.value,null,!0)}));mxEvent.consume(a)}));q.style.position="absolute";q.style.marginTop="-3px";q.style.left="178px";q.style.height="22px";q.className="geColorBtn";q.style.display=g.checked||l?"":"none";h.appendChild(q);a=null!=
+n&&"string"===typeof n&&"#"==n.charAt(0)?n.substring(1).toUpperCase():n;a=ColorDialog.prototype.colorNames[a];q.setAttribute("title",null!=a?a+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper");mxEvent.addListener(h,"click",function(a){a=mxEvent.getSource(a);if(a==g||"INPUT"!=a.nodeName)a!=g&&(g.checked=!g.checked),g.checked||null==n||n==mxConstants.NONE||d==mxConstants.NONE||(d=n),r(g.checked?d:mxConstants.NONE)});r(n,!0);null!=f&&(f.install(r),this.listeners.push(f));return h};
BaseFormatPanel.prototype.createCellColorOption=function(a,b,c,d,f,e){var l=this.editorUi,k=l.editor.graph;return this.createColorOption(a,function(){var a=k.view.getState(l.getSelectionState().cells[0]);return null!=a?mxUtils.getValue(a.style,b,null):null},function(a,d){k.getModel().beginUpdate();try{var c=l.getSelectionState().cells;k.setCellStyles(b,a,c);null!=f&&f(a);l.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[a],"cells",c))}finally{k.getModel().endUpdate()}},c||mxConstants.NONE,
{install:function(a){this.listener=function(){var d=k.view.getState(l.getSelectionState().cells[0]);null!=d&&a(mxUtils.getValue(d.style,b,null),!0)};k.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){k.getModel().removeListener(this.listener)}},d,null,e)};
BaseFormatPanel.prototype.addArrow=function(a,b){b=null!=b?b:10;var c=document.createElement("div");c.style.display="inline-block";c.style.paddingRight="4px";c.style.padding="6px";var d=10-b;2==d?c.style.paddingTop="6px":0<d?c.style.paddingTop=6-d+"px":c.style.marginTop="-2px";c.style.height=b+"px";c.style.borderLeft="1px solid #a0a0a0";d=document.createElement("img");d.setAttribute("border","0");d.setAttribute("valign","middle");d.setAttribute("src",Toolbar.prototype.dropDownImage);c.appendChild(d);
@@ -3043,23 +3048,22 @@ BaseFormatPanel.prototype.addLabel=function(a,b,c,d){d=null!=d?d:61;var f=docume
BaseFormatPanel.prototype.addKeyHandler=function(a,b){mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(a){13==a.keyCode?(this.editorUi.editor.graph.container.focus(),mxEvent.consume(a)):27==a.keyCode&&(null!=b&&b(null,null,!0),this.editorUi.editor.graph.container.focus(),mxEvent.consume(a))}))};
BaseFormatPanel.prototype.styleButtons=function(a){for(var b=0;b<a.length;b++)mxUtils.setPrefixedStyle(a[b].style,"borderRadius","3px"),mxUtils.setOpacity(a[b],100),a[b].style.border="1px solid #a0a0a0",a[b].style.padding="4px",a[b].style.paddingTop="3px",a[b].style.paddingRight="1px",a[b].style.margin="1px",a[b].style.marginRight="2px",a[b].style.width="24px",a[b].style.height="20px",a[b].className+=" geColorBtn"};
BaseFormatPanel.prototype.destroy=function(){if(null!=this.listeners){for(var a=0;a<this.listeners.length;a++)this.listeners[a].destroy();this.listeners=null}};ArrangePanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};mxUtils.extend(ArrangePanel,BaseFormatPanel);
-ArrangePanel.prototype.init=function(){var a=this.editorUi.getSelectionState();0<a.cells.length&&(this.container.appendChild(this.addLayerOps(this.createPanel())),this.addGeometry(this.container),this.addEdgeGeometry(this.container),a.containsLabel&&0!=a.edges.length||this.container.appendChild(this.addAngle(this.createPanel())),a.containsLabel||0!=a.edges.length||"rectangle"==a.style.shape||"label"==a.style.shape||this.container.appendChild(this.addFlip(this.createPanel())),1<a.vertices.length&&
-!a.cell&&!a.row&&(this.container.appendChild(this.addAlign(this.createPanel())),this.container.appendChild(this.addDistribute(this.createPanel()))),this.container.appendChild(this.addTable(this.createPanel())),this.container.appendChild(this.addGroupOps(this.createPanel())));a.containsLabel&&(a=document.createElement("div"),a.style.width="100%",a.style.marginTop="0px",a.style.fontWeight="bold",a.style.padding="10px 0 0 14px",mxUtils.write(a,mxResources.get("style")),this.container.appendChild(a),
-new StyleFormatPanel(this.format,this.editorUi,this.container))};
+ArrangePanel.prototype.init=function(){var a=this.editorUi.getSelectionState();0<a.cells.length&&(this.container.appendChild(this.addLayerOps(this.createPanel())),this.addGeometry(this.container),this.addEdgeGeometry(this.container),a.containsLabel&&0!=a.edges.length||this.container.appendChild(this.addAngle(this.createPanel())),a.containsLabel||this.container.appendChild(this.addFlip(this.createPanel())),this.container.appendChild(this.addAlign(this.createPanel())),1<a.vertices.length&&!a.cell&&
+!a.row&&this.container.appendChild(this.addDistribute(this.createPanel())),this.container.appendChild(this.addTable(this.createPanel())),this.container.appendChild(this.addGroupOps(this.createPanel())));a.containsLabel&&(a=document.createElement("div"),a.style.width="100%",a.style.marginTop="0px",a.style.fontWeight="bold",a.style.padding="10px 0 0 14px",mxUtils.write(a,mxResources.get("style")),this.container.appendChild(a),new StyleFormatPanel(this.format,this.editorUi,this.container))};
ArrangePanel.prototype.addTable=function(a){var b=this.editorUi,c=b.editor.graph,d=b.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="10px";var f=document.createElement("div");f.style.marginTop="0px";f.style.marginBottom="6px";f.style.fontWeight="bold";mxUtils.write(f,mxResources.get("table"));a.appendChild(f);f=document.createElement("div");f.style.position="relative";f.style.paddingLeft="0px";f.style.borderWidth="0px";f.style.width="220px";f.className="geToolbarContainer";var e=
d.vertices[0];1<c.getSelectionCount()&&(c.isTableCell(e)&&(e=c.model.getParent(e)),c.isTableRow(e)&&(e=c.model.getParent(e)));var l=d.table||d.row||d.cell,k=c.isStack(e)||c.isStackChild(e),h=l;k&&(l="0"==(c.isStack(e)?d.style:c.getCellStyle(c.model.getParent(e))).horizontalStack,h=!l);var g=[];h&&(g=g.concat([b.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{k?c.insertLane(e,!0):c.insertTableColumn(e,!0)}catch(m){b.handleError(m)}}),
f),b.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{k?c.insertLane(e,!1):c.insertTableColumn(e,!1)}catch(m){b.handleError(m)}}),f),b.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{k?c.deleteLane(e):c.deleteTableColumn(e)}catch(m){b.handleError(m)}}),f)]));l&&(g=g.concat([b.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,
function(){try{k?c.insertLane(e,!0):c.insertTableRow(e,!0)}catch(m){b.handleError(m)}}),f),b.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{k?c.insertLane(e,!1):c.insertTableRow(e,!1)}catch(m){b.handleError(m)}}),f),b.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{k?c.deleteLane(e):c.deleteTableRow(e)}catch(m){b.handleError(m)}}),f)]));if(0<g.length){this.styleButtons(g);a.appendChild(f);
3<g.length&&(g[2].style.marginRight="10px");h=0;if(null!=d.mergeCell)h+=this.addActions(a,["mergeCells"]);else if(1<d.style.colspan||1<d.style.rowspan)h+=this.addActions(a,["unmergeCells"]);0<h&&(f.style.paddingBottom="2px")}else a.style.display="none";return a};ArrangePanel.prototype.addLayerOps=function(a){this.addActions(a,["toFront","toBack"]);this.addActions(a,["bringForward","sendBackward"]);return a};
-ArrangePanel.prototype.addGroupOps=function(a){var b=this.editorUi,c=b.editor.graph,d=b.getSelectionState();a.style.paddingTop="8px";a.style.paddingBottom="6px";var f=0;d.cell||d.row||(f+=this.addActions(a,["group","ungroup"])+this.addActions(a,["removeFromGroup"])+this.addActions(a,["copySize","pasteSize"]));var e=null;1!=d.cells.length||null==d.cells[0].value||isNaN(d.cells[0].value.nodeType)||(e=mxUtils.button(mxResources.get("copyData"),function(a){if(mxEvent.isShiftDown(a)){var d=c.getDataForCells(c.getSelectionCells());
+ArrangePanel.prototype.addGroupOps=function(a){var b=this.editorUi,c=b.editor.graph,d=b.getSelectionState();a.style.paddingTop="8px";a.style.paddingBottom="6px";var f=0;d.cell||d.row||(f+=this.addActions(a,["group","ungroup","copySize","pasteSize"])+this.addActions(a,["removeFromGroup"]));var e=null;1!=d.cells.length||null==d.cells[0].value||isNaN(d.cells[0].value.nodeType)||(e=mxUtils.button(mxResources.get("copyData"),function(a){if(mxEvent.isShiftDown(a)){var d=c.getDataForCells(c.getSelectionCells());
a=new EmbedDialog(b,JSON.stringify(d,null,2),null,null,function(){console.log(d);b.alert("Written to Console (Dev Tools)")},mxResources.get("copyData"),null,"Console","data.json");b.showDialog(a.container,450,240,!0,!0);a.init()}else b.actions.get("copyData").funct(a)}),e.setAttribute("title",mxResources.get("copyData")+" ("+this.editorUi.actions.get("copyData").shortcut+") Shift+Click to Extract Data"),e.style.marginBottom="2px",e.style.width="210px",a.appendChild(e),f++);var l=null;null!=b.copiedValue&&
0<d.cells.length&&(l=mxUtils.button(mxResources.get("pasteData"),function(a){b.actions.get("pasteData").funct(a)}),l.setAttribute("title",mxResources.get("pasteData")+" ("+this.editorUi.actions.get("pasteData").shortcut+")"),l.style.marginBottom="2px",l.style.width="210px",a.appendChild(l),f++,null!=e&&(e.style.width="104px",l.style.width="104px",l.style.marginBottom="2px",e.style.marginBottom="2px",e.style.marginRight="2px"));null==e&&null==l||mxUtils.br(a);d=this.addAction(a,"clearWaypoints");null!=
d&&(mxUtils.br(a),d.setAttribute("title",mxResources.get("clearWaypoints")+" ("+this.editorUi.actions.get("clearWaypoints").shortcut+") Shift+Click to Clear Anchor Points"),f++);1==c.getSelectionCount()&&(f+=this.addActions(a,["editData","editLink"]));0==f&&(a.style.display="none");return a};
-ArrangePanel.prototype.addAlign=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="12px";a.appendChild(this.createTitle(mxResources.get("align")));var c=document.createElement("div");c.style.position="relative";c.style.whiteSpace="nowrap";c.style.paddingLeft="0px";c.style.borderWidth="0px";c.style.width="220px";c.className="geToolbarContainer";var d=this.editorUi.toolbar.addButton("geSprite-alignleft",mxResources.get("left"),function(){b.alignCells(mxConstants.ALIGN_LEFT)},
-c),f=this.editorUi.toolbar.addButton("geSprite-aligncenter",mxResources.get("center"),function(){b.alignCells(mxConstants.ALIGN_CENTER)},c),e=this.editorUi.toolbar.addButton("geSprite-alignright",mxResources.get("right"),function(){b.alignCells(mxConstants.ALIGN_RIGHT)},c),l=this.editorUi.toolbar.addButton("geSprite-aligntop",mxResources.get("top"),function(){b.alignCells(mxConstants.ALIGN_TOP)},c),k=this.editorUi.toolbar.addButton("geSprite-alignmiddle",mxResources.get("middle"),function(){b.alignCells(mxConstants.ALIGN_MIDDLE)},
-c),h=this.editorUi.toolbar.addButton("geSprite-alignbottom",mxResources.get("bottom"),function(){b.alignCells(mxConstants.ALIGN_BOTTOM)},c);this.styleButtons([d,f,e,l,k,h]);e.style.marginRight="10px";a.appendChild(c);return a};
-ArrangePanel.prototype.addFlip=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="10px";var c=document.createElement("div");c.style.marginTop="2px";c.style.marginBottom="8px";c.style.fontWeight="bold";mxUtils.write(c,mxResources.get("flip"));a.appendChild(c);c=mxUtils.button(mxResources.get("horizontal"),function(a){b.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)});c.setAttribute("title",mxResources.get("horizontal"));c.style.width="104px";c.style.marginRight=
-"2px";a.appendChild(c);c=mxUtils.button(mxResources.get("vertical"),function(a){b.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)});c.setAttribute("title",mxResources.get("vertical"));c.style.width="104px";a.appendChild(c);return a};
+ArrangePanel.prototype.addAlign=function(a){var b=this.editorUi.getSelectionState(),c=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="8px";a.appendChild(this.createTitle(mxResources.get("align")));var d=document.createElement("div");d.style.position="relative";d.style.whiteSpace="nowrap";d.style.paddingLeft="0px";d.style.paddingBottom="2px";d.style.borderWidth="0px";d.style.width="220px";d.className="geToolbarContainer";if(1<b.vertices.length){var b=this.editorUi.toolbar.addButton("geSprite-alignleft",
+mxResources.get("left"),function(){c.alignCells(mxConstants.ALIGN_LEFT)},d),f=this.editorUi.toolbar.addButton("geSprite-aligncenter",mxResources.get("center"),function(){c.alignCells(mxConstants.ALIGN_CENTER)},d),e=this.editorUi.toolbar.addButton("geSprite-alignright",mxResources.get("right"),function(){c.alignCells(mxConstants.ALIGN_RIGHT)},d),l=this.editorUi.toolbar.addButton("geSprite-aligntop",mxResources.get("top"),function(){c.alignCells(mxConstants.ALIGN_TOP)},d),k=this.editorUi.toolbar.addButton("geSprite-alignmiddle",
+mxResources.get("middle"),function(){c.alignCells(mxConstants.ALIGN_MIDDLE)},d),h=this.editorUi.toolbar.addButton("geSprite-alignbottom",mxResources.get("bottom"),function(){c.alignCells(mxConstants.ALIGN_BOTTOM)},d);this.styleButtons([b,f,e,l,k,h]);e.style.marginRight="10px"}a.appendChild(d);this.addActions(a,["snapToGrid"]);return a};
+ArrangePanel.prototype.addFlip=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="10px";var c=this.editorUi.getSelectionState(),d=document.createElement("div");d.style.marginTop="2px";d.style.marginBottom="8px";d.style.fontWeight="bold";mxUtils.write(d,mxResources.get("flip"));a.appendChild(d);d=mxUtils.button(mxResources.get("horizontal"),function(a){b.flipCells(c.cells,!0)});d.setAttribute("title",mxResources.get("horizontal"));d.style.width="104px";d.style.marginRight=
+"2px";a.appendChild(d);d=mxUtils.button(mxResources.get("vertical"),function(a){b.flipCells(c.cells,!1)});d.setAttribute("title",mxResources.get("vertical"));d.style.width="104px";a.appendChild(d);return a};
ArrangePanel.prototype.addDistribute=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="12px";a.appendChild(this.createTitle(mxResources.get("distribute")));var c=mxUtils.button(mxResources.get("horizontal"),function(a){b.distributeCells(!0)});c.setAttribute("title",mxResources.get("horizontal"));c.style.width="104px";c.style.marginRight="2px";a.appendChild(c);c=mxUtils.button(mxResources.get("vertical"),function(a){b.distributeCells(!1)});c.setAttribute("title",
mxResources.get("vertical"));c.style.width="104px";a.appendChild(c);return a};
ArrangePanel.prototype.addAngle=function(a){var b=this.editorUi,c=b.editor.graph,d=b.getSelectionState();a.style.paddingBottom="8px";var f=document.createElement("div");f.style.position="absolute";f.style.width="70px";f.style.marginTop="0px";f.style.fontWeight="bold";var e=null,l=null,k=null;!d.rotatable||d.table||d.row||d.cell?a.style.paddingTop="8px":(mxUtils.write(f,mxResources.get("angle")),a.appendChild(f),e=this.addUnitInput(a,"°",16,52,function(){l.apply(this,arguments)}),mxUtils.br(a),a.style.paddingTop=
@@ -3069,48 +3073,48 @@ BaseFormatPanel.prototype.getUnit=function(){switch(this.editorUi.editor.graph.v
BaseFormatPanel.prototype.fromUnit=function(a){switch(this.editorUi.editor.graph.view.unit){case mxConstants.POINTS:return a;case mxConstants.INCHES:return a*mxConstants.PIXELS_PER_INCH;case mxConstants.MILLIMETERS:return a*mxConstants.PIXELS_PER_MM;case mxConstants.METERS:return a*mxConstants.PIXELS_PER_MM*1E3}};BaseFormatPanel.prototype.isFloatUnit=function(){return this.editorUi.editor.graph.view.unit!=mxConstants.POINTS};
BaseFormatPanel.prototype.getUnitStep=function(){switch(this.editorUi.editor.graph.view.unit){case mxConstants.POINTS:return 1;case mxConstants.INCHES:return.1;case mxConstants.MILLIMETERS:return.5;case mxConstants.METERS:return.001}};
ArrangePanel.prototype.addGeometry=function(a){var b=this,c=this.editorUi,d=c.editor.graph,f=d.getModel(),e=c.getSelectionState(),l=this.createPanel();l.style.paddingBottom="8px";var k=document.createElement("div");k.style.position="absolute";k.style.width="50px";k.style.marginTop="0px";k.style.fontWeight="bold";mxUtils.write(k,mxResources.get("size"));l.appendChild(k);var h,g,m,n,p=this.addUnitInput(l,this.getUnit(),87,52,function(){h.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),
-q=this.addUnitInput(l,this.getUnit(),16,52,function(){g.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),t=document.createElement("div");t.className="geSprite geSprite-fit";t.setAttribute("title",mxResources.get("autosize")+" ("+this.editorUi.actions.get("autosize").shortcut+")");t.style.position="relative";t.style.cursor="pointer";t.style.marginTop="-3px";t.style.border="0px";t.style.left="42px";mxUtils.setOpacity(t,50);mxEvent.addListener(t,"mouseenter",function(){mxUtils.setOpacity(t,
-100)});mxEvent.addListener(t,"mouseleave",function(){mxUtils.setOpacity(t,50)});mxEvent.addListener(t,"click",function(){c.actions.get("autosize").funct()});l.appendChild(t);e.row?(p.style.visibility="hidden",p.nextSibling.style.visibility="hidden"):this.addLabel(l,mxResources.get("width"),87);this.addLabel(l,mxResources.get("height"),16);mxUtils.br(l);k=document.createElement("div");k.style.paddingTop="8px";k.style.paddingRight="20px";k.style.whiteSpace="nowrap";k.style.textAlign="right";var u=this.createCellOption(mxResources.get("constrainProportions"),
-mxConstants.STYLE_ASPECT,null,"fixed","null");u.style.width="210px";k.appendChild(u);e.cell||e.row?t.style.visibility="hidden":l.appendChild(k);var r=u.getElementsByTagName("input")[0];this.addKeyHandler(p,F);this.addKeyHandler(q,F);h=this.addGeometryHandler(p,function(a,c,e){if(d.isTableCell(e))return d.setTableColumnWidth(e,c-a.width,!0),!0;0<a.width&&(c=Math.max(1,b.fromUnit(c)),r.checked&&(a.height=Math.round(a.height*c*100/a.width)/100),a.width=c)});g=this.addGeometryHandler(q,function(a,c,e){d.isTableCell(e)&&
-(e=d.model.getParent(e));if(d.isTableRow(e))return d.setTableRowHeight(e,c-a.height),!0;0<a.height&&(c=Math.max(1,b.fromUnit(c)),r.checked&&(a.width=Math.round(a.width*c*100/a.height)/100),a.height=c)});(e.resizable||e.row||e.cell)&&a.appendChild(l);var x=this.createPanel();x.style.paddingBottom="30px";k=document.createElement("div");k.style.position="absolute";k.style.width="70px";k.style.marginTop="0px";k.style.fontWeight="bold";mxUtils.write(k,mxResources.get("position"));x.appendChild(k);var y=
-this.addUnitInput(x,this.getUnit(),87,52,function(){m.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),w=this.addUnitInput(x,this.getUnit(),16,52,function(){n.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit());mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);var F=mxUtils.bind(this,function(a,b,f){e=c.getSelectionState();if(e.containsLabel||e.vertices.length!=d.getSelectionCount()||null==e.width||null==
-e.height)l.style.display="none";else{l.style.display="";if(f||document.activeElement!=p)p.value=this.inUnit(e.width)+(""==e.width?"":" "+this.getUnit());if(f||document.activeElement!=q)q.value=this.inUnit(e.height)+(""==e.height?"":" "+this.getUnit())}if(e.vertices.length==d.getSelectionCount()&&null!=e.x&&null!=e.y){x.style.display="";if(f||document.activeElement!=y)y.value=this.inUnit(e.x)+(""==e.x?"":" "+this.getUnit());if(f||document.activeElement!=w)w.value=this.inUnit(e.y)+(""==e.y?"":" "+this.getUnit())}else x.style.display=
-"none"});this.addKeyHandler(y,F);this.addKeyHandler(w,F);f.addListener(mxEvent.CHANGE,F);this.listeners.push({destroy:function(){f.removeListener(F)}});F();m=this.addGeometryHandler(y,function(a,d){d=b.fromUnit(d);a.relative?a.offset.x=d:a.x=d});n=this.addGeometryHandler(w,function(a,d){d=b.fromUnit(d);a.relative?a.offset.y=d:a.y=d});if(e.movable){if(0==e.edges.length&&1==e.vertices.length&&f.isEdge(f.getParent(e.vertices[0]))){var H=d.getCellGeometry(e.vertices[0]);null!=H&&H.relative&&(k=mxUtils.button(mxResources.get("center"),
-mxUtils.bind(this,function(a){f.beginUpdate();try{H=H.clone(),H.x=0,H.y=0,H.offset=new mxPoint,f.setGeometry(e.vertices[0],H)}finally{f.endUpdate()}})),k.setAttribute("title",mxResources.get("center")),k.style.width="210px",k.style.position="absolute",mxUtils.br(x),mxUtils.br(x),x.appendChild(k))}a.appendChild(x)}};
+q=this.addUnitInput(l,this.getUnit(),16,52,function(){g.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),r=document.createElement("div");r.className="geSprite geSprite-fit";r.setAttribute("title",mxResources.get("autosize")+" ("+this.editorUi.actions.get("autosize").shortcut+")");r.style.position="relative";r.style.cursor="pointer";r.style.marginTop="-3px";r.style.border="0px";r.style.left="42px";mxUtils.setOpacity(r,50);mxEvent.addListener(r,"mouseenter",function(){mxUtils.setOpacity(r,
+100)});mxEvent.addListener(r,"mouseleave",function(){mxUtils.setOpacity(r,50)});mxEvent.addListener(r,"click",function(){c.actions.get("autosize").funct()});l.appendChild(r);e.row?(p.style.visibility="hidden",p.nextSibling.style.visibility="hidden"):this.addLabel(l,mxResources.get("width"),87);this.addLabel(l,mxResources.get("height"),16);mxUtils.br(l);k=document.createElement("div");k.style.paddingTop="8px";k.style.paddingRight="20px";k.style.whiteSpace="nowrap";k.style.textAlign="right";var u=this.createCellOption(mxResources.get("constrainProportions"),
+mxConstants.STYLE_ASPECT,null,"fixed","null");u.style.width="210px";k.appendChild(u);e.cell||e.row?r.style.visibility="hidden":l.appendChild(k);var t=u.getElementsByTagName("input")[0];this.addKeyHandler(p,F);this.addKeyHandler(q,F);h=this.addGeometryHandler(p,function(a,c,e){if(d.isTableCell(e))return d.setTableColumnWidth(e,c-a.width,!0),!0;0<a.width&&(c=Math.max(1,b.fromUnit(c)),t.checked&&(a.height=Math.round(a.height*c*100/a.width)/100),a.width=c)});g=this.addGeometryHandler(q,function(a,c,e){d.isTableCell(e)&&
+(e=d.model.getParent(e));if(d.isTableRow(e))return d.setTableRowHeight(e,c-a.height),!0;0<a.height&&(c=Math.max(1,b.fromUnit(c)),t.checked&&(a.width=Math.round(a.width*c*100/a.height)/100),a.height=c)});(e.resizable||e.row||e.cell)&&a.appendChild(l);var w=this.createPanel();w.style.paddingBottom="30px";k=document.createElement("div");k.style.position="absolute";k.style.width="70px";k.style.marginTop="0px";k.style.fontWeight="bold";mxUtils.write(k,mxResources.get("position"));w.appendChild(k);var x=
+this.addUnitInput(w,this.getUnit(),87,52,function(){m.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),y=this.addUnitInput(w,this.getUnit(),16,52,function(){n.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit());mxUtils.br(w);this.addLabel(w,mxResources.get("left"),87);this.addLabel(w,mxResources.get("top"),16);var F=mxUtils.bind(this,function(a,b,f){e=c.getSelectionState();if(e.containsLabel||e.vertices.length!=d.getSelectionCount()||null==e.width||null==
+e.height)l.style.display="none";else{l.style.display="";if(f||document.activeElement!=p)p.value=this.inUnit(e.width)+(""==e.width?"":" "+this.getUnit());if(f||document.activeElement!=q)q.value=this.inUnit(e.height)+(""==e.height?"":" "+this.getUnit())}if(e.vertices.length==d.getSelectionCount()&&null!=e.x&&null!=e.y){w.style.display="";if(f||document.activeElement!=x)x.value=this.inUnit(e.x)+(""==e.x?"":" "+this.getUnit());if(f||document.activeElement!=y)y.value=this.inUnit(e.y)+(""==e.y?"":" "+this.getUnit())}else w.style.display=
+"none"});this.addKeyHandler(x,F);this.addKeyHandler(y,F);f.addListener(mxEvent.CHANGE,F);this.listeners.push({destroy:function(){f.removeListener(F)}});F();m=this.addGeometryHandler(x,function(a,d){d=b.fromUnit(d);a.relative?a.offset.x=d:a.x=d});n=this.addGeometryHandler(y,function(a,d){d=b.fromUnit(d);a.relative?a.offset.y=d:a.y=d});if(e.movable){if(0==e.edges.length&&1==e.vertices.length&&f.isEdge(f.getParent(e.vertices[0]))){var H=d.getCellGeometry(e.vertices[0]);null!=H&&H.relative&&(k=mxUtils.button(mxResources.get("center"),
+mxUtils.bind(this,function(a){f.beginUpdate();try{H=H.clone(),H.x=0,H.y=0,H.offset=new mxPoint,f.setGeometry(e.vertices[0],H)}finally{f.endUpdate()}})),k.setAttribute("title",mxResources.get("center")),k.style.width="210px",k.style.position="absolute",mxUtils.br(w),mxUtils.br(w),w.appendChild(k))}a.appendChild(w)}};
ArrangePanel.prototype.addGeometryHandler=function(a,b){function c(c){if(""!=a.value){var k=parseFloat(a.value);if(isNaN(k))a.value=e+" "+l.getUnit();else if(k!=e){f.getModel().beginUpdate();try{for(var g=d.getSelectionState().cells,m=0;m<g.length;m++)if(f.getModel().isVertex(g[m])){var n=f.getCellGeometry(g[m]);if(null!=n&&(n=n.clone(),!b(n,k,g[m]))){var p=f.view.getState(g[m]);null!=p&&f.isRecursiveVertexResize(p)&&f.resizeChildCells(g[m],n);f.getModel().setGeometry(g[m],n);f.constrainChildCells(g[m])}}}finally{f.getModel().endUpdate()}e=
k;a.value=k+" "+l.getUnit()}}mxEvent.consume(c)}var d=this.editorUi,f=d.editor.graph,e=null,l=this;mxEvent.addListener(a,"blur",c);mxEvent.addListener(a,"change",c);mxEvent.addListener(a,"focus",function(){e=a.value});return c};
ArrangePanel.prototype.addEdgeGeometryHandler=function(a,b){function c(c){if(""!=a.value){var k=parseFloat(a.value);if(isNaN(k))a.value=e+" pt";else if(k!=e){f.getModel().beginUpdate();try{for(var h=d.getSelectionState().cells,g=0;g<h.length;g++)if(f.getModel().isEdge(h[g])){var l=f.getCellGeometry(h[g]);null!=l&&(l=l.clone(),b(l,k),f.getModel().setGeometry(h[g],l))}}finally{f.getModel().endUpdate()}e=k;a.value=k+" pt"}}mxEvent.consume(c)}var d=this.editorUi,f=d.editor.graph,e=null;mxEvent.addListener(a,
"blur",c);mxEvent.addListener(a,"change",c);mxEvent.addListener(a,"focus",function(){e=a.value});return c};
-ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,c=b.editor.graph,d=b.getSelectionState(),f=this.createPanel(),e=document.createElement("div");e.style.position="absolute";e.style.width="70px";e.style.marginTop="0px";e.style.fontWeight="bold";mxUtils.write(e,mxResources.get("width"));f.appendChild(e);var l,k,h,g,m,n=this.addUnitInput(f,"pt",12,44,function(){l.apply(this,arguments)});mxUtils.br(f);this.addKeyHandler(n,y);l=mxUtils.bind(this,function(a){var e=parseInt(n.value),
+ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,c=b.editor.graph,d=b.getSelectionState(),f=this.createPanel(),e=document.createElement("div");e.style.position="absolute";e.style.width="70px";e.style.marginTop="0px";e.style.fontWeight="bold";mxUtils.write(e,mxResources.get("width"));f.appendChild(e);var l,k,h,g,m,n=this.addUnitInput(f,"pt",12,44,function(){l.apply(this,arguments)});mxUtils.br(f);this.addKeyHandler(n,x);l=mxUtils.bind(this,function(a){var e=parseInt(n.value),
e=Math.min(999,Math.max(1,isNaN(e)?1:e));if(e!=mxUtils.getValue(d.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)){var f=b.getSelectionState().cells;c.setCellStyles("width",e,f);b.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[e],"cells",f))}n.value=e+" pt";mxEvent.consume(a)});mxEvent.addListener(n,"blur",l);mxEvent.addListener(n,"change",l);a.appendChild(f);var p=this.createPanel();p.style.paddingBottom="30px";e=document.createElement("div");e.style.position=
-"absolute";e.style.width="70px";e.style.marginTop="0px";mxUtils.write(e,mxResources.get("linestart"));p.appendChild(e);var q=this.addUnitInput(p,"pt",87,52,function(){g.apply(this,arguments)}),t=this.addUnitInput(p,"pt",16,52,function(){m.apply(this,arguments)});mxUtils.br(p);this.addLabel(p,mxResources.get("left"),87);this.addLabel(p,mxResources.get("top"),16);a.appendChild(p);this.addKeyHandler(q,y);this.addKeyHandler(t,y);var u=this.createPanel();u.style.paddingBottom="30px";e=document.createElement("div");
-e.style.position="absolute";e.style.width="70px";e.style.marginTop="0px";mxUtils.write(e,mxResources.get("lineend"));u.appendChild(e);var r=this.addUnitInput(u,"pt",87,52,function(){k.apply(this,arguments)}),x=this.addUnitInput(u,"pt",16,52,function(){h.apply(this,arguments)});mxUtils.br(u);this.addLabel(u,mxResources.get("left"),87);this.addLabel(u,mxResources.get("top"),16);a.appendChild(u);this.addKeyHandler(r,y);this.addKeyHandler(x,y);var y=mxUtils.bind(this,function(a,e,g){d=b.getSelectionState();
-a=d.cells[0];if("link"==d.style.shape||"flexArrow"==d.style.shape){if(f.style.display="",g||document.activeElement!=n)g=mxUtils.getValue(d.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),n.value=g+" pt"}else f.style.display="none";1==d.cells.length&&c.model.isEdge(a)?(g=c.model.getGeometry(a),null!=g.sourcePoint&&null==c.model.getTerminal(a,!0)?(q.value=g.sourcePoint.x,t.value=g.sourcePoint.y):p.style.display="none",null!=g.targetPoint&&null==c.model.getTerminal(a,!1)?
-(r.value=g.targetPoint.x,x.value=g.targetPoint.y):u.style.display="none"):(p.style.display="none",u.style.display="none")});g=this.addEdgeGeometryHandler(q,function(a,b){a.sourcePoint.x=b});m=this.addEdgeGeometryHandler(t,function(a,b){a.sourcePoint.y=b});k=this.addEdgeGeometryHandler(r,function(a,b){a.targetPoint.x=b});h=this.addEdgeGeometryHandler(x,function(a,b){a.targetPoint.y=b});c.getModel().addListener(mxEvent.CHANGE,y);this.listeners.push({destroy:function(){c.getModel().removeListener(y)}});
-y()};TextFormatPanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};mxUtils.extend(TextFormatPanel,BaseFormatPanel);TextFormatPanel.prototype.init=function(){this.container.style.borderBottom="none";this.addFont(this.container)};
+"absolute";e.style.width="70px";e.style.marginTop="0px";mxUtils.write(e,mxResources.get("linestart"));p.appendChild(e);var q=this.addUnitInput(p,"pt",87,52,function(){g.apply(this,arguments)}),r=this.addUnitInput(p,"pt",16,52,function(){m.apply(this,arguments)});mxUtils.br(p);this.addLabel(p,mxResources.get("left"),87);this.addLabel(p,mxResources.get("top"),16);a.appendChild(p);this.addKeyHandler(q,x);this.addKeyHandler(r,x);var u=this.createPanel();u.style.paddingBottom="30px";e=document.createElement("div");
+e.style.position="absolute";e.style.width="70px";e.style.marginTop="0px";mxUtils.write(e,mxResources.get("lineend"));u.appendChild(e);var t=this.addUnitInput(u,"pt",87,52,function(){k.apply(this,arguments)}),w=this.addUnitInput(u,"pt",16,52,function(){h.apply(this,arguments)});mxUtils.br(u);this.addLabel(u,mxResources.get("left"),87);this.addLabel(u,mxResources.get("top"),16);a.appendChild(u);this.addKeyHandler(t,x);this.addKeyHandler(w,x);var x=mxUtils.bind(this,function(a,e,g){d=b.getSelectionState();
+a=d.cells[0];if("link"==d.style.shape||"flexArrow"==d.style.shape){if(f.style.display="",g||document.activeElement!=n)g=mxUtils.getValue(d.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),n.value=g+" pt"}else f.style.display="none";1==d.cells.length&&c.model.isEdge(a)?(g=c.model.getGeometry(a),null!=g.sourcePoint&&null==c.model.getTerminal(a,!0)?(q.value=g.sourcePoint.x,r.value=g.sourcePoint.y):p.style.display="none",null!=g.targetPoint&&null==c.model.getTerminal(a,!1)?
+(t.value=g.targetPoint.x,w.value=g.targetPoint.y):u.style.display="none"):(p.style.display="none",u.style.display="none")});g=this.addEdgeGeometryHandler(q,function(a,b){a.sourcePoint.x=b});m=this.addEdgeGeometryHandler(r,function(a,b){a.sourcePoint.y=b});k=this.addEdgeGeometryHandler(t,function(a,b){a.targetPoint.x=b});h=this.addEdgeGeometryHandler(w,function(a,b){a.targetPoint.y=b});c.getModel().addListener(mxEvent.CHANGE,x);this.listeners.push({destroy:function(){c.getModel().removeListener(x)}});
+x()};TextFormatPanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};mxUtils.extend(TextFormatPanel,BaseFormatPanel);TextFormatPanel.prototype.init=function(){this.container.style.borderBottom="none";this.addFont(this.container)};
TextFormatPanel.prototype.addFont=function(a){function b(a,b){a.style.backgroundImage=b?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var c=this.editorUi,d=c.editor.graph,f=c.getSelectionState(),e=this.createTitle(mxResources.get("font"));e.style.paddingLeft="14px";e.style.paddingTop="10px";e.style.paddingBottom="6px";a.appendChild(e);e=this.createPanel();e.style.paddingTop="2px";e.style.paddingBottom="2px";e.style.position=
"relative";e.style.marginLeft="-2px";e.style.borderWidth="0px";e.className="geToolbarContainer";if(d.cellEditor.isContentEditing()){var l=e.cloneNode(),k=this.editorUi.toolbar.addMenu(mxResources.get("style"),mxResources.get("style"),!0,"formatBlock",l,null,!0);k.style.color="rgb(112, 112, 112)";k.style.whiteSpace="nowrap";k.style.overflow="hidden";k.style.margin="0px";this.addArrow(k);k.style.width="200px";k.style.height="15px";k=k.getElementsByTagName("div")[0];k.style.cssFloat="right";a.appendChild(l)}a.appendChild(e);
l=this.createPanel();l.style.marginTop="8px";l.style.borderTop="1px solid #c0c0c0";l.style.paddingTop="6px";l.style.paddingBottom="6px";var h=this.editorUi.toolbar.addMenu("Helvetica",mxResources.get("fontFamily"),!0,"fontFamily",e,null,!0);h.style.color="rgb(112, 112, 112)";h.style.whiteSpace="nowrap";h.style.overflow="hidden";h.style.margin="0px";this.addArrow(h);h.style.width="200px";h.style.height="15px";k=e.cloneNode(!1);k.style.marginLeft="-3px";var g=this.editorUi.toolbar.addItems(["bold",
"italic","underline"],k,!0);g[0].setAttribute("title",mxResources.get("bold")+" ("+this.editorUi.actions.get("bold").shortcut+")");g[1].setAttribute("title",mxResources.get("italic")+" ("+this.editorUi.actions.get("italic").shortcut+")");g[2].setAttribute("title",mxResources.get("underline")+" ("+this.editorUi.actions.get("underline").shortcut+")");var m=this.editorUi.toolbar.addItems(["vertical"],k,!0)[0];a.appendChild(k);this.styleButtons(g);this.styleButtons([m]);var n=e.cloneNode(!1);n.style.marginLeft=
-"-3px";n.style.paddingBottom="0px";var p=function(a){return function(){return a()}},q=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),d.cellEditor.isContentEditing()?function(a){d.cellEditor.alignText(mxConstants.ALIGN_LEFT,a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",f.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),n),t=this.editorUi.toolbar.addButton("geSprite-center",
+"-3px";n.style.paddingBottom="0px";var p=function(a){return function(){return a()}},q=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),d.cellEditor.isContentEditing()?function(a){d.cellEditor.alignText(mxConstants.ALIGN_LEFT,a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",f.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),n),r=this.editorUi.toolbar.addButton("geSprite-center",
mxResources.get("center"),d.cellEditor.isContentEditing()?function(a){d.cellEditor.alignText(mxConstants.ALIGN_CENTER,a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_CENTER],"cells",f.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),n),u=this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),d.cellEditor.isContentEditing()?function(a){d.cellEditor.alignText(mxConstants.ALIGN_RIGHT,
-a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",f.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),n);this.styleButtons([q,t,u]);if(d.cellEditor.isContentEditing()){var r=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([r]);r.firstChild.style.background=
+a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",f.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),n);this.styleButtons([q,r,u]);if(d.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([t]);t.firstChild.style.background=
"url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
-r.firstChild.style.backgroundPosition="2px 2px";r.firstChild.style.backgroundSize="18px 18px";this.styleButtons([r])}var x=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),n),y=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),n),w=this.editorUi.toolbar.addButton("geSprite-bottom",
-mxResources.get("bottom"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),n);this.styleButtons([x,y,w]);a.appendChild(n);var F,H,C,D,z,G,J;d.cellEditor.isContentEditing()?(x.style.display="none",y.style.display="none",w.style.display="none",m.style.display="none",C=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){1==C.style.opacity&&document.execCommand("justifyfull",!1,null)},n),C.style.marginRight=
+t.firstChild.style.backgroundPosition="2px 2px";t.firstChild.style.backgroundSize="18px 18px";this.styleButtons([t])}var w=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),n),x=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),n),y=this.editorUi.toolbar.addButton("geSprite-bottom",
+mxResources.get("bottom"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),n);this.styleButtons([w,x,y]);a.appendChild(n);var F,H,C,E,z,G,J;d.cellEditor.isContentEditing()?(w.style.display="none",x.style.display="none",y.style.display="none",m.style.display="none",C=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){1==C.style.opacity&&document.execCommand("justifyfull",!1,null)},n),C.style.marginRight=
"9px",C.style.opacity=1,this.styleButtons([C,F=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},n),H=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},n)]),F.style.marginLeft="10px",p=n.cloneNode(!1),p.style.paddingTop="4px",n=[this.editorUi.toolbar.addButton("geSprite-orderedlist",
mxResources.get("numberedList"),function(){document.execCommand("insertorderedlist",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",
!1,null)},p),this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){d.cellEditor.toggleViewMode()},p)],this.styleButtons(n),n[n.length-2].style.marginLeft="10px",a.appendChild(p)):(g[2].style.marginRight="12px",u.style.marginRight="12px");n=e.cloneNode(!1);n.style.marginLeft="0px";n.style.paddingTop="8px";n.style.paddingBottom=
-"4px";n.style.fontWeight="normal";mxUtils.write(n,mxResources.get("position"));var L=document.createElement("select");L.style.position="absolute";L.style.left="126px";L.style.width="98px";L.style.border="1px solid rgb(160, 160, 160)";L.style.borderRadius="4px";L.style.marginTop="-2px";for(var r="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" "),O={topLeft:[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM],top:[mxConstants.ALIGN_CENTER,
+"4px";n.style.fontWeight="normal";mxUtils.write(n,mxResources.get("position"));var L=document.createElement("select");L.style.position="absolute";L.style.left="126px";L.style.width="98px";L.style.border="1px solid rgb(160, 160, 160)";L.style.borderRadius="4px";L.style.marginTop="-2px";for(var t="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" "),M={topLeft:[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM],top:[mxConstants.ALIGN_CENTER,
mxConstants.ALIGN_TOP,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_BOTTOM],topRight:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_TOP,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM],left:[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_MIDDLE],center:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_MIDDLE],right:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_MIDDLE],bottomLeft:[mxConstants.ALIGN_LEFT,
-mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_TOP],bottom:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP],bottomRight:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP]},p=0;p<r.length;p++){var K=document.createElement("option");K.setAttribute("value",r[p]);mxUtils.write(K,mxResources.get(r[p]));L.appendChild(K)}n.appendChild(L);r=e.cloneNode(!1);r.style.marginLeft="0px";r.style.paddingTop=
-"4px";r.style.paddingBottom="4px";r.style.fontWeight="normal";mxUtils.write(r,mxResources.get("writingDirection"));var P=document.createElement("select");P.style.position="absolute";P.style.border="1px solid rgb(160, 160, 160)";P.style.left="126px";P.style.width="98px";P.style.borderRadius="4px";P.style.marginTop="-2px";for(var K=["automatic","leftToRight","rightToLeft"],Y={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL},p=0;p<K.length;p++){var ba=
-document.createElement("option");ba.setAttribute("value",K[p]);mxUtils.write(ba,mxResources.get(K[p]));P.appendChild(ba)}r.appendChild(P);d.isEditing()||(a.appendChild(n),mxEvent.addListener(L,"change",function(a){d.getModel().beginUpdate();try{var b=O[L.value];null!=b&&(d.setCellStyles(mxConstants.STYLE_LABEL_POSITION,b[0],f.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,b[1],f.cells),d.setCellStyles(mxConstants.STYLE_ALIGN,b[2],f.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,
-b[3],f.cells))}finally{d.getModel().endUpdate()}mxEvent.consume(a)}),a.appendChild(r),mxEvent.addListener(P,"change",function(a){d.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION,Y[P.value],f.cells);mxEvent.consume(a)}));var M=document.createElement("input");M.style.position="absolute";M.style.border="1px solid rgb(160, 160, 160)";M.style.textAlign="right";M.style.marginTop="4px";M.style.left="161px";M.style.width="53px";M.style.borderRadius="4px";M.style.height="23px";M.style.boxSizing="border-box";
-k.appendChild(M);var R=null,n=this.installInputHandler(M,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(a){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var b=function(b,g){null!=d.cellEditor.textarea&&b!=d.cellEditor.textarea&&d.cellEditor.textarea.contains(b)&&(g||e.containsNode(b,!0))&&("FONT"==b.nodeName?(b.removeAttribute("size"),b.style.fontSize=a+"px"):mxUtils.getCurrentStyle(b).fontSize!=a+"px"&&(mxUtils.getCurrentStyle(b.parentNode).fontSize!=
+mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_TOP],bottom:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP],bottomRight:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP]},p=0;p<t.length;p++){var K=document.createElement("option");K.setAttribute("value",t[p]);mxUtils.write(K,mxResources.get(t[p]));L.appendChild(K)}n.appendChild(L);t=e.cloneNode(!1);t.style.marginLeft="0px";t.style.paddingTop=
+"4px";t.style.paddingBottom="4px";t.style.fontWeight="normal";mxUtils.write(t,mxResources.get("writingDirection"));var P=document.createElement("select");P.style.position="absolute";P.style.border="1px solid rgb(160, 160, 160)";P.style.left="126px";P.style.width="98px";P.style.borderRadius="4px";P.style.marginTop="-2px";for(var K=["automatic","leftToRight","rightToLeft"],ba={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL},p=0;p<K.length;p++){var Y=
+document.createElement("option");Y.setAttribute("value",K[p]);mxUtils.write(Y,mxResources.get(K[p]));P.appendChild(Y)}t.appendChild(P);d.isEditing()||(a.appendChild(n),mxEvent.addListener(L,"change",function(a){d.getModel().beginUpdate();try{var b=M[L.value];null!=b&&(d.setCellStyles(mxConstants.STYLE_LABEL_POSITION,b[0],f.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,b[1],f.cells),d.setCellStyles(mxConstants.STYLE_ALIGN,b[2],f.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,
+b[3],f.cells))}finally{d.getModel().endUpdate()}mxEvent.consume(a)}),a.appendChild(t),mxEvent.addListener(P,"change",function(a){d.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION,ba[P.value],f.cells);mxEvent.consume(a)}));var N=document.createElement("input");N.style.position="absolute";N.style.border="1px solid rgb(160, 160, 160)";N.style.textAlign="right";N.style.marginTop="4px";N.style.left="161px";N.style.width="53px";N.style.borderRadius="4px";N.style.height="23px";N.style.boxSizing="border-box";
+k.appendChild(N);var R=null,n=this.installInputHandler(N,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(a){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var b=function(b,g){null!=d.cellEditor.textarea&&b!=d.cellEditor.textarea&&d.cellEditor.textarea.contains(b)&&(g||e.containsNode(b,!0))&&("FONT"==b.nodeName?(b.removeAttribute("size"),b.style.fontSize=a+"px"):mxUtils.getCurrentStyle(b).fontSize!=a+"px"&&(mxUtils.getCurrentStyle(b.parentNode).fontSize!=
a+"px"?b.style.fontSize=a+"px":b.style.fontSize=""));c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],"values",[a],"cells",f.cells))},e=window.getSelection(),g=0<e.rangeCount?e.getRangeAt(0).commonAncestorContainer:d.cellEditor.textarea;g!=d.cellEditor.textarea&&g.nodeType==mxConstants.NODETYPE_ELEMENT||document.execCommand("fontSize",!1,"1");g!=d.cellEditor.textarea&&(g=g.parentNode);if(null!=g&&g.nodeType==mxConstants.NODETYPE_ELEMENT){var k=g.getElementsByTagName("*");
-b(g);for(g=0;g<k.length;g++)b(k[g])}M.value=a+" pt"}else if(window.getSelection||document.selection)if(b=function(a,b){for(;null!=b;){if(b===a)return!0;b=b.parentNode}return!1},k=null,document.selection?k=document.selection.createRange().parentElement():(e=window.getSelection(),0<e.rangeCount&&(k=e.getRangeAt(0).commonAncestorContainer)),null!=k&&b(d.cellEditor.textarea,k))for(R=a,document.execCommand("fontSize",!1,"4"),k=d.cellEditor.textarea.getElementsByTagName("font"),g=0;g<k.length;g++)if("4"==
-k[g].getAttribute("size")){k[g].removeAttribute("size");k[g].style.fontSize=R+"px";window.setTimeout(function(){M.value=R+" pt";R=null},0);break}},!0),n=this.createStepper(M,n,1,10,!0,Menus.prototype.defaultFontSize);n.style.display=M.style.display;n.style.marginTop="4px";n.style.left="214px";k.appendChild(n);k=h.getElementsByTagName("div")[0];k.style.cssFloat="right";var V=null,Z=d.shapeBackgroundColor,aa=null,W=d.shapeForegroundColor,ma=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),
+b(g);for(g=0;g<k.length;g++)b(k[g])}N.value=a+" pt"}else if(window.getSelection||document.selection)if(b=function(a,b){for(;null!=b;){if(b===a)return!0;b=b.parentNode}return!1},k=null,document.selection?k=document.selection.createRange().parentElement():(e=window.getSelection(),0<e.rangeCount&&(k=e.getRangeAt(0).commonAncestorContainer)),null!=k&&b(d.cellEditor.textarea,k))for(R=a,document.execCommand("fontSize",!1,"4"),k=d.cellEditor.textarea.getElementsByTagName("font"),g=0;g<k.length;g++)if("4"==
+k[g].getAttribute("size")){k[g].removeAttribute("size");k[g].style.fontSize=R+"px";window.setTimeout(function(){N.value=R+" pt";R=null},0);break}},!0),n=this.createStepper(N,n,1,10,!0,Menus.prototype.defaultFontSize);n.style.display=N.style.display;n.style.marginTop="4px";n.style.left="214px";k.appendChild(n);k=h.getElementsByTagName("div")[0];k.style.cssFloat="right";var V=null,Z=d.shapeBackgroundColor,aa=null,W=d.shapeForegroundColor,ma=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),
function(){return Z},function(a){document.execCommand("backcolor",!1,a!=mxConstants.NONE?a:"transparent");c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],"values",[a],"cells",f.cells))},d.shapeBackgroundColor,{install:function(a){V=a},destroy:function(){V=null}},null,!0):this.createCellColorOption(mxResources.get("backgroundColor"),mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"default",null,function(a){d.updateLabelElements(f.cells,function(a){a.style.backgroundColor=
null})},d.shapeBackgroundColor);ma.style.fontWeight="bold";var oa=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"default",null,null,d.shapeForegroundColor);oa.style.fontWeight="bold";k=1<=f.vertices.length?d.stylesheet.getDefaultVertexStyle():d.stylesheet.getDefaultEdgeStyle();k=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return W},function(a){if(mxClient.IS_FF){for(var b=d.cellEditor.textarea.getElementsByTagName("font"),
e=[],g=0;g<b.length;g++)e.push({node:b[g],color:b[g].getAttribute("color")});document.execCommand("forecolor",!1,a!=mxConstants.NONE?a:"transparent");c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[a],"cells",f.cells));a=d.cellEditor.textarea.getElementsByTagName("font");for(g=0;g<a.length;g++)if(g>=e.length||a[g]!=e[g].node||a[g]==e[g].node&&a[g].getAttribute("color")!=e[g].color){e=a[g].firstChild;if(null!=e&&"A"==e.nodeName&&null==e.nextSibling&&null!=
@@ -3130,17 +3134,17 @@ z){var b=z.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)
"1"),c.style.border="1px solid "+b,c.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(a){if(null!=z){var b=z.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,d,c){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)});this.editorUi.pickColor(b,function(b){var c=null==G||null!=
a&&mxEvent.isShiftDown(a)?z:G;d.processElements(c,function(a){a.style.backgroundColor=null});c.style.backgroundColor=null==b||b==mxConstants.NONE?"":b})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=z){var a=z.getAttribute("cellPadding")||0,a=new FilenameDialog(c,a,mxResources.get("apply"),mxUtils.bind(this,function(a){null!=a&&0<a.length?z.setAttribute("cellPadding",a):z.removeAttribute("cellPadding")}),mxResources.get("spacing"));c.showDialog(a.container,
300,80,!0,!0);a.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=z&&z.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=z&&z.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=z&&z.setAttribute("align","right")},e)];this.styleButtons(n);n[2].style.marginRight="10px";l.appendChild(e);a.appendChild(l);
-D=l}else a.appendChild(l),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var ea=mxUtils.bind(this,function(a,d,e){f=c.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);b(g[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);b(g[1],(a&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC);b(g[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);h.firstChild.nodeValue=mxUtils.getValue(f.style,mxConstants.STYLE_FONTFAMILY,
-Menus.prototype.defaultFont);b(m,"0"==mxUtils.getValue(f.style,mxConstants.STYLE_HORIZONTAL,"1"));if(e||document.activeElement!=M)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),M.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);b(q,a==mxConstants.ALIGN_LEFT);b(t,a==mxConstants.ALIGN_CENTER);b(u,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);
-b(x,a==mxConstants.ALIGN_TOP);b(y,a==mxConstants.ALIGN_MIDDLE);b(w,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(f.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);d=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);L.value=a==mxConstants.ALIGN_LEFT&&d==mxConstants.ALIGN_TOP?"topLeft":a==mxConstants.ALIGN_CENTER&&d==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&d==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&d==
+E=l}else a.appendChild(l),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var ea=mxUtils.bind(this,function(a,d,e){f=c.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);b(g[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);b(g[1],(a&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC);b(g[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);h.firstChild.nodeValue=mxUtils.getValue(f.style,mxConstants.STYLE_FONTFAMILY,
+Menus.prototype.defaultFont);b(m,"0"==mxUtils.getValue(f.style,mxConstants.STYLE_HORIZONTAL,"1"));if(e||document.activeElement!=N)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),N.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);b(q,a==mxConstants.ALIGN_LEFT);b(r,a==mxConstants.ALIGN_CENTER);b(u,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);
+b(w,a==mxConstants.ALIGN_TOP);b(x,a==mxConstants.ALIGN_MIDDLE);b(y,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(f.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);d=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);L.value=a==mxConstants.ALIGN_LEFT&&d==mxConstants.ALIGN_TOP?"topLeft":a==mxConstants.ALIGN_CENTER&&d==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&d==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&d==
mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&d==mxConstants.ALIGN_BOTTOM?"bottom":a==mxConstants.ALIGN_RIGHT&&d==mxConstants.ALIGN_BOTTOM?"bottomRight":a==mxConstants.ALIGN_LEFT?"left":a==mxConstants.ALIGN_RIGHT?"right":"center";a=mxUtils.getValue(f.style,mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION);a==mxConstants.TEXT_DIRECTION_RTL?P.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?P.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(P.value=
"automatic");if(e||document.activeElement!=ra)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING,2)),ra.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=na)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_TOP,0)),na.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=ia)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_RIGHT,0)),ia.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=ha)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_BOTTOM,
0)),ha.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=la)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_LEFT,0)),la.value=isNaN(a)?"":a+" pt"});qa=this.installInputHandler(ra,mxConstants.STYLE_SPACING,2,-999,999," pt");ta=this.installInputHandler(na,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");va=this.installInputHandler(ia,mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");pa=this.installInputHandler(ha,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");fa=this.installInputHandler(la,
-mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(M,ea);this.addKeyHandler(ra,ea);this.addKeyHandler(na,ea);this.addKeyHandler(ia,ea);this.addKeyHandler(ha,ea);this.addKeyHandler(la,ea);d.getModel().addListener(mxEvent.CHANGE,ea);this.listeners.push({destroy:function(){d.getModel().removeListener(ea)}});ea();if(d.cellEditor.isContentEditing()){var ka=!1,e=function(){ka||(ka=!0,window.setTimeout(function(){var a=d.getSelectedEditingElement();if(null!=a){var c=function(a,b){if(null!=
+mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(N,ea);this.addKeyHandler(ra,ea);this.addKeyHandler(na,ea);this.addKeyHandler(ia,ea);this.addKeyHandler(ha,ea);this.addKeyHandler(la,ea);d.getModel().addListener(mxEvent.CHANGE,ea);this.listeners.push({destroy:function(){d.getModel().removeListener(ea)}});ea();if(d.cellEditor.isContentEditing()){var ka=!1,e=function(){ka||(ka=!0,window.setTimeout(function(){var a=d.getSelectedEditingElement();if(null!=a){var c=function(a,b){if(null!=
a&&null!=b){if(a==b)return!0;if(a.length>b.length+1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},e=function(b){if(null!=d.getParentByName(a,b,d.cellEditor.textarea))return!0;for(var c=a;null!=c&&1==c.childNodes.length;)if(c=c.childNodes[0],c.nodeName==b)return!0;return!1},k=function(a){a=null!=a?a.fontSize:null;return null!=a&&"px"==a.substring(a.length-2)?parseFloat(a):mxConstants.DEFAULT_FONTSIZE},l=function(a,b,d){return null!=d.style&&null!=b?(b=b.lineHeight,null!=d.style.lineHeight&&
-"%"==d.style.lineHeight.substring(d.style.lineHeight.length-1)?parseInt(d.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""},m=mxUtils.getCurrentStyle(a),n=k(m),p=l(n,m,a),r=a.getElementsByTagName("*");if(0<r.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var w=window.getSelection(),x=0;x<r.length;x++)if(w.containsNode(r[x],!0)){temp=mxUtils.getCurrentStyle(r[x]);var n=Math.max(k(temp),n),y=l(n,temp,r[x]);if(y!=p||isNaN(y))p=""}null!=m&&(b(g[0],
-"bold"==m.fontWeight||400<m.fontWeight||e("B")||e("STRONG")),b(g[1],"italic"==m.fontStyle||e("I")||e("EM")),b(g[2],e("U")),b(H,e("SUP")),b(F,e("SUB")),d.cellEditor.isTableSelected()?(b(C,c(m.textAlign,"justify")),b(q,c(m.textAlign,"left")),b(t,c(m.textAlign,"center")),b(u,c(m.textAlign,"right"))):(e=d.cellEditor.align||mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),c(m.textAlign,"justify")?(b(C,c(m.textAlign,"justify")),b(q,!1),b(t,!1),b(u,!1)):(b(C,!1),b(q,e==mxConstants.ALIGN_LEFT),
-b(t,e==mxConstants.ALIGN_CENTER),b(u,e==mxConstants.ALIGN_RIGHT))),z=d.getParentByName(a,"TABLE",d.cellEditor.textarea),J=null==z?null:d.getParentByName(a,"TR",z),G=null==z?null:d.getParentByNames(a,["TD","TH"],z),D.style.display=null!=z?"":"none",document.activeElement!=M&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=R?(a.removeAttribute("size"),a.style.fontSize=R+" pt",R=null):M.value=isNaN(n)?"":n+" pt",y=parseFloat(p),isNaN(y)?ja.value="100 %":ja.value=Math.round(100*y)+" %"),null!=
+"%"==d.style.lineHeight.substring(d.style.lineHeight.length-1)?parseInt(d.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""},m=mxUtils.getCurrentStyle(a),n=k(m),p=l(n,m,a),t=a.getElementsByTagName("*");if(0<t.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var w=window.getSelection(),y=0;y<t.length;y++)if(w.containsNode(t[y],!0)){temp=mxUtils.getCurrentStyle(t[y]);var n=Math.max(k(temp),n),x=l(n,temp,t[y]);if(x!=p||isNaN(x))p=""}null!=m&&(b(g[0],
+"bold"==m.fontWeight||400<m.fontWeight||e("B")||e("STRONG")),b(g[1],"italic"==m.fontStyle||e("I")||e("EM")),b(g[2],e("U")),b(H,e("SUP")),b(F,e("SUB")),d.cellEditor.isTableSelected()?(b(C,c(m.textAlign,"justify")),b(q,c(m.textAlign,"left")),b(r,c(m.textAlign,"center")),b(u,c(m.textAlign,"right"))):(e=d.cellEditor.align||mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),c(m.textAlign,"justify")?(b(C,c(m.textAlign,"justify")),b(q,!1),b(r,!1),b(u,!1)):(b(C,!1),b(q,e==mxConstants.ALIGN_LEFT),
+b(r,e==mxConstants.ALIGN_CENTER),b(u,e==mxConstants.ALIGN_RIGHT))),z=d.getParentByName(a,"TABLE",d.cellEditor.textarea),J=null==z?null:d.getParentByName(a,"TR",z),G=null==z?null:d.getParentByNames(a,["TD","TH"],z),E.style.display=null!=z?"":"none",document.activeElement!=N&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=R?(a.removeAttribute("size"),a.style.fontSize=R+" pt",R=null):N.value=isNaN(n)?"":n+" pt",x=parseFloat(p),isNaN(x)?ja.value="100 %":ja.value=Math.round(100*x)+" %"),null!=
aa&&(W="rgba(0, 0, 0, 0)"==m.color||"transparent"==m.color?mxConstants.NONE:mxUtils.rgba2hex(m.color),aa(W,!0)),null!=V&&(Z="rgba(0, 0, 0, 0)"==m.backgroundColor||"transparent"==m.backgroundColor?mxConstants.NONE:mxUtils.rgba2hex(m.backgroundColor),V(Z,!0)),null!=h.firstChild&&(h.firstChild.nodeValue=Graph.stripQuotes(m.fontFamily)))}ka=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(d.cellEditor.textarea,"DOMSubtreeModified",e);mxEvent.addListener(d.cellEditor.textarea,
"input",e);mxEvent.addListener(d.cellEditor.textarea,"touchend",e);mxEvent.addListener(d.cellEditor.textarea,"mouseup",e);mxEvent.addListener(d.cellEditor.textarea,"keyup",e);this.listeners.push({destroy:function(){}});e()}return a};StyleFormatPanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};mxUtils.extend(StyleFormatPanel,BaseFormatPanel);StyleFormatPanel.prototype.defaultStrokeColor="black";
StyleFormatPanel.prototype.init=function(){var a=this.editorUi.getSelectionState();!a.containsLabel&&0<a.cells.length&&(a.containsImage&&1==a.vertices.length&&"image"==a.style.shape&&null!=a.style.image&&"data:image/svg+xml;"==a.style.image.substring(0,19)&&this.container.appendChild(this.addSvgStyles(this.createPanel())),a.fill&&this.container.appendChild(this.addFill(this.createPanel())),this.container.appendChild(this.addStroke(this.createPanel())),this.container.appendChild(this.addLineJumps(this.createPanel())),
@@ -3160,19 +3164,19 @@ g=0;g<m.length;g++){var n=document.createElement("option");n.setAttribute("value
mxConstants.DIRECTION_SOUTH),g=mxUtils.getValue(d.style,"fillStyle","auto");""==c&&(c=mxConstants.DIRECTION_SOUTH);f.value=c;e.value=g;a.style.display=d.fill?"":"none";c=mxUtils.getValue(d.style,h,null);d.fill&&null!=c&&c!=mxConstants.NONE&&"filledEdge"!=d.style.shape?(e.style.display="1"==d.style.sketch?"":"none",k.style.display=d.containsImage||"1"==d.style.sketch&&"solid"!=g&&"auto"!=g?"none":""):(e.style.display="none",k.style.display="none")});c.getModel().addListener(mxEvent.CHANGE,p);this.listeners.push({destroy:function(){c.getModel().removeListener(p)}});
p();mxEvent.addListener(f,"change",function(a){c.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,f.value,d.cells);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[f.value],"cells",d.cells));mxEvent.consume(a)});mxEvent.addListener(e,"change",function(a){c.setCellStyles("fillStyle",e.value,d.cells);b.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[e.value],"cells",d.cells));mxEvent.consume(a)});a.appendChild(l);a.appendChild(k);
l=this.getCustomColors();for(g=0;g<l.length;g++)a.appendChild(this.createCellColorOption(l[g].title,l[g].key,l[g].defaultValue));return a};StyleFormatPanel.prototype.getCustomColors=function(){var a=[];this.editorUi.getSelectionState().swimlane&&a.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return a};
-StyleFormatPanel.prototype.addStroke=function(a){function b(a){var b=parseFloat(r.value),b=Math.min(999,Math.max(0,isNaN(b)?1:b));b!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(f.setCellStyles(mxConstants.STYLE_STROKEWIDTH,b,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[b],"cells",e.cells)));r.value=b+" pt";mxEvent.consume(a)}function c(a){var b=parseFloat(x.value),b=Math.min(999,Math.max(0,isNaN(b)?1:b));b!=mxUtils.getValue(e.style,
-mxConstants.STYLE_STROKEWIDTH,1)&&(f.setCellStyles(mxConstants.STYLE_STROKEWIDTH,b,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[b],"cells",e.cells)));x.value=b+" pt";mxEvent.consume(a)}var d=this.editorUi,f=d.editor.graph,e=d.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="4px";a.style.whiteSpace="normal";var l=document.createElement("div");l.style.fontWeight="bold";e.stroke||(l.style.display="none");var k=document.createElement("select");
+StyleFormatPanel.prototype.addStroke=function(a){function b(a){var b=parseFloat(t.value),b=Math.min(999,Math.max(0,isNaN(b)?1:b));b!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(f.setCellStyles(mxConstants.STYLE_STROKEWIDTH,b,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[b],"cells",e.cells)));t.value=b+" pt";mxEvent.consume(a)}function c(a){var b=parseFloat(w.value),b=Math.min(999,Math.max(0,isNaN(b)?1:b));b!=mxUtils.getValue(e.style,
+mxConstants.STYLE_STROKEWIDTH,1)&&(f.setCellStyles(mxConstants.STYLE_STROKEWIDTH,b,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[b],"cells",e.cells)));w.value=b+" pt";mxEvent.consume(a)}var d=this.editorUi,f=d.editor.graph,e=d.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="4px";a.style.whiteSpace="normal";var l=document.createElement("div");l.style.fontWeight="bold";e.stroke||(l.style.display="none");var k=document.createElement("select");
k.style.position="absolute";k.style.height="22px";k.style.padding="0px";k.style.marginTop="-3px";k.style.boxSizing="border-box";k.style.left="94px";k.style.width="80px";k.style.border="1px solid rgb(160, 160, 160)";k.style.borderRadius="4px";for(var h=["sharp","rounded","curved"],g=0;g<h.length;g++){var m=document.createElement("option");m.setAttribute("value",h[g]);mxUtils.write(m,mxResources.get(h[g]));k.appendChild(m)}mxEvent.addListener(k,"change",function(a){f.getModel().beginUpdate();try{var b=
[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],c=["0",null];"rounded"==k.value?c=["1",null]:"curved"==k.value&&(c=[null,"1"]);for(var g=0;g<b.length;g++)f.setCellStyles(b[g],c[g],e.cells);d.fireEvent(new mxEventObject("styleChanged","keys",b,"values",c,"cells",e.cells))}finally{f.getModel().endUpdate()}mxEvent.consume(a)});mxEvent.addListener(k,"click",function(a){mxEvent.consume(a)});var n="image"==e.style.shape?mxConstants.STYLE_IMAGE_BORDER:mxConstants.STYLE_STROKECOLOR,h="image"==e.style.shape?
mxResources.get("border"):mxResources.get("line"),h=this.createCellColorOption(h,n,"default",null,mxUtils.bind(this,function(a){f.setCellStyles(n,a,e.cells)}),f.shapeForegroundColor);h.appendChild(k);l.appendChild(h);var p=l.cloneNode(!1);p.style.fontWeight="normal";p.style.whiteSpace="nowrap";p.style.position="relative";p.style.paddingLeft="0px";p.style.marginBottom="2px";p.style.overflow="hidden";p.style.marginTop="2px";p.style.width="220px";p.className="geToolbarContainer";var q=mxUtils.bind(this,
function(a,b,d,c,e){a=this.editorUi.menus.styleChange(a,"",c,e,"geIcon",null);c=document.createElement("div");c.style.width=b+"px";c.style.height="1px";c.style.borderBottom="1px "+d+" "+this.defaultStrokeColor;c.style.paddingTop="6px";a.firstChild.firstChild.style.padding="0px 4px 0px 4px";a.firstChild.firstChild.style.width=b+"px";a.firstChild.firstChild.appendChild(c);return a}),g=this.editorUi.toolbar.addMenuFunctionInContainer(p,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,
function(a){q(a,75,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));q(a,75,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));q(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");q(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",
-mxResources.get("dotted")+" (2)");q(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),t=p.cloneNode(!1),u=this.editorUi.toolbar.addMenuFunctionInContainer(t,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",
+mxResources.get("dotted")+" (2)");q(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),r=p.cloneNode(!1),u=this.editorUi.toolbar.addMenuFunctionInContainer(r,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",
null,!0).setAttribute("title",mxResources.get("line"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["link",null,null,null],"geIcon geSprite geSprite-linkedge",null,!0).setAttribute("title",mxResources.get("link"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["flexArrow",null,null,null],"geIcon geSprite geSprite-arrow",null,!0).setAttribute("title",
-mxResources.get("arrow"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,null],"geIcon geSprite geSprite-simplearrow",null,!0).setAttribute("title",mxResources.get("simpleArrow"))})),m=this.editorUi.toolbar.addMenuFunctionInContainer(t,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){q(a,33,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",
+mxResources.get("arrow"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,null],"geIcon geSprite geSprite-simplearrow",null,!0).setAttribute("title",mxResources.get("simpleArrow"))})),m=this.editorUi.toolbar.addMenuFunctionInContainer(r,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){q(a,33,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",
mxResources.get("solid"));q(a,33,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));q(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");q(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");q(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],
-["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),h=p.cloneNode(!1),r=document.createElement("input");r.style.position="absolute";r.style.textAlign="right";r.style.marginTop="2px";r.style.width="52px";r.style.height="21px";r.style.left="146px";r.style.border="1px solid rgb(160, 160, 160)";r.style.borderRadius="4px";r.style.boxSizing="border-box";r.setAttribute("title",mxResources.get("linewidth"));p.appendChild(r);var x=r.cloneNode(!0);t.appendChild(x);var y=this.createStepper(r,
-b,1,9);y.style.display=r.style.display;y.style.marginTop="2px";y.style.left="198px";p.appendChild(y);y=this.createStepper(x,c,1,9);y.style.display=x.style.display;y.style.marginTop="2px";x.style.position="absolute";y.style.left="198px";t.appendChild(y);mxEvent.addListener(r,"blur",b);mxEvent.addListener(r,"change",b);mxEvent.addListener(x,"blur",c);mxEvent.addListener(x,"change",c);var w=this.editorUi.toolbar.addMenuFunctionInContainer(h,"geSprite-orthogonal",mxResources.get("waypoints"),!1,mxUtils.bind(this,
+["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),h=p.cloneNode(!1),t=document.createElement("input");t.style.position="absolute";t.style.textAlign="right";t.style.marginTop="2px";t.style.width="52px";t.style.height="21px";t.style.left="146px";t.style.border="1px solid rgb(160, 160, 160)";t.style.borderRadius="4px";t.style.boxSizing="border-box";t.setAttribute("title",mxResources.get("linewidth"));p.appendChild(t);var w=t.cloneNode(!0);r.appendChild(w);var x=this.createStepper(t,
+b,1,9);x.style.display=t.style.display;x.style.marginTop="2px";x.style.left="198px";p.appendChild(x);x=this.createStepper(w,c,1,9);x.style.display=w.style.display;x.style.marginTop="2px";w.style.position="absolute";x.style.left="198px";r.appendChild(x);mxEvent.addListener(t,"blur",b);mxEvent.addListener(t,"change",b);mxEvent.addListener(w,"blur",c);mxEvent.addListener(w,"change",c);var y=this.editorUi.toolbar.addMenuFunctionInContainer(h,"geSprite-orthogonal",mxResources.get("waypoints"),!1,mxUtils.bind(this,
function(a){"arrow"!=e.style.shape&&(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",null,!0).setAttribute("title",mxResources.get("straight")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle",null,null],"geIcon geSprite geSprite-orthogonal",null,!0).setAttribute("title",mxResources.get("orthogonal")),
this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalelbow",
null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalisometric",null,!0).setAttribute("title",mxResources.get("isometric")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle",
@@ -3204,22 +3208,22 @@ null,!1,Format.classicFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIco
"",[mxConstants.STYLE_ENDARROW,"endFill"],["baseDash",0],null,null,!1,Format.baseDashMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERone",0],null,null,!1,Format.EROneMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmandOne",0],null,null,!1,Format.ERmandOneMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmany",0],null,null,!1,Format.ERmanyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERoneToMany",0],null,null,!1,Format.ERoneToManyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToOne",0],null,null,!1,Format.ERzeroToOneMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",0],null,null,!1,Format.ERzeroToManyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["doubleBlock",0],null,null,!1,Format.doubleBlockMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["doubleBlock",1],null,null,!1,Format.doubleBlockFilledMarkerImage.src),"scaleX(-1)")):this.editorUi.menus.edgeStyleChange(a,
-"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"));a.div.style.width="40px";window.setTimeout(mxUtils.bind(this,function(){null!=a.div&&mxUtils.fit(a.div)}),0)}})),y=this.addArrow(u,8);y.nextSibling.style.position="relative";y.nextSibling.style.top="-2px";y=this.addArrow(w,10);y.nextSibling.style.position="relative";y.nextSibling.style.top="-3px";w.getElementsByTagName("img")[0].style.top="-1px";
-this.addArrow(F);this.addArrow(H);y=this.addArrow(g,9);y.className="geIcon";y.style.width="auto";var C=this.addArrow(m,9);C.className="geIcon";C.style.width="22px";var D=document.createElement("div");D.style.width="84px";D.style.height="1px";D.style.borderBottom="1px solid "+this.defaultStrokeColor;D.style.marginBottom="7px";y.appendChild(D);var z=document.createElement("div");z.style.width="23px";z.style.height="1px";z.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.marginBottom=
-"7px";C.appendChild(z);g.style.height="15px";g.style.marginLeft="16px";m.style.height="15px";m.style.marginLeft="3px";u.style.marginLeft="10px";u.style.height="15px";w.style.marginLeft="10px";w.style.height="17px";F.style.marginLeft="3px";F.style.height="17px";H.style.marginLeft="3px";H.style.height="17px";a.appendChild(l);a.appendChild(t);a.appendChild(p);g=p.cloneNode(!1);g.style.padding="5px 4px 6px 0px";g.style.fontWeight="normal";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft=
-"0px";m.style.marginBottom="12px";m.style.marginTop="2px";m.style.fontWeight="normal";m.style.width="76px";mxUtils.write(m,mxResources.get("lineend"));g.appendChild(m);var G,J,L=this.addUnitInput(g,"pt",98,52,function(){G.apply(this,arguments)}),O=this.addUnitInput(g,"pt",30,52,function(){J.apply(this,arguments)});mxUtils.br(g);y=document.createElement("div");y.style.height="8px";g.appendChild(y);m=m.cloneNode(!1);mxUtils.write(m,mxResources.get("linestart"));g.appendChild(m);var K,P,Y=this.addUnitInput(g,
-"pt",98,52,function(){K.apply(this,arguments)}),ba=this.addUnitInput(g,"pt",30,52,function(){P.apply(this,arguments)});mxUtils.br(g);this.addLabel(g,mxResources.get("spacing"),98,52);this.addLabel(g,mxResources.get("size"),30,52);mxUtils.br(g);l=l.cloneNode(!1);l.style.fontWeight="normal";l.style.position="relative";l.style.paddingLeft="16px";l.style.marginBottom="2px";l.style.marginTop="6px";l.style.borderWidth="0px";l.style.paddingBottom="18px";m=document.createElement("div");m.style.position="absolute";
-m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="1px";m.style.fontWeight="normal";m.style.width="120px";mxUtils.write(m,mxResources.get("perimeter"));l.appendChild(m);var M,R=this.addUnitInput(l,"pt",30,52,function(){M.apply(this,arguments)});e.edges.length==e.cells.length?(a.appendChild(h),a.appendChild(g)):e.vertices.length==e.cells.length&&a.appendChild(l);var V=mxUtils.bind(this,function(b,c,f){function g(a,b,c,f){c=c.getElementsByTagName("div")[0];null!=c&&(c.className=
+"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"));a.div.style.width="40px";window.setTimeout(mxUtils.bind(this,function(){null!=a.div&&mxUtils.fit(a.div)}),0)}})),x=this.addArrow(u,8);x.nextSibling.style.position="relative";x.nextSibling.style.top="-2px";x=this.addArrow(y,10);x.nextSibling.style.position="relative";x.nextSibling.style.top="-3px";y.getElementsByTagName("img")[0].style.top="-1px";
+this.addArrow(F);this.addArrow(H);x=this.addArrow(g,9);x.className="geIcon";x.style.width="auto";var C=this.addArrow(m,9);C.className="geIcon";C.style.width="22px";var E=document.createElement("div");E.style.width="84px";E.style.height="1px";E.style.borderBottom="1px solid "+this.defaultStrokeColor;E.style.marginBottom="7px";x.appendChild(E);var z=document.createElement("div");z.style.width="23px";z.style.height="1px";z.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.marginBottom=
+"7px";C.appendChild(z);g.style.height="15px";g.style.marginLeft="16px";m.style.height="15px";m.style.marginLeft="3px";u.style.marginLeft="10px";u.style.height="15px";y.style.marginLeft="10px";y.style.height="17px";F.style.marginLeft="3px";F.style.height="17px";H.style.marginLeft="3px";H.style.height="17px";a.appendChild(l);a.appendChild(r);a.appendChild(p);g=p.cloneNode(!1);g.style.padding="5px 4px 6px 0px";g.style.fontWeight="normal";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft=
+"0px";m.style.marginBottom="12px";m.style.marginTop="2px";m.style.fontWeight="normal";m.style.width="76px";mxUtils.write(m,mxResources.get("lineend"));g.appendChild(m);var G,J,L=this.addUnitInput(g,"pt",98,52,function(){G.apply(this,arguments)}),M=this.addUnitInput(g,"pt",30,52,function(){J.apply(this,arguments)});mxUtils.br(g);x=document.createElement("div");x.style.height="8px";g.appendChild(x);m=m.cloneNode(!1);mxUtils.write(m,mxResources.get("linestart"));g.appendChild(m);var K,P,ba=this.addUnitInput(g,
+"pt",98,52,function(){K.apply(this,arguments)}),Y=this.addUnitInput(g,"pt",30,52,function(){P.apply(this,arguments)});mxUtils.br(g);this.addLabel(g,mxResources.get("spacing"),98,52);this.addLabel(g,mxResources.get("size"),30,52);mxUtils.br(g);l=l.cloneNode(!1);l.style.fontWeight="normal";l.style.position="relative";l.style.paddingLeft="16px";l.style.marginBottom="2px";l.style.marginTop="6px";l.style.borderWidth="0px";l.style.paddingBottom="18px";m=document.createElement("div");m.style.position="absolute";
+m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="1px";m.style.fontWeight="normal";m.style.width="120px";mxUtils.write(m,mxResources.get("perimeter"));l.appendChild(m);var N,R=this.addUnitInput(l,"pt",30,52,function(){N.apply(this,arguments)});e.edges.length==e.cells.length?(a.appendChild(h),a.appendChild(g)):e.vertices.length==e.cells.length&&a.appendChild(l);var V=mxUtils.bind(this,function(b,c,f){function g(a,b,c,f){c=c.getElementsByTagName("div")[0];null!=c&&(c.className=
d.getCssClassForMarker(f,e.style.shape,a,b),c.nextSibling.style.marginLeft="1px",c.nextSibling.style.paddingRight="5px","geSprite geSprite-noarrow"==c.className?(c.innerHTML=mxUtils.htmlEntities(mxResources.get("none")),c.style.backgroundImage="none",c.style.verticalAlign="top",c.style.marginTop="4px",c.style.fontSize="10px",c.style.filter="none",c.style.color=this.defaultStrokeColor,c.nextSibling.style.marginTop="0px"):(c.nextSibling.style.position="relative",c.nextSibling.style.top="-2px"));return c}
-e=d.getSelectionState();if(f||document.activeElement!=r)b=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),r.value=isNaN(b)?"":b+" pt";if(f||document.activeElement!=x)b=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),x.value=isNaN(b)?"":b+" pt";k.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?k.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,
-null)&&(k.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?D.style.borderBottom="1px dashed "+this.defaultStrokeColor:D.style.borderBottom="1px dotted "+this.defaultStrokeColor:D.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.borderBottom=D.style.borderBottom;b=w.getElementsByTagName("div")[0];null!=b&&(c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null),"1"==mxUtils.getValue(e.style,
+e=d.getSelectionState();if(f||document.activeElement!=t)b=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),t.value=isNaN(b)?"":b+" pt";if(f||document.activeElement!=w)b=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(b)?"":b+" pt";k.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?k.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,
+null)&&(k.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?E.style.borderBottom="1px dashed "+this.defaultStrokeColor:E.style.borderBottom="1px dotted "+this.defaultStrokeColor:E.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.borderBottom=E.style.borderBottom;b=y.getElementsByTagName("div")[0];null!=b&&(c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null),"1"==mxUtils.getValue(e.style,
mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null),"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?b.className="geSprite geSprite-curved":b.className="straight"==c||"none"==c||null==c?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c?"geSprite geSprite-entity":"elbowEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==c?"geSprite "+("vertical"==
-mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal");b=u.getElementsByTagName("div")[0];null!=b&&(b.className="link"==e.style.shape?"geSprite geSprite-linkedge":"flexArrow"==e.style.shape?"geSprite geSprite-arrow":"arrow"==e.style.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection");e.edges.length==e.cells.length?(t.style.display="",p.style.display="none"):(t.style.display="none",p.style.display=
+mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal");b=u.getElementsByTagName("div")[0];null!=b&&(b.className="link"==e.style.shape?"geSprite geSprite-linkedge":"flexArrow"==e.style.shape?"geSprite geSprite-arrow":"arrow"==e.style.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection");e.edges.length==e.cells.length?(r.style.display="",p.style.display="none"):(r.style.display="none",p.style.display=
"");Graph.lineJumpsEnabled&&0<e.edges.length&&0==e.vertices.length&&e.lineJumps&&(a.style.borderBottomStyle="none");b=g(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),F,"start");c=g(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,"endFill","1"),H,"end");null!=b&&null!=c&&("arrow"==e.style.shape?(b.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(b.className=
-"geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow"));mxUtils.setOpacity(w,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(F,30),mxUtils.setOpacity(H,30)):(mxUtils.setOpacity(F,100),mxUtils.setOpacity(H,100));if(f||document.activeElement!=ba)b=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),ba.value=isNaN(b)?"":b+" pt";if(f||document.activeElement!=
-Y)b=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),Y.value=isNaN(b)?"":b+" pt";if(f||document.activeElement!=O)b=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),O.value=isNaN(b)?"":b+" pt";if(f||document.activeElement!=Y)b=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0)),L.value=isNaN(b)?"":b+" pt";if(f||document.activeElement!=R)b=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,
-0)),R.value=isNaN(b)?"":b+" pt"});P=this.installInputHandler(ba,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");K=this.installInputHandler(Y,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");J=this.installInputHandler(O,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");G=this.installInputHandler(L,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0,-999,999," pt");M=this.installInputHandler(R,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(r,
-V);this.addKeyHandler(ba,V);this.addKeyHandler(Y,V);this.addKeyHandler(O,V);this.addKeyHandler(L,V);this.addKeyHandler(R,V);f.getModel().addListener(mxEvent.CHANGE,V);this.listeners.push({destroy:function(){f.getModel().removeListener(V)}});V();return a};
+"geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow"));mxUtils.setOpacity(y,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(F,30),mxUtils.setOpacity(H,30)):(mxUtils.setOpacity(F,100),mxUtils.setOpacity(H,100));if(f||document.activeElement!=Y)b=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),Y.value=isNaN(b)?"":b+" pt";if(f||document.activeElement!=ba)b=
+parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),ba.value=isNaN(b)?"":b+" pt";if(f||document.activeElement!=M)b=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),M.value=isNaN(b)?"":b+" pt";if(f||document.activeElement!=ba)b=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0)),L.value=isNaN(b)?"":b+" pt";if(f||document.activeElement!=R)b=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,
+0)),R.value=isNaN(b)?"":b+" pt"});P=this.installInputHandler(Y,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");K=this.installInputHandler(ba,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");J=this.installInputHandler(M,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");G=this.installInputHandler(L,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0,-999,999," pt");N=this.installInputHandler(R,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(t,
+V);this.addKeyHandler(Y,V);this.addKeyHandler(ba,V);this.addKeyHandler(M,V);this.addKeyHandler(L,V);this.addKeyHandler(R,V);f.getModel().addListener(mxEvent.CHANGE,V);this.listeners.push({destroy:function(){f.getModel().removeListener(V)}});V();return a};
StyleFormatPanel.prototype.addLineJumps=function(a){var b=this.editorUi,c=b.editor.graph,d=b.getSelectionState();if(Graph.lineJumpsEnabled&&0<d.edges.length&&0==d.vertices.length&&d.lineJumps){a.style.padding="2px 0px 24px 14px";var f=document.createElement("div");f.style.position="absolute";f.style.maxWidth="82px";f.style.overflow="hidden";f.style.textOverflow="ellipsis";mxUtils.write(f,mxResources.get("lineJumps"));a.appendChild(f);var e=document.createElement("select");e.style.position="absolute";
e.style.height="21px";e.style.padding="0px";e.style.marginTop="-2px";e.style.boxSizing="border-box";e.style.right="76px";e.style.width="54px";e.style.border="1px solid rgb(160, 160, 160)";e.style.borderRadius="4px";for(var f=["none","arc","gap","sharp","line"],l=0;l<f.length;l++){var k=document.createElement("option");k.setAttribute("value",f[l]);mxUtils.write(k,mxResources.get(f[l]));e.appendChild(k)}mxEvent.addListener(e,"change",function(a){c.getModel().beginUpdate();try{c.setCellStyles("jumpStyle",
e.value,d.cells),b.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[e.value],"cells",d.cells))}finally{c.getModel().endUpdate()}mxEvent.consume(a)});mxEvent.addListener(e,"click",function(a){mxEvent.consume(a)});a.appendChild(e);var h,g=this.addUnitInput(a,"pt",16,42,function(){h.apply(this,arguments)});h=this.installInputHandler(g,"jumpSize",Graph.defaultJumpSize,0,999," pt");var m=mxUtils.bind(this,function(a,c,f){d=b.getSelectionState();e.value=mxUtils.getValue(d.style,
@@ -3231,26 +3235,26 @@ mxUtils.extend(DiagramStylePanel,BaseFormatPanel);DiagramStylePanel.prototype.in
DiagramStylePanel.prototype.addView=function(a){var b=this.editorUi,c=b.editor.graph,d=c.getModel(),f=c.view.gridColor;a.style.whiteSpace="normal";var e="1"==c.currentVertexStyle.sketch&&"1"==c.currentEdgeStyle.sketch,l="1"==c.currentVertexStyle.rounded,k="1"==c.currentEdgeStyle.curved,h=document.createElement("div");h.style.marginRight="16px";a.style.paddingTop="8px";var g=document.createElement("table");g.style.width="210px";g.style.fontWeight="bold";var m=document.createElement("tbody"),n=document.createElement("tr");
n.style.padding="0px";var p=document.createElement("td");p.style.padding="0px";p.style.width="50%";p.setAttribute("valign","middle");var q=p.cloneNode(!0);q.style.paddingLeft="8px";"1"!=urlParams.sketch&&(h.style.paddingBottom="12px",n.appendChild(p),p.appendChild(this.createOption(mxResources.get("sketch"),function(){return e},function(a){(e=a)?(c.currentEdgeStyle.sketch="1",c.currentVertexStyle.sketch="1"):(delete c.currentEdgeStyle.sketch,delete c.currentVertexStyle.sketch);c.updateCellStyles({sketch:a?
"1":null},c.getVerticesAndEdges())},null,function(a){a.style.width="auto"})));n.appendChild(q);m.appendChild(n);g.appendChild(m);q.appendChild(this.createOption(mxResources.get("rounded"),function(){return l},function(a){(l=a)?(c.currentEdgeStyle.rounded="1",c.currentVertexStyle.rounded="1"):(delete c.currentEdgeStyle.rounded,delete c.currentVertexStyle.rounded);c.updateCellStyles({rounded:a?"1":"0"},c.getVerticesAndEdges())},null,function(a){a.style.width="auto"}));"1"!=urlParams.sketch&&(p=p.cloneNode(!1),
-q=q.cloneNode(!1),n=n.cloneNode(!1),n.appendChild(p),n.appendChild(q),m.appendChild(n),p.appendChild(this.createOption(mxResources.get("curved"),function(){return k},function(a){(k=a)?c.currentEdgeStyle.curved="1":delete c.currentEdgeStyle.curved;c.updateCellStyles({curved:a?"1":null},c.getVerticesAndEdges(!1,!0))},null,function(a){a.style.width="auto"})));h.appendChild(g);a.appendChild(h);var t=["fillColor","strokeColor","fontColor","gradientColor"],u=mxUtils.bind(this,function(a,b){var e=c.getVerticesAndEdges();
-d.beginUpdate();try{for(var f=0;f<e.length;f++){var g=c.getCellStyle(e[f]);null!=g.labelBackgroundColor&&c.updateCellStyles({labelBackgroundColor:null!=b?b.background:null},[e[f]]);for(var k=d.isEdge(e[f]),h=d.getStyle(e[f]),l=k?c.currentEdgeStyle:c.currentVertexStyle,m=0;m<a.length;m++)if(null!=g[a[m]]&&g[a[m]]!=mxConstants.NONE||a[m]!=mxConstants.STYLE_FILLCOLOR&&a[m]!=mxConstants.STYLE_STROKECOLOR)h=mxUtils.setStyle(h,a[m],l[a[m]]);d.setStyle(e[f],h)}}finally{d.endUpdate()}}),r=mxUtils.bind(this,
-function(a,b,d){if(null!=a)for(var c=0;c<b.length;c++)if(null!=a[b[c]]&&a[b[c]]!=mxConstants.NONE||b[c]!=mxConstants.STYLE_FILLCOLOR&&b[c]!=mxConstants.STYLE_STROKECOLOR)a[b[c]]=d[b[c]]}),x=mxUtils.bind(this,function(a,b,d,e,f){if(null!=a){null!=d&&null!=b.labelBackgroundColor&&(e=null!=e?e.background:null,f=null!=f?f:c,null==e&&(e=f.background),null==e&&(e=f.defaultPageBackgroundColor),b.labelBackgroundColor=e);for(var g in a)if(null==d||null!=b[g]&&b[g]!=mxConstants.NONE||g!=mxConstants.STYLE_FILLCOLOR&&
-g!=mxConstants.STYLE_STROKECOLOR)b[g]=a[g]}});"1"!=urlParams.sketch&&(p=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(a){a=c.getVerticesAndEdges(!0,!0);if(0<a.length){d.beginUpdate();try{c.updateCellStyles({sketch:null,rounded:null},a),c.updateCellStyles({curved:null},c.getVerticesAndEdges(!1,!0))}finally{d.endUpdate()}}b.clearDefaultStyle()})),p.setAttribute("title",mxResources.get("reset")),p.style.textOverflow="ellipsis",p.style.maxWidth="90px",q.appendChild(p));var y=mxUtils.bind(this,
+q=q.cloneNode(!1),n=n.cloneNode(!1),n.appendChild(p),n.appendChild(q),m.appendChild(n),p.appendChild(this.createOption(mxResources.get("curved"),function(){return k},function(a){(k=a)?c.currentEdgeStyle.curved="1":delete c.currentEdgeStyle.curved;c.updateCellStyles({curved:a?"1":null},c.getVerticesAndEdges(!1,!0))},null,function(a){a.style.width="auto"})));h.appendChild(g);a.appendChild(h);var r=["fillColor","strokeColor","fontColor","gradientColor"],u=mxUtils.bind(this,function(a,b){var e=c.getVerticesAndEdges();
+d.beginUpdate();try{for(var f=0;f<e.length;f++){var g=c.getCellStyle(e[f]);null!=g.labelBackgroundColor&&c.updateCellStyles({labelBackgroundColor:null!=b?b.background:null},[e[f]]);for(var k=d.isEdge(e[f]),h=d.getStyle(e[f]),l=k?c.currentEdgeStyle:c.currentVertexStyle,m=0;m<a.length;m++)if(null!=g[a[m]]&&g[a[m]]!=mxConstants.NONE||a[m]!=mxConstants.STYLE_FILLCOLOR&&a[m]!=mxConstants.STYLE_STROKECOLOR)h=mxUtils.setStyle(h,a[m],l[a[m]]);d.setStyle(e[f],h)}}finally{d.endUpdate()}}),t=mxUtils.bind(this,
+function(a,b,d){if(null!=a)for(var c=0;c<b.length;c++)if(null!=a[b[c]]&&a[b[c]]!=mxConstants.NONE||b[c]!=mxConstants.STYLE_FILLCOLOR&&b[c]!=mxConstants.STYLE_STROKECOLOR)a[b[c]]=d[b[c]]}),w=mxUtils.bind(this,function(a,b,d,e,f){if(null!=a){null!=d&&null!=b.labelBackgroundColor&&(e=null!=e?e.background:null,f=null!=f?f:c,null==e&&(e=f.background),null==e&&(e=f.defaultPageBackgroundColor),b.labelBackgroundColor=e);for(var g in a)if(null==d||null!=b[g]&&b[g]!=mxConstants.NONE||g!=mxConstants.STYLE_FILLCOLOR&&
+g!=mxConstants.STYLE_STROKECOLOR)b[g]=a[g]}});"1"!=urlParams.sketch&&(p=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(a){a=c.getVerticesAndEdges(!0,!0);if(0<a.length){d.beginUpdate();try{c.updateCellStyles({sketch:null,rounded:null},a),c.updateCellStyles({curved:null},c.getVerticesAndEdges(!1,!0))}finally{d.endUpdate()}}b.clearDefaultStyle()})),p.setAttribute("title",mxResources.get("reset")),p.style.textOverflow="ellipsis",p.style.maxWidth="90px",q.appendChild(p));var x=mxUtils.bind(this,
function(a,b,e,f,g){var k=document.createElement("div");k.style.position="absolute";k.style.display="inline-block";k.style.overflow="hidden";k.style.pointerEvents="none";k.style.width="100%";k.style.height="100%";g.appendChild(k);var h=new Graph(k,null,null,c.getStylesheet());h.resetViewOnRootChange=!1;h.foldingEnabled=!1;h.gridEnabled=!1;h.autoScroll=!1;h.setTooltips(!1);h.setConnectable(!1);h.setPanning(!1);h.setEnabled(!1);h.getCellStyle=function(g,k){k=null!=k?k:!0;var l=mxUtils.clone(c.getCellStyle.apply(this,
-arguments)),m=c.stylesheet.getDefaultVertexStyle(),n=b;d.isEdge(g)&&(m=c.stylesheet.getDefaultEdgeStyle(),n=e);r(l,t,m);x(a,l,g,f,h);x(n,l,g,f,h);k&&(l=c.postProcessCellStyle(g,l));return l};h.model.beginUpdate();try{var l=h.insertVertex(h.getDefaultParent(),null,"Shape",14,8,70,40,"strokeWidth=2;"),m=h.insertEdge(h.getDefaultParent(),null,"Connector",l,l,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");m.geometry.points=[new mxPoint(32,70)];m.geometry.offset=
-new mxPoint(0,8)}finally{h.model.endUpdate()}}),w=document.createElement("div");w.style.position="relative";a.appendChild(w);null==this.format.cachedStyleEntries&&(this.format.cachedStyleEntries=[]);var F=mxUtils.bind(this,function(a,g,h,m,n){var p=this.format.cachedStyleEntries[n];null==p&&(p=document.createElement("div"),p.style.display="inline-block",p.style.position="relative",p.style.width="96px",p.style.height="90px",p.style.cursor="pointer",p.style.border="1px solid gray",p.style.borderRadius=
-"8px",p.style.margin="2px",p.style.overflow="hidden",null!=m&&null!=m.background&&(p.style.backgroundColor=m.background),y(a,g,h,m,p),mxEvent.addGestureListeners(p,mxUtils.bind(this,function(a){p.style.opacity=.5}),null,mxUtils.bind(this,function(n){p.style.opacity=1;c.currentVertexStyle=mxUtils.clone(c.defaultVertexStyle);c.currentEdgeStyle=mxUtils.clone(c.defaultEdgeStyle);x(a,c.currentVertexStyle);x(a,c.currentEdgeStyle);x(g,c.currentVertexStyle);x(h,c.currentEdgeStyle);"1"==urlParams.sketch&&
-(e=Editor.sketchMode);e?(c.currentEdgeStyle.sketch="1",c.currentVertexStyle.sketch="1"):(c.currentEdgeStyle.sketch="0",c.currentVertexStyle.sketch="0");c.currentVertexStyle.rounded=l?"1":"0";c.currentEdgeStyle.rounded="1";c.currentEdgeStyle.curved=k?"1":"0";d.beginUpdate();try{var q=t.slice(),r;for(r in a)q.push(r);u(q,m);var w=new ChangePageSetup(b,null!=m?m.background:null);w.ignoreImage=!0;d.execute(w);d.execute(new ChangeGridColor(b,null!=m&&null!=m.gridColor?m.gridColor:f))}finally{d.endUpdate()}})),
-mxEvent.addListener(p,"mouseenter",mxUtils.bind(this,function(b){var e=c.getCellStyle;b=c.background;var k=c.view.gridColor;c.background=null!=m?m.background:null;c.view.gridColor=null!=m&&null!=m.gridColor?m.gridColor:f;c.getCellStyle=function(b,f){f=null!=f?f:!0;var k=mxUtils.clone(e.apply(this,arguments)),l=c.stylesheet.getDefaultVertexStyle(),n=g;d.isEdge(b)&&(l=c.stylesheet.getDefaultEdgeStyle(),n=h);r(k,t,l);x(a,k,b,m);x(n,k,b,m);f&&(k=this.postProcessCellStyle(b,k));return k};c.refresh();c.getCellStyle=
-e;c.background=b;c.view.gridColor=k})),mxEvent.addListener(p,"mouseleave",mxUtils.bind(this,function(a){c.refresh()})),mxClient.IS_IE||mxClient.IS_IE11||(this.format.cachedStyleEntries[n]=p));w.appendChild(p)}),H=Math.ceil(Editor.styles.length/10);this.format.currentStylePage=null!=this.format.currentStylePage?this.format.currentStylePage:0;var C=[],D=mxUtils.bind(this,function(){0<C.length&&(C[this.format.currentStylePage].style.background="#84d7ff");for(var a=10*this.format.currentStylePage;a<Math.min(10*
-(this.format.currentStylePage+1),Editor.styles.length);a++){var b=Editor.styles[a];F(b.commonStyle,b.vertexStyle,b.edgeStyle,b.graph,a)}}),z=mxUtils.bind(this,function(a){0<=a&&a<H&&(C[this.format.currentStylePage].style.background="transparent",w.innerHTML="",this.format.currentStylePage=a,D())});if(1<H){h=document.createElement("div");h.style.whiteSpace="nowrap";h.style.position="relative";h.style.textAlign="center";h.style.paddingTop="4px";h.style.width="210px";a.style.paddingBottom="8px";for(q=
-0;q<H;q++){var G=document.createElement("div");G.style.display="inline-block";G.style.width="6px";G.style.height="6px";G.style.marginLeft="4px";G.style.marginRight="3px";G.style.borderRadius="3px";G.style.cursor="pointer";G.style.background="transparent";G.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(a,b){mxEvent.addListener(G,"click",mxUtils.bind(this,function(){z(a)}))})(q,G);h.appendChild(G);C.push(G)}a.appendChild(h);D();15>H&&(g=function(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity=
+arguments)),m=c.stylesheet.getDefaultVertexStyle(),n=b;d.isEdge(g)&&(m=c.stylesheet.getDefaultEdgeStyle(),n=e);t(l,r,m);w(a,l,g,f,h);w(n,l,g,f,h);k&&(l=c.postProcessCellStyle(g,l));return l};h.model.beginUpdate();try{var l=h.insertVertex(h.getDefaultParent(),null,"Shape",14,8,70,40,"strokeWidth=2;"),m=h.insertEdge(h.getDefaultParent(),null,"Connector",l,l,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");m.geometry.points=[new mxPoint(32,70)];m.geometry.offset=
+new mxPoint(0,8)}finally{h.model.endUpdate()}}),y=document.createElement("div");y.style.position="relative";a.appendChild(y);null==this.format.cachedStyleEntries&&(this.format.cachedStyleEntries=[]);var F=mxUtils.bind(this,function(a,g,h,m,n){var p=this.format.cachedStyleEntries[n];null==p&&(p=document.createElement("div"),p.style.display="inline-block",p.style.position="relative",p.style.width="96px",p.style.height="90px",p.style.cursor="pointer",p.style.border="1px solid gray",p.style.borderRadius=
+"8px",p.style.margin="2px",p.style.overflow="hidden",null!=m&&null!=m.background&&(p.style.backgroundColor=m.background),x(a,g,h,m,p),mxEvent.addGestureListeners(p,mxUtils.bind(this,function(a){p.style.opacity=.5}),null,mxUtils.bind(this,function(n){p.style.opacity=1;c.currentVertexStyle=mxUtils.clone(c.defaultVertexStyle);c.currentEdgeStyle=mxUtils.clone(c.defaultEdgeStyle);w(a,c.currentVertexStyle);w(a,c.currentEdgeStyle);w(g,c.currentVertexStyle);w(h,c.currentEdgeStyle);"1"==urlParams.sketch&&
+(e=Editor.sketchMode);e?(c.currentEdgeStyle.sketch="1",c.currentVertexStyle.sketch="1"):(c.currentEdgeStyle.sketch="0",c.currentVertexStyle.sketch="0");c.currentVertexStyle.rounded=l?"1":"0";c.currentEdgeStyle.rounded="1";c.currentEdgeStyle.curved=k?"1":"0";d.beginUpdate();try{var q=r.slice(),t;for(t in a)q.push(t);u(q,m);var y=new ChangePageSetup(b,null!=m?m.background:null);y.ignoreImage=!0;d.execute(y);d.execute(new ChangeGridColor(b,null!=m&&null!=m.gridColor?m.gridColor:f))}finally{d.endUpdate()}})),
+mxEvent.addListener(p,"mouseenter",mxUtils.bind(this,function(b){var e=c.getCellStyle;b=c.background;var k=c.view.gridColor;c.background=null!=m?m.background:null;c.view.gridColor=null!=m&&null!=m.gridColor?m.gridColor:f;c.getCellStyle=function(b,f){f=null!=f?f:!0;var k=mxUtils.clone(e.apply(this,arguments)),l=c.stylesheet.getDefaultVertexStyle(),n=g;d.isEdge(b)&&(l=c.stylesheet.getDefaultEdgeStyle(),n=h);t(k,r,l);w(a,k,b,m);w(n,k,b,m);f&&(k=this.postProcessCellStyle(b,k));return k};c.refresh();c.getCellStyle=
+e;c.background=b;c.view.gridColor=k})),mxEvent.addListener(p,"mouseleave",mxUtils.bind(this,function(a){c.refresh()})),mxClient.IS_IE||mxClient.IS_IE11||(this.format.cachedStyleEntries[n]=p));y.appendChild(p)}),H=Math.ceil(Editor.styles.length/10);this.format.currentStylePage=null!=this.format.currentStylePage?this.format.currentStylePage:0;var C=[],E=mxUtils.bind(this,function(){0<C.length&&(C[this.format.currentStylePage].style.background="#84d7ff");for(var a=10*this.format.currentStylePage;a<Math.min(10*
+(this.format.currentStylePage+1),Editor.styles.length);a++){var b=Editor.styles[a];F(b.commonStyle,b.vertexStyle,b.edgeStyle,b.graph,a)}}),z=mxUtils.bind(this,function(a){0<=a&&a<H&&(C[this.format.currentStylePage].style.background="transparent",y.innerHTML="",this.format.currentStylePage=a,E())});if(1<H){h=document.createElement("div");h.style.whiteSpace="nowrap";h.style.position="relative";h.style.textAlign="center";h.style.paddingTop="4px";h.style.width="210px";a.style.paddingBottom="8px";for(q=
+0;q<H;q++){var G=document.createElement("div");G.style.display="inline-block";G.style.width="6px";G.style.height="6px";G.style.marginLeft="4px";G.style.marginRight="3px";G.style.borderRadius="3px";G.style.cursor="pointer";G.style.background="transparent";G.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(a,b){mxEvent.addListener(G,"click",mxUtils.bind(this,function(){z(a)}))})(q,G);h.appendChild(G);C.push(G)}a.appendChild(h);E();15>H&&(g=function(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity=
"1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})},p=document.createElement("div"),p.style.position="absolute",p.style.left="0px",p.style.top="0px",p.style.bottom="0px",p.style.width="24px",p.style.height="24px",p.style.margin="0px",p.style.cursor="pointer",p.style.opacity="0.5",p.style.backgroundRepeat="no-repeat",p.style.backgroundPosition="center center",p.style.backgroundSize="24px 24px",p.style.backgroundImage="url("+Editor.previousImage+")",Editor.isDarkMode()&&(p.style.filter=
-"invert(100%)"),q=p.cloneNode(!1),q.style.backgroundImage="url("+Editor.nextImage+")",q.style.left="",q.style.right="2px",h.appendChild(p),h.appendChild(q),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){z(mxUtils.mod(this.format.currentStylePage-1,H))})),mxEvent.addListener(q,"click",mxUtils.bind(this,function(){z(mxUtils.mod(this.format.currentStylePage+1,H))})),g(p),g(q))}else D();return a};
+"invert(100%)"),q=p.cloneNode(!1),q.style.backgroundImage="url("+Editor.nextImage+")",q.style.left="",q.style.right="2px",h.appendChild(p),h.appendChild(q),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){z(mxUtils.mod(this.format.currentStylePage-1,H))})),mxEvent.addListener(q,"click",mxUtils.bind(this,function(){z(mxUtils.mod(this.format.currentStylePage+1,H))})),g(p),g(q))}else E();return a};
DiagramStylePanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.darkModeChangedListener&&(this.editorUi.removeListener(this.darkModeChangedListener),this.darkModeChangedListener=null)};DiagramFormatPanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};mxUtils.extend(DiagramFormatPanel,BaseFormatPanel);DiagramFormatPanel.showPageView=!0;DiagramFormatPanel.prototype.showBackgroundImageOption=!0;
DiagramFormatPanel.prototype.init=function(){var a=this.editorUi.editor.graph;this.container.appendChild(this.addView(this.createPanel()));a.isEnabled()&&(this.container.appendChild(this.addOptions(this.createPanel())),this.container.appendChild(this.addPaperSize(this.createPanel())),this.container.appendChild(this.addStyleOps(this.createPanel())))};
DiagramFormatPanel.prototype.addView=function(a){var b=this.editorUi,c=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("view")));this.addGridOption(a);DiagramFormatPanel.showPageView&&a.appendChild(this.createOption(mxResources.get("pageView"),function(){return c.pageVisible},function(a){b.actions.get("pageView").funct()},{install:function(a){this.listener=function(){a(c.pageVisible)};b.addListener("pageViewChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}}));
-if(c.isEnabled()){var d=this.createColorOption(mxResources.get("background"),function(){return c.background},function(a){a=new ChangePageSetup(b,a);a.ignoreImage=!0;c.model.execute(a)},"#ffffff",{install:function(a){this.listener=function(){a(c.background)};b.addListener("backgroundColorChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});if(this.showBackgroundImageOption){var f=d.getElementsByTagName("span")[0];f.style.display="inline-block";f.style.textOverflow="ellipsis";
-f.style.overflow="hidden";f.style.maxWidth="68px";mxClient.IS_FF&&(f.style.marginTop="1px");f=mxUtils.button(mxResources.get("change"),function(a){b.showBackgroundImageDialog(null,b.editor.graph.backgroundImage);mxEvent.consume(a)});f.className="geColorBtn";f.style.position="absolute";f.style.marginTop="-3px";f.style.height="22px";f.style.left="118px";f.style.width="56px";d.appendChild(f)}a.appendChild(d)}return a};
+if(c.isEnabled()){var d=this.createColorOption(mxResources.get("background"),function(){return c.background},function(a){var d=new ChangePageSetup(b,a);d.ignoreImage=null!=a&&a!=mxConstants.NONE;c.model.execute(d)},"#ffffff",{install:function(a){this.listener=function(){a(c.background)};b.addListener("backgroundColorChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});if(this.showBackgroundImageOption){var f=d.getElementsByTagName("span")[0];f.style.display="inline-block";
+f.style.textOverflow="ellipsis";f.style.overflow="hidden";f.style.maxWidth="68px";mxClient.IS_FF&&(f.style.marginTop="1px");f=mxUtils.button(mxResources.get("change"),function(a){b.showBackgroundImageDialog(null,b.editor.graph.backgroundImage);mxEvent.consume(a)});f.className="geColorBtn";f.style.position="absolute";f.style.marginTop="-3px";f.style.height="22px";f.style.left="118px";f.style.width="56px";d.appendChild(f)}a.appendChild(d)}return a};
DiagramFormatPanel.prototype.addOptions=function(a){var b=this.editorUi,c=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("options")));c.isEnabled()&&(a.appendChild(this.createOption(mxResources.get("connectionArrows"),function(){return c.connectionArrowsEnabled},function(a){b.actions.get("connectionArrows").funct()},{install:function(a){this.listener=function(){a(c.connectionArrowsEnabled)};b.addListener("connectionArrowsChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})),
a.appendChild(this.createOption(mxResources.get("connectionPoints"),function(){return c.connectionHandler.isEnabled()},function(a){b.actions.get("connectionPoints").funct()},{install:function(a){this.listener=function(){a(c.connectionHandler.isEnabled())};b.addListener("connectionPointsChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})),a.appendChild(this.createOption(mxResources.get("guides"),function(){return c.graphHandler.guidesEnabled},function(a){b.actions.get("guides").funct()},
{install:function(a){this.listener=function(){a(c.graphHandler.guidesEnabled)};b.addListener("guidesEnabledChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})));return a};
@@ -3262,12 +3266,12 @@ DiagramFormatPanel.prototype.addDocumentProperties=function(a){a.appendChild(thi
DiagramFormatPanel.prototype.addPaperSize=function(a){var b=this.editorUi,c=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var d=PageSetupDialog.addPageFormatPanel(a,"formatpanel",c.pageFormat,function(a){if(null==c.pageFormat||c.pageFormat.width!=a.width||c.pageFormat.height!=a.height)a=new ChangePageSetup(b,null,null,a),a.ignoreColor=!0,a.ignoreImage=!0,c.model.execute(a)});this.addKeyHandler(d.widthInput,function(){d.set(c.pageFormat)});this.addKeyHandler(d.heightInput,
function(){d.set(c.pageFormat)});var f=function(){d.set(c.pageFormat)};b.addListener("pageFormatChanged",f);this.listeners.push({destroy:function(){b.removeListener(f)}});c.getModel().addListener(mxEvent.CHANGE,f);this.listeners.push({destroy:function(){c.getModel().removeListener(f)}});return a};DiagramFormatPanel.prototype.addStyleOps=function(a){this.addActions(a,["editData"]);this.addActions(a,["clearDefaultStyle"]);return a};
DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(a,b,d){mxShape.call(this);this.line=a;this.stroke=b;this.strokewidth=null!=d?d:1;this.updateBoundsFromLine()}function b(){mxSwimlane.call(this)}function c(){mxSwimlane.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function e(){mxActor.call(this)}function l(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function h(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function m(){mxShape.call(this)}function n(){mxShape.call(this)}
-function p(a,b,d,c){mxShape.call(this);this.bounds=a;this.fill=b;this.stroke=d;this.strokewidth=null!=c?c:1}function q(){mxActor.call(this)}function t(){mxCylinder.call(this)}function u(){mxCylinder.call(this)}function r(){mxActor.call(this)}function x(){mxActor.call(this)}function y(){mxActor.call(this)}function w(){mxActor.call(this)}function F(){mxActor.call(this)}function H(){mxActor.call(this)}function C(){mxActor.call(this)}function D(a,b){this.canvas=a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
-this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,D.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,D.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,D.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,D.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,D.prototype.curveTo);
-this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,D.prototype.arcTo)}function z(){mxRectangleShape.call(this)}function G(){mxRectangleShape.call(this)}function J(){mxActor.call(this)}function L(){mxActor.call(this)}function O(){mxActor.call(this)}function K(){mxRectangleShape.call(this)}function P(){mxRectangleShape.call(this)}function Y(){mxCylinder.call(this)}function ba(){mxShape.call(this)}function M(){mxShape.call(this)}function R(){mxEllipse.call(this)}function V(){mxShape.call(this)}
+function p(a,b,d,c){mxShape.call(this);this.bounds=a;this.fill=b;this.stroke=d;this.strokewidth=null!=c?c:1}function q(){mxActor.call(this)}function r(){mxCylinder.call(this)}function u(){mxCylinder.call(this)}function t(){mxActor.call(this)}function w(){mxActor.call(this)}function x(){mxActor.call(this)}function y(){mxActor.call(this)}function F(){mxActor.call(this)}function H(){mxActor.call(this)}function C(){mxActor.call(this)}function E(a,b){this.canvas=a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
+this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,E.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,E.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,E.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,E.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,E.prototype.curveTo);
+this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,E.prototype.arcTo)}function z(){mxRectangleShape.call(this)}function G(){mxRectangleShape.call(this)}function J(){mxActor.call(this)}function L(){mxActor.call(this)}function M(){mxActor.call(this)}function K(){mxRectangleShape.call(this)}function P(){mxRectangleShape.call(this)}function ba(){mxCylinder.call(this)}function Y(){mxShape.call(this)}function N(){mxShape.call(this)}function R(){mxEllipse.call(this)}function V(){mxShape.call(this)}
function Z(){mxShape.call(this)}function aa(){mxRectangleShape.call(this)}function W(){mxShape.call(this)}function ma(){mxShape.call(this)}function oa(){mxShape.call(this)}function ta(){mxShape.call(this)}function qa(){mxShape.call(this)}function fa(){mxCylinder.call(this)}function pa(){mxCylinder.call(this)}function va(){mxRectangleShape.call(this)}function na(){mxDoubleEllipse.call(this)}function ra(){mxDoubleEllipse.call(this)}function la(){mxArrowConnector.call(this);this.spacing=0}function ha(){mxArrowConnector.call(this);
this.spacing=0}function ia(){mxActor.call(this)}function da(){mxRectangleShape.call(this)}function ja(){mxActor.call(this)}function ea(){mxActor.call(this)}function ka(){mxActor.call(this)}function U(){mxActor.call(this)}function Q(){mxActor.call(this)}function T(){mxActor.call(this)}function ca(){mxActor.call(this)}function X(){mxActor.call(this)}function ga(){mxActor.call(this)}function sa(){mxActor.call(this)}function Ba(){mxEllipse.call(this)}function Ea(){mxEllipse.call(this)}function Fa(){mxEllipse.call(this)}
-function Ma(){mxRhombus.call(this)}function Na(){mxEllipse.call(this)}function Oa(){mxEllipse.call(this)}function ya(){mxEllipse.call(this)}function Ga(){mxEllipse.call(this)}function Ha(){mxActor.call(this)}function za(){mxActor.call(this)}function Aa(){mxActor.call(this)}function N(a,b,d,c){mxShape.call(this);this.bounds=a;this.fill=b;this.stroke=d;this.strokewidth=null!=c?c:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function wa(){mxConnector.call(this)}
+function Ma(){mxRhombus.call(this)}function Na(){mxEllipse.call(this)}function Oa(){mxEllipse.call(this)}function ya(){mxEllipse.call(this)}function Ga(){mxEllipse.call(this)}function Ha(){mxActor.call(this)}function za(){mxActor.call(this)}function Aa(){mxActor.call(this)}function O(a,b,d,c){mxShape.call(this);this.bounds=a;this.fill=b;this.stroke=d;this.strokewidth=null!=c?c:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function wa(){mxConnector.call(this)}
function Ra(a,b,d,c,e,f,g,k,h,l){g+=h;var v=c.clone();c.x-=e*(2*g+h);c.y-=f*(2*g+h);e*=g+h;f*=g+h;return function(){a.ellipse(v.x-e-g,v.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var a=null;if(null!=this.line)for(var b=0;b<this.line.length;b++){var d=this.line[b];null!=d&&(d=new mxRectangle(d.x,d.y,this.strokewidth,this.strokewidth),null==a?a=d:a.add(d))}this.bounds=null!=a?a:new mxRectangle};a.prototype.paintVertexShape=function(a,
b,d,c,e){this.paintTableLine(a,this.line,0,0)};a.prototype.paintTableLine=function(a,b,d,c){if(null!=b){var e=null;a.begin();for(var v=0;v<b.length;v++){var f=b[v];null!=f&&(null==e?a.moveTo(f.x+d,f.y+c):null!=e&&a.lineTo(f.x+d,f.y+c));e=f}a.end();a.stroke()}};a.prototype.intersectsRectangle=function(a){var b=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var d=null,c=0;c<this.line.length&&!b;c++){var e=this.line[c];null!=e&&null!=d&&(b=mxUtils.rectangleIntersectsSegment(a,
d,e));d=e}return b};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(b,mxSwimlane);b.prototype.getLabelBounds=function(a){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};b.prototype.paintVertexShape=function(a,b,d,c,e){var v=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,f=this.isHorizontal(),g=this.getTitleSize();0==g||this.outline?ya.prototype.paintVertexShape.apply(this,
@@ -3285,31 +3289,31 @@ a.end(),a.stroke())};mxCellRenderer.registerShape("note",h);mxUtils.extend(g,h);
"isoAngle",this.isoAngle))))*Math.PI/200,f=Math.min(c*Math.tan(f),.5*e);a.translate(b,d);a.begin();a.moveTo(.5*c,0);a.lineTo(c,f);a.lineTo(c,e-f);a.lineTo(.5*c,e);a.lineTo(0,e-f);a.lineTo(0,f);a.close();a.fillAndStroke();a.setShadow(!1);a.begin();a.moveTo(0,f);a.lineTo(.5*c,2*f);a.lineTo(c,f);a.moveTo(.5*c,2*f);a.lineTo(.5*c,e);a.stroke()};mxCellRenderer.registerShape("isoCube2",m);mxUtils.extend(n,mxShape);n.prototype.size=15;n.prototype.paintVertexShape=function(a,b,d,c,e){var f=Math.max(0,Math.min(.5*
e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.translate(b,d);0==f?(a.rect(0,0,c,e),a.fillAndStroke()):(a.begin(),a.moveTo(0,f),a.arcTo(.5*c,f,0,0,1,.5*c,0),a.arcTo(.5*c,f,0,0,1,c,f),a.lineTo(c,e-f),a.arcTo(.5*c,f,0,0,1,.5*c,e),a.arcTo(.5*c,f,0,0,1,0,e-f),a.close(),a.fillAndStroke(),a.setShadow(!1),a.begin(),a.moveTo(c,f),a.arcTo(.5*c,f,0,0,1,.5*c,2*f),a.arcTo(.5*c,f,0,0,1,0,f),a.stroke())};mxCellRenderer.registerShape("cylinder2",n);mxUtils.extend(p,mxCylinder);p.prototype.size=
15;p.prototype.paintVertexShape=function(a,b,d,c,e){var f=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),v=mxUtils.getValue(this.style,"lid",!0);a.translate(b,d);0==f?(a.rect(0,0,c,e),a.fillAndStroke()):(a.begin(),v?(a.moveTo(0,f),a.arcTo(.5*c,f,0,0,1,.5*c,0),a.arcTo(.5*c,f,0,0,1,c,f)):(a.moveTo(0,0),a.arcTo(.5*c,f,0,0,0,.5*c,f),a.arcTo(.5*c,f,0,0,0,c,0)),a.lineTo(c,e-f),a.arcTo(.5*c,f,0,0,1,.5*c,e),a.arcTo(.5*c,f,0,0,1,0,e-f),a.close(),a.fillAndStroke(),a.setShadow(!1),
-v&&(a.begin(),a.moveTo(c,f),a.arcTo(.5*c,f,0,0,1,.5*c,2*f),a.arcTo(.5*c,f,0,0,1,0,f),a.stroke()))};mxCellRenderer.registerShape("cylinder3",p);mxUtils.extend(q,mxActor);q.prototype.redrawPath=function(a,b,d,c,e){a.moveTo(0,0);a.quadTo(c/2,.5*e,c,0);a.quadTo(.5*c,e/2,c,e);a.quadTo(c/2,.5*e,0,e);a.quadTo(.5*c,e/2,0,0);a.end()};mxCellRenderer.registerShape("switch",q);mxUtils.extend(t,mxCylinder);t.prototype.tabWidth=60;t.prototype.tabHeight=20;t.prototype.tabPosition="right";t.prototype.arcSize=.1;
-t.prototype.paintVertexShape=function(a,b,d,c,e){a.translate(b,d);b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));d=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var f=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),v=mxUtils.getValue(this.style,"rounded",!1),g=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));g||(k*=Math.min(c,e));
+v&&(a.begin(),a.moveTo(c,f),a.arcTo(.5*c,f,0,0,1,.5*c,2*f),a.arcTo(.5*c,f,0,0,1,0,f),a.stroke()))};mxCellRenderer.registerShape("cylinder3",p);mxUtils.extend(q,mxActor);q.prototype.redrawPath=function(a,b,d,c,e){a.moveTo(0,0);a.quadTo(c/2,.5*e,c,0);a.quadTo(.5*c,e/2,c,e);a.quadTo(c/2,.5*e,0,e);a.quadTo(.5*c,e/2,0,0);a.end()};mxCellRenderer.registerShape("switch",q);mxUtils.extend(r,mxCylinder);r.prototype.tabWidth=60;r.prototype.tabHeight=20;r.prototype.tabPosition="right";r.prototype.arcSize=.1;
+r.prototype.paintVertexShape=function(a,b,d,c,e){a.translate(b,d);b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));d=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var f=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),v=mxUtils.getValue(this.style,"rounded",!1),g=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));g||(k*=Math.min(c,e));
k=Math.min(k,.5*c,.5*(e-d));b=Math.max(b,k);b=Math.min(c-k,b);v||(k=0);a.begin();"left"==f?(a.moveTo(Math.max(k,0),d),a.lineTo(Math.max(k,0),0),a.lineTo(b,0),a.lineTo(b,d)):(a.moveTo(c-b,d),a.lineTo(c-b,0),a.lineTo(c-Math.max(k,0),0),a.lineTo(c-Math.max(k,0),d));v?(a.moveTo(0,k+d),a.arcTo(k,k,0,0,1,k,d),a.lineTo(c-k,d),a.arcTo(k,k,0,0,1,c,k+d),a.lineTo(c,e-k),a.arcTo(k,k,0,0,1,c-k,e),a.lineTo(k,e),a.arcTo(k,k,0,0,1,0,e-k)):(a.moveTo(0,d),a.lineTo(c,d),a.lineTo(c,e),a.lineTo(0,e));a.close();a.fillAndStroke();
-a.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(a.begin(),a.moveTo(c-30,d+20),a.lineTo(c-20,d+10),a.lineTo(c-10,d+20),a.close(),a.stroke())};mxCellRenderer.registerShape("folder",t);t.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var d=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,b=mxUtils.getValue(this.style,
+a.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(a.begin(),a.moveTo(c-30,d+20),a.lineTo(c-20,d+10),a.lineTo(c-10,d+20),a.close(),a.stroke())};mxCellRenderer.registerShape("folder",r);r.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var d=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,b=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale,c=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),f=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(f*=Math.min(a.width,a.height));f=Math.min(f,.5*a.width,.5*(a.height-b));c||(f=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(f,0,Math.min(a.width,a.width-d),Math.min(a.height,a.height-b)):new mxRectangle(Math.min(a.width,a.width-d),0,f,Math.min(a.height,a.height-
b))}return new mxRectangle(0,Math.min(a.height,b),0,0)}return null};mxUtils.extend(u,mxCylinder);u.prototype.arcSize=.1;u.prototype.paintVertexShape=function(a,b,d,c,e){a.translate(b,d);var f=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1);b=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));d=mxUtils.getValue(this.style,"umlStateConnection",null);v||(b*=Math.min(c,e));b=Math.min(b,.5*c,.5*e);f||(b=0);f=0;null!=d&&(f=10);a.begin();a.moveTo(f,
b);a.arcTo(b,b,0,0,1,f+b,0);a.lineTo(c-b,0);a.arcTo(b,b,0,0,1,c,b);a.lineTo(c,e-b);a.arcTo(b,b,0,0,1,c-b,e);a.lineTo(f+b,e);a.arcTo(b,b,0,0,1,f,e-b);a.close();a.fillAndStroke();a.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(a.roundrect(c-40,e-20,10,10,3,3),a.stroke(),a.roundrect(c-20,e-20,10,10,3,3),a.stroke(),a.begin(),a.moveTo(c-30,e-15),a.lineTo(c-20,e-15),a.stroke());"connPointRefEntry"==d?(a.ellipse(0,.5*e-10,20,20),a.fillAndStroke()):"connPointRefExit"==
-d&&(a.ellipse(0,.5*e-10,20,20),a.fillAndStroke(),a.begin(),a.moveTo(5,.5*e-5),a.lineTo(15,.5*e+5),a.moveTo(15,.5*e-5),a.lineTo(5,.5*e+5),a.stroke())};u.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",u);mxUtils.extend(r,mxActor);r.prototype.size=30;r.prototype.isRoundable=function(){return!0};r.prototype.redrawPath=
-function(a,b,d,c,e){b=Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,b)],this.isRounded,d,!0);a.end()};mxCellRenderer.registerShape("card",r);mxUtils.extend(x,mxActor);x.prototype.size=.4;x.prototype.redrawPath=function(a,b,d,c,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));a.moveTo(0,b/2);a.quadTo(c/4,1.4*b,c/2,b/2);a.quadTo(3*c/4,b*(1-1.4),c,b/2);a.lineTo(c,e-b/2);a.quadTo(3*c/4,e-1.4*b,c/2,e-b/2);a.quadTo(c/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};x.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"size",this.size),d=a.width,c=a.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return b*=
-c,new mxRectangle(a.x,a.y+b,d,c-2*b);b*=d;return new mxRectangle(a.x+b,a.y,d-2*b,c)}return a};mxCellRenderer.registerShape("tape",x);mxUtils.extend(y,mxActor);y.prototype.size=.3;y.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};y.prototype.redrawPath=function(a,b,d,c,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,
-0);a.lineTo(c,0);a.lineTo(c,e-b/2);a.quadTo(3*c/4,e-1.4*b,c/2,e-b/2);a.quadTo(c/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};mxCellRenderer.registerShape("document",y);var Za=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(a,b,d,c){var e=mxUtils.getValue(this.style,"size");return null!=e?c*Math.max(0,Math.min(1,e)):Za.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=2*mxUtils.getValue(this.style,
-"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*b),0,0)}return null};p.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(b/=2);return new mxRectangle(0,Math.min(a.height*this.scale,2*b*this.scale),0,Math.max(0,.3*b*this.scale))}return null};t.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,
+d&&(a.ellipse(0,.5*e-10,20,20),a.fillAndStroke(),a.begin(),a.moveTo(5,.5*e-5),a.lineTo(15,.5*e+5),a.moveTo(15,.5*e-5),a.lineTo(5,.5*e+5),a.stroke())};u.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",u);mxUtils.extend(t,mxActor);t.prototype.size=30;t.prototype.isRoundable=function(){return!0};t.prototype.redrawPath=
+function(a,b,d,c,e){b=Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,b)],this.isRounded,d,!0);a.end()};mxCellRenderer.registerShape("card",t);mxUtils.extend(w,mxActor);w.prototype.size=.4;w.prototype.redrawPath=function(a,b,d,c,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));a.moveTo(0,b/2);a.quadTo(c/4,1.4*b,c/2,b/2);a.quadTo(3*c/4,b*(1-1.4),c,b/2);a.lineTo(c,e-b/2);a.quadTo(3*c/4,e-1.4*b,c/2,e-b/2);a.quadTo(c/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};w.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"size",this.size),d=a.width,c=a.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return b*=
+c,new mxRectangle(a.x,a.y+b,d,c-2*b);b*=d;return new mxRectangle(a.x+b,a.y,d-2*b,c)}return a};mxCellRenderer.registerShape("tape",w);mxUtils.extend(x,mxActor);x.prototype.size=.3;x.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};x.prototype.redrawPath=function(a,b,d,c,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,
+0);a.lineTo(c,0);a.lineTo(c,e-b/2);a.quadTo(3*c/4,e-1.4*b,c/2,e-b/2);a.quadTo(c/4,e-b*(1-1.4),0,e-b/2);a.lineTo(0,b/2);a.close();a.end()};mxCellRenderer.registerShape("document",x);var Za=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(a,b,d,c){var e=mxUtils.getValue(this.style,"size");return null!=e?c*Math.max(0,Math.min(1,e)):Za.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=2*mxUtils.getValue(this.style,
+"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*b),0,0)}return null};p.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(b/=2);return new mxRectangle(0,Math.min(a.height*this.scale,2*b*this.scale),0,Math.max(0,.3*b*this.scale))}return null};r.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var d=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,b=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,c=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),f=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(f*=Math.min(a.width,a.height));f=Math.min(f,.5*a.width,.5*(a.height-b));c||(f=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?
new mxRectangle(f,0,Math.min(a.width,a.width-d),Math.min(a.height,a.height-b)):new mxRectangle(Math.min(a.width,a.width-d),0,f,Math.min(a.height,a.height-b))}return new mxRectangle(0,Math.min(a.height,b),0,0)}return null};u.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};g.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",
-!1)){var b=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(a.height*this.scale,b*this.scale),0,Math.max(0,b*this.scale))}return null};mxUtils.extend(w,mxActor);w.prototype.size=.2;w.prototype.fixedSize=20;w.prototype.isRoundable=function(){return!0};w.prototype.redrawPath=function(a,b,d,c,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(c,0),new mxPoint(c-b,e)],this.isRounded,d,!0);a.end()};mxCellRenderer.registerShape("parallelogram",w);mxUtils.extend(F,mxActor);F.prototype.size=.2;F.prototype.fixedSize=20;F.prototype.isRoundable=function(){return!0};F.prototype.redrawPath=function(a,b,d,c,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
+!1)){var b=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(a.height*this.scale,b*this.scale),0,Math.max(0,b*this.scale))}return null};mxUtils.extend(y,mxActor);y.prototype.size=.2;y.prototype.fixedSize=20;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath=function(a,b,d,c,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(c,0),new mxPoint(c-b,e)],this.isRounded,d,!0);a.end()};mxCellRenderer.registerShape("parallelogram",y);mxUtils.extend(F,mxActor);F.prototype.size=.2;F.prototype.fixedSize=20;F.prototype.isRoundable=function(){return!0};F.prototype.redrawPath=function(a,b,d,c,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,e)],this.isRounded,d,!0)};mxCellRenderer.registerShape("trapezoid",F);mxUtils.extend(H,mxActor);H.prototype.size=.5;H.prototype.redrawPath=function(a,b,d,c,e){a.setFillColor(null);
b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(b,0),new mxPoint(b,e/2),new mxPoint(0,e/2),new mxPoint(b,e/2),new mxPoint(b,e),new mxPoint(c,e)],this.isRounded,d,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",H);mxUtils.extend(C,mxActor);C.prototype.redrawPath=function(a,b,d,c,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);
-b=c/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",C);D.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};D.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};
-D.prototype.quadTo=function(a,b,d,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=d;this.lastY=c};D.prototype.curveTo=function(a,b,d,c,e,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=f};D.prototype.arcTo=function(a,b,d,c,e,f,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=g};D.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var d=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},c=Math.abs(a-
+b=c/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",C);E.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};E.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};
+E.prototype.quadTo=function(a,b,d,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=d;this.lastY=c};E.prototype.curveTo=function(a,b,d,c,e,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=f};E.prototype.arcTo=function(a,b,d,c,e,f,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=g};E.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var d=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},c=Math.abs(a-
this.lastX),e=Math.abs(b-this.lastY),f=Math.sqrt(c*c+e*e);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var v=Math.round(f/10),g=this.defaultVariation;5>v&&(v=5,g/=3);for(var k=d(a-this.lastX)*c/v,d=d(b-this.lastY)*e/v,c=c/f,e=e/f,f=0;f<v;f++){var h=(Math.random()-.5)*g;this.originalLineTo.call(this.canvas,k*f+this.lastX-h*e,d*f+this.lastY-h*c)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
-b};D.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var $a=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(a){$a.apply(this,arguments);null==a.handJiggle&&(a.handJiggle=this.createHandJiggle(a))};var ab=mxShape.prototype.afterPaint;
-mxShape.prototype.afterPaint=function(a){ab.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxShape.prototype.createComicCanvas=function(a){return new D(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(a){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(a)};mxRhombus.prototype.defaultJiggle=2;var db=mxRectangleShape.prototype.isHtmlAllowed;
-mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&db.apply(this,arguments)};var eb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,d,c,e){if(null==a.handJiggle||a.handJiggle.constructor!=D)eb.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
+b};E.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var $a=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(a){$a.apply(this,arguments);null==a.handJiggle&&(a.handJiggle=this.createHandJiggle(a))};var ab=mxShape.prototype.afterPaint;
+mxShape.prototype.afterPaint=function(a){ab.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxShape.prototype.createComicCanvas=function(a){return new E(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(a){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(a)};mxRhombus.prototype.defaultJiggle=2;var db=mxRectangleShape.prototype.isHtmlAllowed;
+mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&db.apply(this,arguments)};var eb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,d,c,e){if(null==a.handJiggle||a.handJiggle.constructor!=E)eb.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?f=Math.min(c/2,Math.min(e/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.min(c*
f,e*f)),a.moveTo(b+f,d),a.lineTo(b+c-f,d),a.quadTo(b+c,d,b+c,d+f),a.lineTo(b+c,d+e-f),a.quadTo(b+c,d+e,b+c-f,d+e),a.lineTo(b+f,d+e),a.quadTo(b,d+e,b,d+e-f),a.lineTo(b,d+f),a.quadTo(b,d,b+f,d)):(a.moveTo(b,d),a.lineTo(b+c,d),a.lineTo(b+c,d+e),a.lineTo(b,d+e),a.lineTo(b,d)),a.close(),a.end(),a.fillAndStroke()}};mxUtils.extend(z,mxRectangleShape);z.prototype.size=.1;z.prototype.fixedSize=!1;z.prototype.isHtmlAllowed=function(){return!1};z.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,d=a.height;a=new mxRectangle(a.x,a.y,b,d);var c=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(b*e,d*e));a.x+=Math.round(c);a.width-=Math.round(2*c)}return a};
@@ -3318,15 +3322,15 @@ arguments)};mxCellRenderer.registerShape("process",z);mxCellRenderer.registerSha
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};J.prototype.isRoundable=function(){return!0};J.prototype.redrawPath=function(a,b,d,c,e){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;d=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),v=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),g=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e-d),new mxPoint(Math.min(c,f+g),e-d),new mxPoint(v,e),new mxPoint(Math.max(0,f),e-d),new mxPoint(0,e-d)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",J);mxUtils.extend(L,mxActor);L.prototype.size=.2;L.prototype.fixedSize=20;L.prototype.isRoundable=function(){return!0};L.prototype.redrawPath=function(a,b,d,c,e){b=
"0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-b,0),new mxPoint(c,e/2),new mxPoint(c-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,d,!0);a.end()};mxCellRenderer.registerShape("step",L);
-mxUtils.extend(O,mxHexagon);O.prototype.size=.25;O.prototype.fixedSize=20;O.prototype.isRoundable=function(){return!0};O.prototype.redrawPath=function(a,b,d,c,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,
-0),new mxPoint(c-b,0),new mxPoint(c,.5*e),new mxPoint(c-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,d,!0)};mxCellRenderer.registerShape("hexagon",O);mxUtils.extend(K,mxRectangleShape);K.prototype.isHtmlAllowed=function(){return!1};K.prototype.paintForeground=function(a,b,d,c,e){var f=Math.min(c/5,e/5)+1;a.begin();a.moveTo(b+c/2,d+f);a.lineTo(b+c/2,d+e-f);a.moveTo(b+f,d+e/2);a.lineTo(b+c-f,d+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
+mxUtils.extend(M,mxHexagon);M.prototype.size=.25;M.prototype.fixedSize=20;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(a,b,d,c,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,
+0),new mxPoint(c-b,0),new mxPoint(c,.5*e),new mxPoint(c-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,d,!0)};mxCellRenderer.registerShape("hexagon",M);mxUtils.extend(K,mxRectangleShape);K.prototype.isHtmlAllowed=function(){return!1};K.prototype.paintForeground=function(a,b,d,c,e){var f=Math.min(c/5,e/5)+1;a.begin();a.moveTo(b+c/2,d+f);a.lineTo(b+c/2,d+e-f);a.moveTo(b+f,d+e/2);a.lineTo(b+c-f,d+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
K);var Xa=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,d,c,e){Xa.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);b+=f;d+=f;c-=2*f;e-=2*f;0<c&&0<e&&(a.setShadow(!1),Xa.apply(this,[a,b,d,c,e]))}};mxUtils.extend(P,mxRectangleShape);P.prototype.isHtmlAllowed=function(){return!1};P.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};P.prototype.paintForeground=function(a,b,d,c,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=
-Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;d+=f;c-=2*f;e-=2*f;0<c&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,v;do{v=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=v){var g=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],h=this.style["symbol"+f+"Width"],l=this.style["symbol"+f+"Height"],m=this.style["symbol"+f+"Spacing"]||0,B=this.style["symbol"+f+"VSpacing"]||m,E=
-this.style["symbol"+f+"ArcSpacing"];null!=E&&(E*=this.getArcSize(c+this.strokewidth,e+this.strokewidth),m+=E,B+=E);var E=b,A=d,E=g==mxConstants.ALIGN_CENTER?E+(c-h)/2:g==mxConstants.ALIGN_RIGHT?E+(c-h-m):E+m,A=k==mxConstants.ALIGN_MIDDLE?A+(e-l)/2:k==mxConstants.ALIGN_BOTTOM?A+(e-l-B):A+B;a.save();g=new v;g.style=this.style;v.prototype.paintVertexShape.call(g,a,E,A,h,l);a.restore()}f++}while(null!=v)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
-P);mxUtils.extend(Y,mxCylinder);Y.prototype.redrawPath=function(a,b,d,c,e,f){f?(a.moveTo(0,0),a.lineTo(c/2,e/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message",Y);mxUtils.extend(ba,mxShape);ba.prototype.paintBackground=function(a,b,d,c,e){a.translate(b,d);a.ellipse(c/4,0,c/2,e/4);a.fillAndStroke();a.begin();a.moveTo(c/2,e/4);a.lineTo(c/2,2*e/3);a.moveTo(c/2,e/3);a.lineTo(0,e/3);a.moveTo(c/2,e/3);a.lineTo(c,e/3);a.moveTo(c/
-2,2*e/3);a.lineTo(0,e);a.moveTo(c/2,2*e/3);a.lineTo(c,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",ba);mxUtils.extend(M,mxShape);M.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};M.prototype.paintBackground=function(a,b,d,c,e){a.translate(b,d);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(c/6,e/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
-M);mxUtils.extend(R,mxEllipse);R.prototype.paintVertexShape=function(a,b,d,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+c/8,d+e);a.lineTo(b+7*c/8,d+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",R);mxUtils.extend(V,mxShape);V.prototype.paintVertexShape=function(a,b,d,c,e){a.translate(b,d);a.begin();a.moveTo(c,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(c,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",V);mxUtils.extend(Z,mxShape);
+Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;d+=f;c-=2*f;e-=2*f;0<c&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,v;do{v=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=v){var g=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],h=this.style["symbol"+f+"Width"],l=this.style["symbol"+f+"Height"],m=this.style["symbol"+f+"Spacing"]||0,B=this.style["symbol"+f+"VSpacing"]||m,D=
+this.style["symbol"+f+"ArcSpacing"];null!=D&&(D*=this.getArcSize(c+this.strokewidth,e+this.strokewidth),m+=D,B+=D);var D=b,A=d,D=g==mxConstants.ALIGN_CENTER?D+(c-h)/2:g==mxConstants.ALIGN_RIGHT?D+(c-h-m):D+m,A=k==mxConstants.ALIGN_MIDDLE?A+(e-l)/2:k==mxConstants.ALIGN_BOTTOM?A+(e-l-B):A+B;a.save();g=new v;g.style=this.style;v.prototype.paintVertexShape.call(g,a,D,A,h,l);a.restore()}f++}while(null!=v)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
+P);mxUtils.extend(ba,mxCylinder);ba.prototype.redrawPath=function(a,b,d,c,e,f){f?(a.moveTo(0,0),a.lineTo(c/2,e/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message",ba);mxUtils.extend(Y,mxShape);Y.prototype.paintBackground=function(a,b,d,c,e){a.translate(b,d);a.ellipse(c/4,0,c/2,e/4);a.fillAndStroke();a.begin();a.moveTo(c/2,e/4);a.lineTo(c/2,2*e/3);a.moveTo(c/2,e/3);a.lineTo(0,e/3);a.moveTo(c/2,e/3);a.lineTo(c,e/3);a.moveTo(c/
+2,2*e/3);a.lineTo(0,e);a.moveTo(c/2,2*e/3);a.lineTo(c,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",Y);mxUtils.extend(N,mxShape);N.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};N.prototype.paintBackground=function(a,b,d,c,e){a.translate(b,d);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(c/6,e/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+N);mxUtils.extend(R,mxEllipse);R.prototype.paintVertexShape=function(a,b,d,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+c/8,d+e);a.lineTo(b+7*c/8,d+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",R);mxUtils.extend(V,mxShape);V.prototype.paintVertexShape=function(a,b,d,c,e){a.translate(b,d);a.begin();a.moveTo(c,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(c,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",V);mxUtils.extend(Z,mxShape);
Z.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};Z.prototype.paintBackground=function(a,b,d,c,e){a.translate(b,d);a.begin();a.moveTo(3*c/8,e/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,e/8,c,7*e/8);a.fillAndStroke()};Z.prototype.paintForeground=function(a,b,d,c,e){a.begin();a.moveTo(3*c/8,e/8*1.1);a.lineTo(5*c/8,e/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",Z);mxUtils.extend(aa,mxRectangleShape);aa.prototype.size=
40;aa.prototype.isHtmlAllowed=function(){return!1};aa.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};aa.prototype.paintBackground=function(a,b,d,c,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),v=mxUtils.getValue(this.style,"participant");null==v||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,
a,b,d,c,f):(v=this.state.view.graph.cellRenderer.getShape(v),null!=v&&v!=aa&&(v=new v,v.apply(this.state),a.save(),v.paintVertexShape(a,b,d,c,f),a.restore()));f<e&&(a.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),a.begin(),a.moveTo(b+c/2,d+f),a.lineTo(b+c/2,d+e),a.end(),a.stroke())};aa.prototype.paintForeground=function(a,b,d,c,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,d,c,
@@ -3336,14 +3340,14 @@ a.moveTo(b,d);a.lineTo(b+v,d);a.lineTo(b+v,d+Math.max(0,g-1.5*f));a.lineTo(b+Mat
d,c){c=aa.prototype.size;null!=b&&(c=mxUtils.getValue(b.style,"size",c)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;d.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+c,d.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,d,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(a,b,d,c){c=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(c+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return d.x<a.getCenterX()&&(c=-1*(c+1)),new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y,d.y)));d.y<a.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(a.x+
a.width,Math.max(a.x,d.x)),a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,d,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",J.prototype.size))*b.view.scale))),b.style),b,d,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,
-b,d,c){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?w.prototype.fixedSize:w.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(v+k,g+e),new mxPoint(v+
+b,d,c){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?y.prototype.fixedSize:y.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(v+k,g+e),new mxPoint(v+
k,g+h),new mxPoint(v,g+h-e),new mxPoint(v,g)]):(e=e?Math.max(0,Math.min(.5*k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v+e,g),new mxPoint(v+k,g),new mxPoint(v+k-e,g+h),new mxPoint(v,g+h),new mxPoint(v+e,g)]);h=a.getCenterX();a=a.getCenterY();a=new mxPoint(h,a);c&&(d.x<v||d.x>v+k?a.y=d.y:a.x=d.x);return mxUtils.getPerimeterPoint(g,a,d)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,d,c){var e="0"!=mxUtils.getValue(b.style,
"fixedSize","0"),f=e?F.prototype.fixedSize:F.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(.5*k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v+e,g),new mxPoint(v+k-e,g),new mxPoint(v+k,g+h),new mxPoint(v,g+h),new mxPoint(v+e,g)]):b==mxConstants.DIRECTION_WEST?
(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(v+k,g),new mxPoint(v+k-e,g+h),new mxPoint(v+e,g+h),new mxPoint(v,g)]):b==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g+e),new mxPoint(v+k,g),new mxPoint(v+k,g+h),new mxPoint(v,g+h-e),new mxPoint(v,g+e)]):(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(v+k,g+e),new mxPoint(v+k,g+h-e),new mxPoint(v,g+h),new mxPoint(v,
g)]);h=a.getCenterX();a=a.getCenterY();a=new mxPoint(h,a);c&&(d.x<v||d.x>v+k?a.y=d.y:a.x=d.x);return mxUtils.getPerimeterPoint(g,a,d)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,d,c){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?L.prototype.fixedSize:L.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=
b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(v+k-e,g),new mxPoint(v+k,a),new mxPoint(v+k-e,g+h),new mxPoint(v,g+h),new mxPoint(v+e,a),new mxPoint(v,g)]):b==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v+e,g),new mxPoint(v+k,g),new mxPoint(v+k-e,a),new mxPoint(v+
k,g+h),new mxPoint(v+e,g+h),new mxPoint(v,a),new mxPoint(v+e,g)]):b==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g+e),new mxPoint(l,g),new mxPoint(v+k,g+e),new mxPoint(v+k,g+h),new mxPoint(l,g+h-e),new mxPoint(v,g+h),new mxPoint(v,g+e)]):(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(l,g+e),new mxPoint(v+k,g),new mxPoint(v+k,g+h-e),new mxPoint(l,g+h),new mxPoint(v,g+h-e),new mxPoint(v,g)]);l=new mxPoint(l,
-a);c&&(d.x<v||d.x>v+k?l.y=d.y:l.x=d.x);return mxUtils.getPerimeterPoint(g,l,d)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,d,c){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?O.prototype.fixedSize:O.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
+a);c&&(d.x<v||d.x>v+k?l.y=d.y:l.x=d.x);return mxUtils.getPerimeterPoint(g,l,d)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,d,c){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?M.prototype.fixedSize:M.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(l,g),new mxPoint(v+k,g+e),new mxPoint(v+k,g+h-e),new mxPoint(l,g+h),new mxPoint(v,g+h-e),new mxPoint(v,g+e),new mxPoint(l,g)]):(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v+e,g),new mxPoint(v+k-e,g),new mxPoint(v+k,a),new mxPoint(v+k-e,g+h),new mxPoint(v+e,g+h),new mxPoint(v,a),new mxPoint(v+e,g)]);l=new mxPoint(l,
a);c&&(d.x<v||d.x>v+k?l.y=d.y:l.x=d.x);return mxUtils.getPerimeterPoint(g,l,d)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(ma,mxShape);ma.prototype.size=10;ma.prototype.paintBackground=function(a,b,d,c,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,d);a.ellipse((c-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(c/2,f);a.lineTo(c/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",ma);mxUtils.extend(oa,
mxShape);oa.prototype.size=10;oa.prototype.inset=2;oa.prototype.paintBackground=function(a,b,d,c,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),v=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,d);a.begin();a.moveTo(c/2,f+v);a.lineTo(c/2,e);a.end();a.stroke();a.begin();a.moveTo((c-f)/2-v,f/2);a.quadTo((c-f)/2-v,f+v,c/2,f+v);a.quadTo((c+f)/2+v,f+v,(c+f)/2+v,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",oa);mxUtils.extend(ta,
@@ -3374,60 +3378,60 @@ c,e){this.outline||a.setStrokeColor(null);if(null!=this.style){var f=a.pointerEv
f,a.setStrokeColor(this.stroke),a.setLineCap("square"),a.begin(),a.moveTo(b,d),this.outline||v?a.lineTo(b+c,d):a.moveTo(b+c,d),this.outline||h?a.lineTo(b+c,d+e):a.moveTo(b+c,d+e),this.outline||l?a.lineTo(b,d+e):a.moveTo(b,d+e),(this.outline||k)&&a.lineTo(b,d),a.end(),a.stroke(),a.setLineCap("flat")):a.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",ya);mxUtils.extend(Ga,mxEllipse);Ga.prototype.paintVertexShape=function(a,b,d,c,e){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+c/2,d),a.lineTo(b+c/2,d+e)):(a.moveTo(b,d+e/2),a.lineTo(b+c,d+e/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",Ga);mxUtils.extend(Ha,mxActor);Ha.prototype.redrawPath=function(a,b,d,c,e){b=Math.min(c,e/2);a.moveTo(0,0);a.lineTo(c-b,0);a.quadTo(c,0,c,e/2);a.quadTo(c,e,c-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",Ha);mxUtils.extend(za,mxActor);za.prototype.size=
.2;za.prototype.redrawPath=function(a,b,d,c,e){b=Math.min(e,c);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-f)/2;d=b+f;var g=(c-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(c,b);a.lineTo(c,d);a.lineTo(f,d);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,d);a.lineTo(0,d);a.close();a.end()};mxCellRenderer.registerShape("cross",za);mxUtils.extend(Aa,mxActor);Aa.prototype.size=.25;Aa.prototype.redrawPath=function(a,
-b,d,c,e){b=Math.min(c,e/2);d=Math.min(c-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.moveTo(0,e/2);a.lineTo(d,0);a.lineTo(c-b,0);a.quadTo(c,0,c,e/2);a.quadTo(c,e,c-b,e);a.lineTo(d,e);a.close();a.end()};mxCellRenderer.registerShape("display",Aa);mxUtils.extend(N,mxActor);N.prototype.cst={RECT2:"mxgraph.basic.rect"};N.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},
+b,d,c,e){b=Math.min(c,e/2);d=Math.min(c-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.moveTo(0,e/2);a.lineTo(d,0);a.lineTo(c-b,0);a.quadTo(c,0,c,e/2);a.quadTo(c,e,c-b,e);a.lineTo(d,e);a.close();a.end()};mxCellRenderer.registerShape("display",Aa);mxUtils.extend(O,mxActor);O.prototype.cst={RECT2:"mxgraph.basic.rect"};O.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},
{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"size",dispName:"Corner Size",type:"float",defVal:10},{name:"absoluteCornerSize",dispName:"Abs. Corner Size",type:"bool",defVal:!0},{name:"indent",dispName:"Indent",type:"float",defVal:2},{name:"rectOutline",dispName:"Outline",type:"enum",defVal:"single",enumList:[{val:"single",dispName:"Single"},{val:"double",dispName:"Double"},{val:"frame",dispName:"Frame"}]},{name:"fillColor2",dispName:"Inside Fill Color",
type:"color",defVal:"none"},{name:"gradientColor2",dispName:"Inside Gradient Color",type:"color",defVal:"none"},{name:"gradientDirection2",dispName:"Inside Gradient Direction",type:"enum",defVal:"south",enumList:[{val:"south",dispName:"South"},{val:"west",dispName:"West"},{val:"north",dispName:"North"},{val:"east",dispName:"East"}]},{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"right",dispName:"Right",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},
{name:"left",dispName:"Left ",type:"bool",defVal:!0},{name:"topLeftStyle",dispName:"Top Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"topRightStyle",dispName:"Top Right Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",
dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomRightStyle",dispName:"Bottom Right Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomLeftStyle",dispName:"Bottom Left Style",type:"enum",defVal:"default",enumList:[{val:"default",
-dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];N.prototype.paintVertexShape=function(a,b,d,c,e){a.translate(b,d);this.strictDrawShape(a,0,0,c,e)};N.prototype.strictDrawShape=function(a,b,d,c,e,f){var g=f&&f.rectStyle?f.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),k=f&&f.absoluteCornerSize?f.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",
+dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];O.prototype.paintVertexShape=function(a,b,d,c,e){a.translate(b,d);this.strictDrawShape(a,0,0,c,e)};O.prototype.strictDrawShape=function(a,b,d,c,e,f){var g=f&&f.rectStyle?f.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),k=f&&f.absoluteCornerSize?f.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",
this.absoluteCornerSize),h=f&&f.size?f.size:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),l=f&&f.rectOutline?f.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),m=f&&f.indent?f.indent:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),v=f&&f.dashed?f.dashed:mxUtils.getValue(this.style,"dashed",!1),n=f&&f.dashPattern?f.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),p=f&&f.relIndent?f.relIndent:
-Math.max(0,Math.min(50,m)),q=f&&f.top?f.top:mxUtils.getValue(this.style,"top",!0),E=f&&f.right?f.right:mxUtils.getValue(this.style,"right",!0),B=f&&f.bottom?f.bottom:mxUtils.getValue(this.style,"bottom",!0),A=f&&f.left?f.left:mxUtils.getValue(this.style,"left",!0),t=f&&f.topLeftStyle?f.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),r=f&&f.topRightStyle?f.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),I=f&&f.bottomRightStyle?f.bottomRightStyle:mxUtils.getValue(this.style,
-"bottomRightStyle","default"),u=f&&f.bottomLeftStyle?f.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),fb=f&&f.fillColor?f.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");f&&f.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var w=f&&f.strokeWidth?f.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),x=f&&f.fillColor2?f.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),D=f&&f.gradientColor2?f.gradientColor2:mxUtils.getValue(this.style,
-"gradientColor2","none"),y=f&&f.gradientDirection2?f.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),z=f&&f.opacity?f.opacity:mxUtils.getValue(this.style,"opacity","100"),C=Math.max(0,Math.min(50,h));f=N.prototype;a.setDashed(v);n&&""!=n&&a.setDashPattern(n);a.setStrokeWidth(w);h=Math.min(.5*e,.5*c,h);k||(h=C*Math.min(c,e)/100);h=Math.min(h,.5*Math.min(c,e));k||(m=Math.min(p*Math.min(c,e)/100));m=Math.min(m,.5*Math.min(c,e)-h);(q||E||B||A)&&"frame"!=l&&(a.begin(),q?f.moveNW(a,
-b,d,c,e,g,t,h,A):a.moveTo(0,0),q&&f.paintNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),E&&f.paintNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),B&&f.paintSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),A&&f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),a.close(),a.fill(),a.setShadow(!1),a.setFillColor(x),v=k=z,"none"==x&&(k=0),"none"==D&&(v=0),a.setGradient(x,D,0,0,c,e,y,k,v),a.begin(),q?f.moveNWInner(a,b,d,c,e,g,t,h,m,q,A):a.moveTo(m,0),f.paintLeftInner(a,b,d,c,e,
-g,u,h,m,B,A),A&&B&&f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),B&&E&&f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),E&&q&&f.paintNEInner(a,b,d,c,e,g,r,h,m),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),q&&A&&f.paintNWInner(a,b,d,c,e,g,t,h,m),a.fill(),"none"==fb&&(a.begin(),f.paintFolds(a,b,d,c,e,g,t,r,I,u,h,q,E,B,A),a.stroke()));q||E||B||!A?q||E||!B||A?!q&&!E&&B&&A?"frame"!=l?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,
-h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),"double"==l&&(f.moveNWInner(a,b,d,c,e,g,t,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),f.lineNWInner(a,b,d,c,e,g,t,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,
-b,d,c,e,g,I,h,m,E,B),a.close(),a.fillAndStroke()):q||!E||B||A?!q&&E&&!B&&A?"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,t,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),"double"==l&&(f.moveNWInner(a,b,d,c,e,g,t,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke(),a.begin(),f.moveNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,t,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),
-f.lineNWInner(a,b,d,c,e,g,t,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke(),a.begin(),f.moveNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),a.close(),a.fillAndStroke()):!q&&E&&B&&!A?"frame"!=l?(a.begin(),f.moveNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,
-b,d,c,e,g,I,h,m,E,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),a.close(),a.fillAndStroke()):!q&&E&&B&&A?"frame"!=l?(a.begin(),f.moveNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,
-d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),"double"==l&&(f.moveNWInner(a,b,d,c,e,g,t,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,
-b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),f.lineNWInner(a,b,d,c,e,g,t,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),a.close(),a.fillAndStroke()):!q||E||B||A?q&&!E&&!B&&A?"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),f.paintNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),
-"double"==l&&(f.moveNEInner(a,b,d,c,e,g,r,h,m,E),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,t,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),f.paintNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.lineNEInner(a,b,d,c,e,g,r,h,m,E),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,t,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke()):q&&!E&&B&&!A?"frame"!=
-l?(a.begin(),f.moveNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),"double"==l&&(f.moveNEInner(a,b,d,c,e,g,r,h,m,E),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q)),a.stroke(),a.begin(),f.moveSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.lineNEInner(a,b,d,c,e,g,r,h,m,E),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),a.close(),a.fillAndStroke(),
-a.begin(),f.moveSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),a.close(),a.fillAndStroke()):q&&!E&&B&&A?"frame"!=l?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),f.paintNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),"double"==l&&(f.moveNEInner(a,b,d,c,e,g,r,h,m,E),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),f.paintNWInner(a,b,d,c,
-e,g,t,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),f.paintNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.lineNEInner(a,b,d,c,e,g,r,h,m,E),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,t,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,
-c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),a.close(),a.fillAndStroke()):q&&E&&!B&&!A?"frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.paintNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),f.paintNEInner(a,b,d,c,e,g,r,h,m),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.paintNE(a,b,d,
-c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),f.paintNEInner(a,b,d,c,e,g,r,h,m),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),a.close(),a.fillAndStroke()):q&&E&&!B&&A?"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),f.paintNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.paintNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,
-b,d,c,e,g,r,h,m,q,E),f.paintNEInner(a,b,d,c,e,g,r,h,m),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,t,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),f.paintNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.paintNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),f.paintNEInner(a,b,d,c,e,g,r,h,m),f.paintTopInner(a,b,
-d,c,e,g,t,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,t,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke()):q&&E&&B&&!A?"frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.paintNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),
-f.paintNEInner(a,b,d,c,e,g,r,h,m),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.paintNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),f.paintNEInner(a,b,d,c,e,g,r,h,m),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),
-a.close(),a.fillAndStroke()):q&&E&&B&&A&&("frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,t,h,A),f.paintNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.paintNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),a.close(),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),f.paintSEInner(a,b,d,c,e,g,I,h,
-m),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),f.paintNEInner(a,b,d,c,e,g,r,h,m),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,t,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close()),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,t,h,A),f.paintNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.paintNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),a.close(),
-f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E),f.paintNEInner(a,b,d,c,e,g,r,h,m),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,t,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke())):"frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),"double"==l&&(f.moveNEInner(a,b,d,c,e,g,r,h,m,E),f.paintTopInner(a,
-b,d,c,e,g,t,h,m,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,t,h,A),f.paintTop(a,b,d,c,e,g,r,h,E),f.lineNEInner(a,b,d,c,e,g,r,h,m,E),f.paintTopInner(a,b,d,c,e,g,t,h,m,A,q),a.close(),a.fillAndStroke()):"frame"!=l?(a.begin(),f.moveNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,r,h,m,q,E)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,r,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,
-b,d,c,e,g,r,h,m,q,E),a.close(),a.fillAndStroke()):"frame"!=l?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,E),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,E,B),a.close(),a.fillAndStroke()):"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,t,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),"double"==
-l&&(f.moveNWInner(a,b,d,c,e,g,t,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,t,h,B),f.paintLeft(a,b,d,c,e,g,t,h,q),f.lineNWInner(a,b,d,c,e,g,t,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke());a.begin();f.paintFolds(a,b,d,c,e,g,t,r,I,u,h,q,E,B,A);a.stroke()};N.prototype.moveNW=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(0,0):a.moveTo(0,h)};N.prototype.moveNE=function(a,b,d,c,e,f,g,h,k){"square"==
-g||"default"==g&&"square"==f||!k?a.moveTo(c,0):a.moveTo(c-h,0)};N.prototype.moveSE=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(c,e):a.moveTo(c,e-h)};N.prototype.moveSW=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(0,e):a.moveTo(h,e)};N.prototype.paintNW=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,
-h,0,0,b,h,0)}else("snip"==g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(h,0);else a.lineTo(0,0)};N.prototype.paintTop=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(c,0):a.lineTo(c-h,0)};N.prototype.paintNE=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,h,0,0,b,c,h)}else("snip"==g||"default"==g&&"snip"==
-f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c,h);else a.lineTo(c,0)};N.prototype.paintRight=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(c,e):a.lineTo(c,e-h)};N.prototype.paintLeft=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(0,0):a.lineTo(0,h)};N.prototype.paintSE=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==
-f)b=1;a.arcTo(h,h,0,0,b,c-h,e)}else("snip"==g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-h,e);else a.lineTo(c,e)};N.prototype.paintBottom=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(0,e):a.lineTo(h,e)};N.prototype.paintSW=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,h,0,0,b,0,e-h)}else("snip"==
-g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(0,e-h);else a.lineTo(0,e)};N.prototype.paintNWInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,k,.5*k+h);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,k,k+h);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(k,.5*k+h);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(k+h,k+h),a.lineTo(k,k+h)};N.prototype.paintTopInner=function(a,b,d,c,e,
-f,g,h,k,l,m){l||m?!l&&m?a.lineTo(0,k):l&&!m?a.lineTo(k,0):l?"square"==g||"default"==g&&"square"==f?a.lineTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(h+.5*k,k):a.lineTo(h+k,k):a.lineTo(0,k):a.lineTo(0,0)};N.prototype.paintNEInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,c-h-.5*k,k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,c-h-k,k);else if("snip"==g||"default"==
-g&&"snip"==f)a.lineTo(c-h-.5*k,k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(c-h-k,h+k),a.lineTo(c-h-k,k)};N.prototype.paintRightInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(c-k,0):l&&!m?a.lineTo(c,k):l?"square"==g||"default"==g&&"square"==f?a.lineTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-k,h+.5*k):a.lineTo(c-k,h+k):a.lineTo(c-k,0):a.lineTo(c,0)};N.prototype.paintLeftInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(k,
-e):l&&!m?a.lineTo(0,e-k):l?"square"==g||"default"==g&&"square"==f?a.lineTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,e-h-.5*k):a.lineTo(k,e-h-k):a.lineTo(k,e):a.lineTo(0,e)};N.prototype.paintSEInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,c-k,e-h-.5*k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,c-k,e-h-k);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(c-
-k,e-h-.5*k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(c-h-k,e-h-k),a.lineTo(c-k,e-h-k)};N.prototype.paintBottomInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(c,e-k):l&&!m?a.lineTo(c-k,e):"square"==g||"default"==g&&"square"==f||!l?a.lineTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-h-.5*k,e-k):a.lineTo(c-h-k,e-k):a.lineTo(c,e)};N.prototype.paintSWInner=function(a,b,d,c,e,f,g,h,k,l){if(!l)a.lineTo(k,e);else if("square"==g||"default"==
-g&&"square"==f)a.lineTo(k,e-k);else if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,h+.5*k,e-k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,h+k,e-k);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(h+.5*k,e-k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(k+h,e-h-k),a.lineTo(k+h,e-k)};N.prototype.moveSWInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.moveTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||
-"snip"==g||"default"==g&&"snip"==f?a.moveTo(k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(k,e-h-k):a.moveTo(0,e-k)};N.prototype.lineSWInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.lineTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(k,e-h-k):a.lineTo(0,e-k)};N.prototype.moveSEInner=
-function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.moveTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(c-k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(c-k,e-h-k):a.moveTo(c-k,e)};N.prototype.lineSEInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.lineTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-
-k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-k,e-h-k):a.lineTo(c-k,e)};N.prototype.moveNEInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f||l?a.moveTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(c-k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(c-k,h+k):a.moveTo(c,k)};N.prototype.lineNEInner=function(a,b,d,c,e,
-f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f||l?a.lineTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-k,h+k):a.lineTo(c,k)};N.prototype.moveNWInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.moveTo(k,0):l&&!m?a.moveTo(0,k):"square"==g||"default"==g&&"square"==f?a.moveTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==
-g&&"snip"==f?a.moveTo(k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(k,h+k):a.moveTo(0,0)};N.prototype.lineNWInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(k,0):l&&!m?a.lineTo(0,k):"square"==g||"default"==g&&"square"==f?a.lineTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(k,h+k):a.lineTo(0,
-0)};N.prototype.paintFolds=function(a,b,d,c,e,f,g,h,k,l,m,n,p,q,t){if("fold"==f||"fold"==g||"fold"==h||"fold"==k||"fold"==l)("fold"==g||"default"==g&&"fold"==f)&&n&&t&&(a.moveTo(0,m),a.lineTo(m,m),a.lineTo(m,0)),("fold"==h||"default"==h&&"fold"==f)&&n&&p&&(a.moveTo(c-m,0),a.lineTo(c-m,m),a.lineTo(c,m)),("fold"==k||"default"==k&&"fold"==f)&&q&&p&&(a.moveTo(c-m,e),a.lineTo(c-m,e-m),a.lineTo(c,e-m)),("fold"==l||"default"==l&&"fold"==f)&&q&&t&&(a.moveTo(0,e-m),a.lineTo(m,e-m),a.lineTo(m,e))};mxCellRenderer.registerShape(N.prototype.cst.RECT2,
-N);N.prototype.constraints=null;mxUtils.extend(wa,mxConnector);wa.prototype.origPaintEdgeShape=wa.prototype.paintEdgeShape;wa.prototype.paintEdgeShape=function(a,b,d){for(var c=[],e=0;e<b.length;e++)c.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;wa.prototype.origPaintEdgeShape.apply(this,[a,c,d]);3<=a.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(a.setStrokeColor(c),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),wa.prototype.origPaintEdgeShape.apply(this,
+Math.max(0,Math.min(50,m)),q=f&&f.top?f.top:mxUtils.getValue(this.style,"top",!0),D=f&&f.right?f.right:mxUtils.getValue(this.style,"right",!0),B=f&&f.bottom?f.bottom:mxUtils.getValue(this.style,"bottom",!0),A=f&&f.left?f.left:mxUtils.getValue(this.style,"left",!0),r=f&&f.topLeftStyle?f.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),t=f&&f.topRightStyle?f.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),I=f&&f.bottomRightStyle?f.bottomRightStyle:mxUtils.getValue(this.style,
+"bottomRightStyle","default"),u=f&&f.bottomLeftStyle?f.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),fb=f&&f.fillColor?f.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");f&&f.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var w=f&&f.strokeWidth?f.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),y=f&&f.fillColor2?f.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),E=f&&f.gradientColor2?f.gradientColor2:mxUtils.getValue(this.style,
+"gradientColor2","none"),x=f&&f.gradientDirection2?f.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),z=f&&f.opacity?f.opacity:mxUtils.getValue(this.style,"opacity","100"),C=Math.max(0,Math.min(50,h));f=O.prototype;a.setDashed(v);n&&""!=n&&a.setDashPattern(n);a.setStrokeWidth(w);h=Math.min(.5*e,.5*c,h);k||(h=C*Math.min(c,e)/100);h=Math.min(h,.5*Math.min(c,e));k||(m=Math.min(p*Math.min(c,e)/100));m=Math.min(m,.5*Math.min(c,e)-h);(q||D||B||A)&&"frame"!=l&&(a.begin(),q?f.moveNW(a,
+b,d,c,e,g,r,h,A):a.moveTo(0,0),q&&f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),D&&f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),B&&f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),A&&f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),a.close(),a.fill(),a.setShadow(!1),a.setFillColor(y),v=k=z,"none"==y&&(k=0),"none"==E&&(v=0),a.setGradient(y,E,0,0,c,e,x,k,v),a.begin(),q?f.moveNWInner(a,b,d,c,e,g,r,h,m,q,A):a.moveTo(m,0),f.paintLeftInner(a,b,d,c,e,
+g,u,h,m,B,A),A&&B&&f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),B&&D&&f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),D&&q&&f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),q&&A&&f.paintNWInner(a,b,d,c,e,g,r,h,m),a.fill(),"none"==fb&&(a.begin(),f.paintFolds(a,b,d,c,e,g,r,t,I,u,h,q,D,B,A),a.stroke()));q||D||B||!A?q||D||!B||A?!q&&!D&&B&&A?"frame"!=l?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,
+h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==l&&(f.moveNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.lineNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,
+b,d,c,e,g,I,h,m,D,B),a.close(),a.fillAndStroke()):q||!D||B||A?!q&&D&&!B&&A?"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==l&&(f.moveNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke(),a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),
+f.lineNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke(),a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),a.close(),a.fillAndStroke()):!q&&D&&B&&!A?"frame"!=l?(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,
+b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),a.close(),a.fillAndStroke()):!q&&D&&B&&A?"frame"!=l?(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,
+d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==l&&(f.moveNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,
+b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.lineNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),a.close(),a.fillAndStroke()):!q||D||B||A?q&&!D&&!B&&A?"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),
+"double"==l&&(f.moveNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke()):q&&!D&&B&&!A?"frame"!=
+l?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),"double"==l&&(f.moveNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q)),a.stroke(),a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),a.close(),a.fillAndStroke(),
+a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),a.close(),a.fillAndStroke()):q&&!D&&B&&A?"frame"!=l?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),"double"==l&&(f.moveNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,
+e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,
+c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),a.close(),a.fillAndStroke()):q&&D&&!B&&!A?"frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,
+c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),a.close(),a.fillAndStroke()):q&&D&&!B&&A?"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,
+b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,
+d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke()):q&&D&&B&&!A?"frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),
+f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),
+a.close(),a.fillAndStroke()):q&&D&&B&&A&&("frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),a.close(),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,
+m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close()),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),a.close(),
+f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke())):"frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),"double"==l&&(f.moveNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,
+b,d,c,e,g,r,h,m,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),a.close(),a.fillAndStroke()):"frame"!=l?(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,
+b,d,c,e,g,t,h,m,q,D),a.close(),a.fillAndStroke()):"frame"!=l?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),a.close(),a.fillAndStroke()):"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==
+l&&(f.moveNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.lineNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke());a.begin();f.paintFolds(a,b,d,c,e,g,r,t,I,u,h,q,D,B,A);a.stroke()};O.prototype.moveNW=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(0,0):a.moveTo(0,h)};O.prototype.moveNE=function(a,b,d,c,e,f,g,h,k){"square"==
+g||"default"==g&&"square"==f||!k?a.moveTo(c,0):a.moveTo(c-h,0)};O.prototype.moveSE=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(c,e):a.moveTo(c,e-h)};O.prototype.moveSW=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(0,e):a.moveTo(h,e)};O.prototype.paintNW=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,
+h,0,0,b,h,0)}else("snip"==g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(h,0);else a.lineTo(0,0)};O.prototype.paintTop=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(c,0):a.lineTo(c-h,0)};O.prototype.paintNE=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,h,0,0,b,c,h)}else("snip"==g||"default"==g&&"snip"==
+f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c,h);else a.lineTo(c,0)};O.prototype.paintRight=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(c,e):a.lineTo(c,e-h)};O.prototype.paintLeft=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(0,0):a.lineTo(0,h)};O.prototype.paintSE=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==
+f)b=1;a.arcTo(h,h,0,0,b,c-h,e)}else("snip"==g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-h,e);else a.lineTo(c,e)};O.prototype.paintBottom=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(0,e):a.lineTo(h,e)};O.prototype.paintSW=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,h,0,0,b,0,e-h)}else("snip"==
+g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(0,e-h);else a.lineTo(0,e)};O.prototype.paintNWInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,k,.5*k+h);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,k,k+h);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(k,.5*k+h);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(k+h,k+h),a.lineTo(k,k+h)};O.prototype.paintTopInner=function(a,b,d,c,e,
+f,g,h,k,l,m){l||m?!l&&m?a.lineTo(0,k):l&&!m?a.lineTo(k,0):l?"square"==g||"default"==g&&"square"==f?a.lineTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(h+.5*k,k):a.lineTo(h+k,k):a.lineTo(0,k):a.lineTo(0,0)};O.prototype.paintNEInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,c-h-.5*k,k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,c-h-k,k);else if("snip"==g||"default"==
+g&&"snip"==f)a.lineTo(c-h-.5*k,k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(c-h-k,h+k),a.lineTo(c-h-k,k)};O.prototype.paintRightInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(c-k,0):l&&!m?a.lineTo(c,k):l?"square"==g||"default"==g&&"square"==f?a.lineTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-k,h+.5*k):a.lineTo(c-k,h+k):a.lineTo(c-k,0):a.lineTo(c,0)};O.prototype.paintLeftInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(k,
+e):l&&!m?a.lineTo(0,e-k):l?"square"==g||"default"==g&&"square"==f?a.lineTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,e-h-.5*k):a.lineTo(k,e-h-k):a.lineTo(k,e):a.lineTo(0,e)};O.prototype.paintSEInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,c-k,e-h-.5*k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,c-k,e-h-k);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(c-
+k,e-h-.5*k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(c-h-k,e-h-k),a.lineTo(c-k,e-h-k)};O.prototype.paintBottomInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(c,e-k):l&&!m?a.lineTo(c-k,e):"square"==g||"default"==g&&"square"==f||!l?a.lineTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-h-.5*k,e-k):a.lineTo(c-h-k,e-k):a.lineTo(c,e)};O.prototype.paintSWInner=function(a,b,d,c,e,f,g,h,k,l){if(!l)a.lineTo(k,e);else if("square"==g||"default"==
+g&&"square"==f)a.lineTo(k,e-k);else if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,h+.5*k,e-k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,h+k,e-k);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(h+.5*k,e-k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(k+h,e-h-k),a.lineTo(k+h,e-k)};O.prototype.moveSWInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.moveTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||
+"snip"==g||"default"==g&&"snip"==f?a.moveTo(k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(k,e-h-k):a.moveTo(0,e-k)};O.prototype.lineSWInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.lineTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(k,e-h-k):a.lineTo(0,e-k)};O.prototype.moveSEInner=
+function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.moveTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(c-k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(c-k,e-h-k):a.moveTo(c-k,e)};O.prototype.lineSEInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.lineTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-
+k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-k,e-h-k):a.lineTo(c-k,e)};O.prototype.moveNEInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f||l?a.moveTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(c-k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(c-k,h+k):a.moveTo(c,k)};O.prototype.lineNEInner=function(a,b,d,c,e,
+f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f||l?a.lineTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-k,h+k):a.lineTo(c,k)};O.prototype.moveNWInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.moveTo(k,0):l&&!m?a.moveTo(0,k):"square"==g||"default"==g&&"square"==f?a.moveTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==
+g&&"snip"==f?a.moveTo(k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(k,h+k):a.moveTo(0,0)};O.prototype.lineNWInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(k,0):l&&!m?a.lineTo(0,k):"square"==g||"default"==g&&"square"==f?a.lineTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(k,h+k):a.lineTo(0,
+0)};O.prototype.paintFolds=function(a,b,d,c,e,f,g,h,k,l,m,n,p,q,r){if("fold"==f||"fold"==g||"fold"==h||"fold"==k||"fold"==l)("fold"==g||"default"==g&&"fold"==f)&&n&&r&&(a.moveTo(0,m),a.lineTo(m,m),a.lineTo(m,0)),("fold"==h||"default"==h&&"fold"==f)&&n&&p&&(a.moveTo(c-m,0),a.lineTo(c-m,m),a.lineTo(c,m)),("fold"==k||"default"==k&&"fold"==f)&&q&&p&&(a.moveTo(c-m,e),a.lineTo(c-m,e-m),a.lineTo(c,e-m)),("fold"==l||"default"==l&&"fold"==f)&&q&&r&&(a.moveTo(0,e-m),a.lineTo(m,e-m),a.lineTo(m,e))};mxCellRenderer.registerShape(O.prototype.cst.RECT2,
+O);O.prototype.constraints=null;mxUtils.extend(wa,mxConnector);wa.prototype.origPaintEdgeShape=wa.prototype.paintEdgeShape;wa.prototype.paintEdgeShape=function(a,b,d){for(var c=[],e=0;e<b.length;e++)c.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;wa.prototype.origPaintEdgeShape.apply(this,[a,c,d]);3<=a.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(a.setStrokeColor(c),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),wa.prototype.origPaintEdgeShape.apply(this,
[a,b,d])))};mxCellRenderer.registerShape("filledEdge",wa);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.editorUi.getSelectionState(),d=a.apply(this,arguments);"umlFrame"==b.style.shape&&d.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return d}}();mxMarker.addMarker("dash",function(a,b,d,c,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();
-a.moveTo(c.x-m/2-n/2,c.y-n/2+m/2);a.lineTo(c.x+n/2-3*m/2,c.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("box",function(a,b,d,c,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1),v=c.x+m/2,p=c.y+n/2;c.x-=m;c.y-=n;return function(){a.begin();a.moveTo(v-m/2-n/2,p-n/2+m/2);a.lineTo(v-m/2+n/2,p-n/2-m/2);a.lineTo(v+n/2-3*m/2,p-3*n/2-m/2);a.lineTo(v-n/2-3*m/2,p-3*n/2+m/2);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("cross",function(a,b,d,c,e,f,g,h,k,m){var l=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();
-a.moveTo(c.x-l/2-n/2,c.y-n/2+l/2);a.lineTo(c.x+n/2-3*l/2,c.y-3*n/2-l/2);a.moveTo(c.x-l/2+n/2,c.y-n/2-l/2);a.lineTo(c.x-n/2-3*l/2,c.y-3*n/2+l/2);a.stroke()}});mxMarker.addMarker("circle",Ra);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=Ra.apply(this,arguments),v=e*(g+2*k),p=f*(g+2*k);return function(){n.apply(this,arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*v+e*k,m.y-2*p+f*k);a.moveTo(m.x-v-p+f*k,m.y-p+v-e*k);a.lineTo(m.x+p-v-f*k,m.y-p-v+e*k);a.stroke()}});
-mxMarker.addMarker("halfCircle",function(a,b,c,d,e,f,g,h,k,m){var l=e*(g+k+1),n=f*(g+k+1),v=d.clone();d.x-=l;d.y-=n;return function(){a.begin();a.moveTo(v.x-n,v.y+l);a.quadTo(d.x-n,d.y+l,d.x,d.y);a.quadTo(d.x+n,d.y-l,v.x+n,v.y-l);a.stroke()}});mxMarker.addMarker("async",function(a,b,d,c,e,f,g,h,k,m){b=e*k*1.118;d=f*k*1.118;e*=g+k;f*=g+k;var l=c.clone();l.x-=b;l.y-=d;c.x+=1*-e-b;c.y+=1*-f-d;return function(){a.begin();a.moveTo(l.x,l.y);h?a.lineTo(l.x-e-f/2,l.y-f+e/2):a.lineTo(l.x+f/2-e,l.y-f-e/2);
+a.moveTo(c.x-m/2-n/2,c.y-n/2+m/2);a.lineTo(c.x+n/2-3*m/2,c.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("box",function(a,b,d,c,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1),v=c.x+m/2,p=c.y+n/2;c.x-=m;c.y-=n;return function(){a.begin();a.moveTo(v-m/2-n/2,p-n/2+m/2);a.lineTo(v-m/2+n/2,p-n/2-m/2);a.lineTo(v+n/2-3*m/2,p-3*n/2-m/2);a.lineTo(v-n/2-3*m/2,p-3*n/2+m/2);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("cross",function(a,b,d,c,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();
+a.moveTo(c.x-m/2-n/2,c.y-n/2+m/2);a.lineTo(c.x+n/2-3*m/2,c.y-3*n/2-m/2);a.moveTo(c.x-m/2+n/2,c.y-n/2-m/2);a.lineTo(c.x-n/2-3*m/2,c.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",Ra);mxMarker.addMarker("circlePlus",function(a,b,d,c,e,f,g,h,k,m){var l=c.clone(),n=Ra.apply(this,arguments),v=e*(g+2*k),p=f*(g+2*k);return function(){n.apply(this,arguments);a.begin();a.moveTo(l.x-e*k,l.y-f*k);a.lineTo(l.x-2*v+e*k,l.y-2*p+f*k);a.moveTo(l.x-v-p+f*k,l.y-p+v-e*k);a.lineTo(l.x+p-v-f*k,l.y-p-v+e*k);a.stroke()}});
+mxMarker.addMarker("halfCircle",function(a,b,d,c,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1),v=c.clone();c.x-=m;c.y-=n;return function(){a.begin();a.moveTo(v.x-n,v.y+m);a.quadTo(c.x-n,c.y+m,c.x,c.y);a.quadTo(c.x+n,c.y-m,v.x+n,v.y-m);a.stroke()}});mxMarker.addMarker("async",function(a,b,d,c,e,f,g,h,k,m){b=e*k*1.118;d=f*k*1.118;e*=g+k;f*=g+k;var l=c.clone();l.x-=b;l.y-=d;c.x+=1*-e-b;c.y+=1*-f-d;return function(){a.begin();a.moveTo(l.x,l.y);h?a.lineTo(l.x-e-f/2,l.y-f+e/2):a.lineTo(l.x+f/2-e,l.y-f-e/2);
a.lineTo(l.x-e,l.y-f);a.close();m?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,d,c,e,f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ya=function(a,b,d){return Da(a,["width"],b,function(b,c,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+d;return new mxPoint(f.x+c*b/4+e*g/2,f.y+
e*b/4-c*g/2)},function(b,c,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=Math.round(2*b)/a.view.scale-d})},Da=function(a,b,d,c,e){return S(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=d?e[0]:e[f],e=d?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,l=Math.sqrt(f*f+k*k),h=c.call(this,l,f/l,k/l,h,e);return new mxPoint(h.x/g-b.x,h.y/g-b.y)},function(b,c,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,l=d?g[0]:
g[h],g=d?g[1]:g[h-1],h=g.x-l.x,m=g.y-l.y,n=Math.sqrt(h*h+m*m);c.x=(c.x+b.x)*k;c.y=(c.y+b.y)*k;e.call(this,n,h/n,m/n,l,g,c,f)})},Sa=function(a){return function(b){return[S(b,["arrowWidth","arrowSize"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",U.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",U.prototype.arrowSize)));return new mxPoint(b.x+(1-c)*b.width,b.y+(1-d)*b.height/2)},function(b,d){this.state.style.arrowWidth=
@@ -3463,12 +3467,12 @@ J.prototype.position))),c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.stat
["jettyWidth","jettyHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"jettyWidth",fa.prototype.jettyWidth))),d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"jettyHeight",fa.prototype.jettyHeight)));return new mxPoint(a.x+b/2,a.y+2*d)},function(a,b){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y))/2)})]},corner:function(a){return[S(a,
["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",ja.prototype.dx))),d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",ja.prototype.dy)));return new mxPoint(a.x+b,a.y+d)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},tee:function(a){return[S(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,
"dx",ka.prototype.dx))),d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",ka.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+d)},function(a,b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},singleArrow:Sa(1),doubleArrow:Sa(.5),folder:function(a){return[S(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,
-"tabWidth",t.prototype.tabWidth))),d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",t.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",t.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+d)},function(a,b){var d=Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",t.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(d=a.width-d);this.state.style.tabWidth=Math.round(d);this.state.style.tabHeight=
-Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},document:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",y.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},tape:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",x.prototype.size))));
+"tabWidth",r.prototype.tabWidth))),d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",r.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",r.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+d)},function(a,b){var d=Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",r.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(d=a.width-d);this.state.style.tabWidth=Math.round(d);this.state.style.tabHeight=
+Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},document:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",x.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},tape:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",w.prototype.size))));
return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))},!1)]},isoCube2:function(a){return[S(a,["isoAngle"],function(a){var b=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(a.x,a.y+Math.min(a.width*Math.tan(b),.5*a.height))},function(a,b){this.state.style.isoAngle=Math.max(0,50*(b.y-a.y)/a.height)},!0)]},cylinder2:Ta(n.prototype.size),cylinder3:Ta(p.prototype.size),
offPageConnector:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",sa.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},"mxgraph.basic.rect":function(a){var b=[Graph.createHandle(a,["size"],function(a){var b=Math.max(0,Math.min(a.width/2,a.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));
return new mxPoint(a.x+b,a.y+b)},function(a,b){this.state.style.size=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,b.x-a.x)))/100})];a=Graph.createHandle(a,["indent"],function(a){var b=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(a.x+.75*a.width,a.y+b*a.height/200)},function(a,b){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(b.y-a.y)/a.height)))/100});b.push(a);return b},step:Ia(L.prototype.size,!0,null,
-!0,L.prototype.fixedSize),hexagon:Ia(O.prototype.size,!0,.5,!0,O.prototype.fixedSize),curlyBracket:Ia(H.prototype.size,!1),display:Ia(Aa.prototype.size,!1),cube:Qa(1,d.prototype.size,!1),card:Qa(.5,r.prototype.size,!0),loopLimit:Qa(.5,ga.prototype.size,!0),trapezoid:Ua(.5,F.prototype.size,F.prototype.fixedSize),parallelogram:Ua(1,w.prototype.size,w.prototype.fixedSize)};Graph.createHandle=S;Graph.handleFactory=Ja;var bb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=
+!0,L.prototype.fixedSize),hexagon:Ia(M.prototype.size,!0,.5,!0,M.prototype.fixedSize),curlyBracket:Ia(H.prototype.size,!1),display:Ia(Aa.prototype.size,!1),cube:Qa(1,d.prototype.size,!1),card:Qa(.5,t.prototype.size,!0),loopLimit:Qa(.5,ga.prototype.size,!0),trapezoid:Ua(.5,F.prototype.size,F.prototype.fixedSize),parallelogram:Ua(1,y.prototype.size,y.prototype.fixedSize)};Graph.createHandle=S;Graph.handleFactory=Ja;var bb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=
function(){var a=bb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)?b=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(b=mxConstants.SHAPE_SWIMLANE);b=Ja[b];null==b&&null!=this.state.shape&&this.state.shape.isRoundable()&&(b=Ja[mxConstants.SHAPE_RECTANGLE]);null!=b&&(b=b(this.state),null!=b&&(a=null==a?b:a.concat(b)))}return a};mxEdgeHandler.prototype.createCustomHandles=
function(){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Ja[a];return null!=a?a(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ka=new mxPoint(1,0),La=new mxPoint(1,0),Va=mxUtils.toRadians(-30),Ka=mxUtils.getRotatedPoint(Ka,Math.cos(Va),Math.sin(Va)),Wa=mxUtils.toRadians(-150),La=mxUtils.getRotatedPoint(La,Math.cos(Wa),Math.sin(Wa));mxEdgeStyle.IsometricConnector=function(a,
b,d,c,e){var f=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=c&&(c=f.transformControlPoint(a,c));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=d&&(g=new mxPoint(d.getCenterX(),d.getCenterY()));var k=Ka.x,l=Ka.y,m=La.x,n=La.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,d){a-=q.x;var c=b-q.y;b=(n*a-m*c)/(k*n-l*m);a=(l*a-k*c)/(l*m-k*n);p?(d&&(q=new mxPoint(q.x+k*b,q.y+
@@ -3482,13 +3486,13 @@ arguments)};e.prototype.constraints=[];l.prototype.getConstraints=function(a,b,d
1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,
.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];ya.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;K.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;h.prototype.getConstraints=function(a,b,d){a=[];var c=Math.max(0,Math.min(b,Math.min(d,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-c),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-c,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*c,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(d+c)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,
-1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};r.prototype.getConstraints=function(a,b,d){a=[];var c=Math.max(0,Math.min(b,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+c),0));a.push(new mxConnectionConstraint(new mxPoint(0,
+1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};t.prototype.getConstraints=function(a,b,d){a=[];var c=Math.max(0,Math.min(b,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+c),0));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,c,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(d+c)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5,
0),!1));return a};d.prototype.getConstraints=function(a,b,d){a=[];var c=Math.max(0,Math.min(b,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-c),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-c,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*c,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,b,.5*(d+c)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+c),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,d-.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(d-c)));return a};p.prototype.getConstraints=function(a,b,d){a=[];b=Math.max(0,Math.min(d,
parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-b));a.push(new mxConnectionConstraint(new mxPoint(0,
1),!1,null,0,-b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b+.5*(.5*d-b)));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,b+.5*(.5*d-b)));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,d-b-.5*(.5*d-b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d-b-.5*(.5*d-b)));a.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*b));a.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*b));a.push(new mxConnectionConstraint(new mxPoint(.855,
-1),!1,null,0,.29*-b));a.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-b));return a};t.prototype.getConstraints=function(a,b,d){a=[];var c=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,
+1),!1,null,0,.29*-b));a.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-b));return a};r.prototype.getConstraints=function(a,b,d){a=[];var c=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*c,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+c),e))):(a.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*c,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-c,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-c,e)),a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(b-c),e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.25*(d-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(d-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.75*(d-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
0,.25*(d-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(d-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(d-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};da.prototype.constraints=mxRectangleShape.prototype.constraints;T.prototype.constraints=
@@ -3497,17 +3501,17 @@ mxRectangleShape.prototype.constraints;Ba.prototype.constraints=mxEllipse.protot
0),!1,null,e,d));return a};fa.prototype.getConstraints=function(a,b,d){b=parseFloat(mxUtils.getValue(a,"jettyWidth",fa.prototype.jettyWidth))/2;a=parseFloat(mxUtils.getValue(a,"jettyHeight",fa.prototype.jettyHeight));var c=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,b),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,b),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(d-.5*a,1.5*a)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(d-
.5*a,3.5*a))];d>5*a&&c.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,b));d>8*a&&c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,b));d>15*a&&c.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,b));return c};ga.prototype.constraints=mxRectangleShape.prototype.constraints;sa.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)];ba.prototype.constraints=
+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)];Y.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)];pa.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)];q.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
-0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];x.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,
+0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];w.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,
.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];L.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,
1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,
.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];ma.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,
0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,
.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,
-.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];w.prototype.constraints=mxRectangleShape.prototype.constraints;F.prototype.constraints=mxRectangleShape.prototype.constraints;y.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,
+.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];y.prototype.constraints=mxRectangleShape.prototype.constraints;F.prototype.constraints=mxRectangleShape.prototype.constraints;x.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,
0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ka.prototype.getConstraints=function(a,b,d){a=[];var c=Math.max(0,
Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
null,.75*b+.25*c,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+c),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+c),.5*(d+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+c),d));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-c),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-c),.5*(d+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),
@@ -3548,41 +3552,41 @@ this.addAction("editLink...",function(){var a=e.getSelectionCell();if(e.isEnable
d.actions.get("image").funct())})).isEnabled=l;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&d.showLinkDialog("",mxResources.get("insert"),function(a,b,d){a=mxUtils.trim(a);if(0<a.length){var c=null,f=e.getLinkTitle(a);null!=b&&0<b.length&&(c=b[0].iconUrl,f=b[0].name||b[0].type,f=f.charAt(0).toUpperCase()+f.substring(1),30<f.length&&(f=f.substring(0,30)+"..."));b=new mxCell(f,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+
(null!=c?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+c:"spacing=10;"));b.vertex=!0;c=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry([b],!0));b.geometry.x=c.x;b.geometry.y=c.y;e.setAttributeForCell(b,"linkTarget",d);e.setLinkForCell(b,a);e.cellSizeUpdated(b,!0);e.getModel().beginUpdate();try{b=e.addCell(b),e.fireEvent(new mxEventObject("cellsInserted","cells",[b]))}finally{e.getModel().endUpdate()}e.setSelectionCell(b);e.scrollCellToVisible(e.getSelectionCell())}},
!0)})).isEnabled=l;this.addAction("link...",mxUtils.bind(this,function(){if(e.isEnabled())if(e.cellEditor.isContentEditing()){var a=e.getSelectedElement(),b=e.getParentByName(a,"A",e.cellEditor.textarea),c="";if(null==b&&null!=a&&null!=a.getElementsByTagName)for(var f=a.getElementsByTagName("a"),h=0;h<f.length&&null==b;h++)f[h].textContent==a.textContent&&(b=f[h]);null!=b&&"A"==b.nodeName&&(c=b.getAttribute("href")||"",e.selectNode(b));var k=e.cellEditor.saveSelection();d.showLinkDialog(c,mxResources.get("apply"),
-mxUtils.bind(this,function(a){e.cellEditor.restoreSelection(k);null!=a&&e.insertLink(a)}))}else e.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=l;this.addAction("autosize",function(){var a=e.getSelectionCells();if(null!=a){e.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var d=a[b];0<e.getModel().getChildCount(d)?e.updateGroupBounds([d],0,!0):e.updateCellSize(d)}}finally{e.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",
-function(){e.stopEditing();var a=e.getCommonStyle(e.getSelectionCells()),a="1"==mxUtils.getValue(a,"html","0")?null:"1";e.getModel().beginUpdate();try{for(var b=e.getEditableCells(e.getSelectionCells()),c=0;c<b.length;c++)if(state=e.getView().getState(b[c]),null!=state){var f=mxUtils.getValue(state.style,"html","0");if("1"==f&&null==a){var h=e.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(h=h.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var k=document.createElement("div");
-k.innerHTML=e.sanitizeHtml(h);h=mxUtils.extractTextWithWhitespace(k.childNodes);e.cellLabelChanged(state.cell,h);e.setCellStyles("html",a,[b[c]])}else"0"==f&&"1"==a&&(h=mxUtils.htmlEntities(e.convertValueToString(state.cell),!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(h=h.replace(/\n/g,"<br/>")),e.cellLabelChanged(state.cell,e.sanitizeHtml(h)),e.setCellStyles("html",a,[b[c]]))}d.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=a?a:"0"],"cells",b))}finally{e.getModel().endUpdate()}});
-this.addAction("wordWrap",function(){var a=e.getView().getState(e.getSelectionCell()),b="wrap";e.stopEditing();null!=a&&"wrap"==a.style[mxConstants.STYLE_WHITE_SPACE]&&(b=null);e.setCellStyles(mxConstants.STYLE_WHITE_SPACE,b)});this.addAction("rotation",function(){var a="0",b=e.getView().getState(e.getSelectionCell());null!=b&&(a=b.style[mxConstants.STYLE_ROTATION]||a);a=new FilenameDialog(d,a,mxResources.get("apply"),function(a){null!=a&&0<a.length&&e.setCellStyles(mxConstants.STYLE_ROTATION,a)},
-mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");d.showDialog(a.container,375,80,!0,!0);a.init()});this.addAction("resetView",function(){e.zoomTo(1);d.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",function(a){e.isFastZoomEnabled()?e.lazyZoom(!0,!0,d.buttonZoomDelay):e.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(a){e.isFastZoomEnabled()?e.lazyZoom(!1,!0,d.buttonZoomDelay):e.zoomOut()},null,null,Editor.ctrlKey+
-" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var a=e.isSelectionEmpty()?e.getGraphBounds():e.getBoundingBox(e.getSelectionCells()),b=e.view.translate,c=e.view.scale;a.x=a.x/c-b.x;a.y=a.y/c-b.y;a.width/=c;a.height/=c;null!=e.backgroundImage&&(a=mxRectangle.fromRectangle(a),a.add(new mxRectangle(0,0,e.backgroundImage.width,e.backgroundImage.height)));0==a.width||0==a.height?(e.zoomTo(1),d.resetScrollbars()):(b=Editor.fitWindowBorders,null!=b&&(a.x-=b.x,a.y-=b.y,a.width+=b.width+
-b.x,a.height+=b.height+b.y),e.fitWindow(a))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){e.pageVisible||this.get("pageView").funct();var a=e.pageFormat,b=e.pageScale;e.zoomTo(Math.floor(20*Math.min((e.container.clientWidth-10)/a.width/b,(e.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(e.container)&&(a=e.getPagePadding(),e.container.scrollTop=a.y*e.view.scale-1,e.container.scrollLeft=Math.min(a.x*e.view.scale,(e.container.scrollWidth-
-e.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){e.pageVisible||this.get("pageView").funct();var a=e.pageFormat,b=e.pageScale;e.zoomTo(Math.floor(20*Math.min((e.container.clientWidth-10)/(2*a.width)/b,(e.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(e.container)&&(a=e.getPagePadding(),e.container.scrollTop=Math.min(a.y,(e.container.scrollHeight-e.container.clientHeight)/2),e.container.scrollLeft=Math.min(a.x,
-(e.container.scrollWidth-e.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){e.pageVisible||this.get("pageView").funct();e.zoomTo(Math.floor(20*(e.container.clientWidth-10)/e.pageFormat.width/e.pageScale)/20);if(mxUtils.hasScrollbars(e.container)){var a=e.getPagePadding();e.container.scrollLeft=Math.min(a.x*e.view.scale,(e.container.scrollWidth-e.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+
-"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*e.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&e.zoomTo(a/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*e.pageScale),mxResources.get("apply"),mxUtils.bind(this,
-function(a){a=parseInt(a);!isNaN(a)&&0<a&&(a=new ChangePageSetup(d,null,null,null,a/100),a.ignoreColor=!0,a.ignoreImage=!0,e.model.execute(a))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}));var k=null,k=this.addAction("grid",function(){e.setGridEnabled(!e.isGridEnabled());e.defaultGridEnabled=e.isGridEnabled();d.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");k.setToggleAction(!0);k.setSelectedCallback(function(){return e.isGridEnabled()});
-k.setEnabled(!1);k=this.addAction("guides",function(){e.graphHandler.guidesEnabled=!e.graphHandler.guidesEnabled;d.fireEvent(new mxEventObject("guidesEnabledChanged"))});k.setToggleAction(!0);k.setSelectedCallback(function(){return e.graphHandler.guidesEnabled});k.setEnabled(!1);k=this.addAction("tooltips",function(){e.tooltipHandler.setEnabled(!e.tooltipHandler.isEnabled());d.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});k.setToggleAction(!0);k.setSelectedCallback(function(){return e.tooltipHandler.isEnabled()});
-k=this.addAction("collapseExpand",function(){var a=new ChangePageSetup(d);a.ignoreColor=!0;a.ignoreImage=!0;a.foldingEnabled=!e.foldingEnabled;e.model.execute(a)});k.setToggleAction(!0);k.setSelectedCallback(function(){return e.foldingEnabled});k.isEnabled=l;k=this.addAction("scrollbars",function(){d.setScrollbars(!d.hasScrollbars())});k.setToggleAction(!0);k.setSelectedCallback(function(){return e.scrollbars});k=this.addAction("pageView",mxUtils.bind(this,function(){d.setPageVisible(!e.pageVisible)}));
-k.setToggleAction(!0);k.setSelectedCallback(function(){return e.pageVisible});k=this.addAction("connectionArrows",function(){e.connectionArrowsEnabled=!e.connectionArrowsEnabled;d.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");k.setToggleAction(!0);k.setSelectedCallback(function(){return e.connectionArrowsEnabled});k=this.addAction("connectionPoints",function(){e.setConnectable(!e.connectionHandler.isEnabled());d.fireEvent(new mxEventObject("connectionPointsChanged"))},
-null,null,"Alt+Shift+P");k.setToggleAction(!0);k.setSelectedCallback(function(){return e.connectionHandler.isEnabled()});k=this.addAction("copyConnect",function(){e.connectionHandler.setCreateTarget(!e.connectionHandler.isCreateTarget());d.fireEvent(new mxEventObject("copyConnectChanged"))});k.setToggleAction(!0);k.setSelectedCallback(function(){return e.connectionHandler.isCreateTarget()});k.isEnabled=l;k=this.addAction("autosave",function(){d.editor.setAutosave(!d.editor.autosave)});k.setToggleAction(!0);
-k.setSelectedCallback(function(){return d.editor.autosave});k.isEnabled=l;k.visible=!1;this.addAction("help",function(){var a="";mxResources.isLanguageSupported(mxClient.language)&&(a="_"+mxClient.language);e.openLink(RESOURCES_PATH+"/help"+a+".html")});var h=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){h||(d.showDialog((new AboutDialog(d)).container,320,280,!0,!0,function(){h=!1}),h=!0)}));k=mxUtils.bind(this,function(a,b,d,c){return this.addAction(a,function(){if(null!=
-d&&e.cellEditor.isContentEditing())d();else{e.stopEditing(!1);e.getModel().beginUpdate();try{var a=e.getEditableCells(e.getSelectionCells());e.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,b,a);(b&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?e.updateLabelElements(a,function(a){a.style.fontWeight=null;"B"==a.nodeName&&e.replaceElement(a)}):(b&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?e.updateLabelElements(a,function(a){a.style.fontStyle=null;"I"==a.nodeName&&e.replaceElement(a)}):(b&mxConstants.FONT_UNDERLINE)==
-mxConstants.FONT_UNDERLINE&&e.updateLabelElements(a,function(a){a.style.textDecoration=null;"U"==a.nodeName&&e.replaceElement(a)});for(var c=0;c<a.length;c++)0==e.model.getChildCount(a[c])&&e.autoSizeCell(a[c],!1)}finally{e.getModel().endUpdate()}}},null,null,c)});k("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");k("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");k("underline",mxConstants.FONT_UNDERLINE,
-function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){d.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){d.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){d.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){d.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)});this.addAction("backgroundColor...",
-function(){d.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){d.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){d.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,!0)});this.addAction("shadow",function(){d.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_DASHED,null),e.setCellStyles(mxConstants.STYLE_DASH_PATTERN,
-null),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("dashed",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_DASHED,"1"),e.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",
-e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("dotted",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_DASHED,"1"),e.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("sharp",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_ROUNDED,
-"0"),e.setCellStyles(mxConstants.STYLE_CURVED,"0"),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("rounded",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),e.setCellStyles(mxConstants.STYLE_CURVED,"0"),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],
-"values",["1","0"],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!e.isSelectionEmpty()&&e.isEnabled()){e.getModel().beginUpdate();try{var a=e.getSelectionCells(),b=e.getCurrentCellStyle(a[0]),c="1"==mxUtils.getValue(b,mxConstants.STYLE_ROUNDED,"0")?"0":"1";e.setCellStyles(mxConstants.STYLE_ROUNDED,c);e.setCellStyles(mxConstants.STYLE_CURVED,null);d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],
-"values",[c,"0"],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}}});this.addAction("curved",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),e.setCellStyles(mxConstants.STYLE_CURVED,"1"),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("collapsible",function(){var a=e.view.getState(e.getSelectionCell()),
-b="1";null!=a&&null!=e.getFoldingImage(a)&&(b="0");e.setCellStyles("collapsible",b);d.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[b],"cells",e.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var a=e.getEditableCells(e.getSelectionCells());if(null!=a&&0<a.length){var b=e.getModel(),b=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",b.getStyle(a[0])||"",function(b){null!=b&&e.setCellStyle(mxUtils.trim(b),a)},null,null,
-400,220);this.editorUi.showDialog(b.container,420,300,!0,!0);b.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){e.isEnabled()&&!e.isSelectionEmpty()&&d.setDefaultStyle(e.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){e.isEnabled()&&d.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var a=e.getSelectionCell();if(null!=a&&e.getModel().isEdge(a)){var b=f.graph.selectionCellsHandler.getHandler(a);
-if(b instanceof mxEdgeHandler){for(var d=e.view.translate,c=e.view.scale,h=d.x,d=d.y,a=e.getModel().getParent(a),k=e.getCellGeometry(a);e.getModel().isVertex(a)&&null!=k;)h+=k.x,d+=k.y,a=e.getModel().getParent(a),k=e.getCellGeometry(a);h=Math.round(e.snap(e.popupMenuHandler.triggerX/c-h));c=Math.round(e.snap(e.popupMenuHandler.triggerY/c-d));b.addPointAt(b.state,h,c)}}});this.addAction("removeWaypoint",function(){var a=d.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,
-a.index)});this.addAction("clearWaypoints",function(a,b){a=null!=b?b:a;var d=e.getSelectionCells();if(null!=d){d=e.getEditableCells(e.addAllEdges(d));e.getModel().beginUpdate();try{for(var c=0;c<d.length;c++){var f=d[c];if(e.getModel().isEdge(f)){var g=e.getCellGeometry(f);null!=b&&mxEvent.isShiftDown(a)?(e.setCellStyles(mxConstants.STYLE_EXIT_X,null,[f]),e.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[f]),e.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[f]),e.setCellStyles(mxConstants.STYLE_ENTRY_Y,
-null,[f])):null!=g&&(g=g.clone(),g.points=null,g.x=0,g.y=0,g.offset=null,e.getModel().setGeometry(f,g))}}}finally{e.getModel().endUpdate()}}},null,null,"Alt+Shift+C");k=this.addAction("subscript",mxUtils.bind(this,function(){e.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");k=this.addAction("superscript",mxUtils.bind(this,function(){e.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");
-this.addAction("image...",function(){if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",b=e.getView().getState(e.getSelectionCell()),f="",h=null;null!=b&&(f=b.style[mxConstants.STYLE_IMAGE]||f,h=b.style[mxConstants.STYLE_CLIP_PATH]||h);var k=e.cellEditor.saveSelection();d.showImageDialog(a,f,function(a,b,d,f,g,h){if(e.cellEditor.isContentEditing())e.cellEditor.restoreSelection(k),e.insertImage(a,b,d);else{var l=e.getSelectionCells();
-if(null!=a&&(0<a.length||0<l.length)){var m=null;e.getModel().beginUpdate();try{if(0==l.length){var l=[e.insertVertex(e.getDefaultParent(),null,"",0,0,b,d,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],n=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(l,!0));l[0].geometry.x=n.x;l[0].geometry.y=n.y;m=l;e.fireEvent(new mxEventObject("cellsInserted","cells",m))}e.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,l);var p=e.getCurrentCellStyle(l[0]);
-"image"!=p[mxConstants.STYLE_SHAPE]&&"label"!=p[mxConstants.STYLE_SHAPE]?e.setCellStyles(mxConstants.STYLE_SHAPE,"image",l):0==a.length&&e.setCellStyles(mxConstants.STYLE_SHAPE,null,l);if(1==e.getSelectionCount()&&null!=b&&null!=d){var q=l[0],r=e.getModel().getGeometry(q);null!=r&&(r=r.clone(),r.width=b,r.height=d,e.getModel().setGeometry(q,r));null!=f?c(q,f,g,h,e):e.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,l)}}finally{e.getModel().endUpdate()}null!=m&&(e.setSelectionCells(m),e.scrollCellToVisible(m[0]))}}},
-e.cellEditor.isContentEditing(),!e.cellEditor.isContentEditing(),!0,h)}}).isEnabled=l;this.addAction("crop...",function(){var a=e.getSelectionCell();if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&null!=a){var b=e.getCurrentCellStyle(a),f=b[mxConstants.STYLE_IMAGE],h=b[mxConstants.STYLE_SHAPE];f&&"image"==h&&(b=new CropImageDialog(d,f,b[mxConstants.STYLE_CLIP_PATH],function(b,d,f){c(a,b,d,f,e)}),d.showDialog(b.container,300,380,!0,!0))}}).isEnabled=l;k=this.addAction("layers",mxUtils.bind(this,
-function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(d,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){d.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),this.layersWindow.window.addListener("hide",function(){d.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),d.fireEvent(new mxEventObject("layers")),this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),
+mxUtils.bind(this,function(a){e.cellEditor.restoreSelection(k);null!=a&&e.insertLink(a)}))}else e.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=l;this.addAction("autosize",function(){var a=e.getSelectionCells();if(null!=a){e.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var d=a[b];0<e.getModel().getChildCount(d)?e.updateGroupBounds([d],0,!0):e.updateCellSize(d)}}finally{e.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("snapToGrid",
+function(){e.snapCellsToGrid(e.getSelectionCells(),e.gridSize)});this.addAction("formattedText",function(){e.stopEditing();var a=e.getCommonStyle(e.getSelectionCells()),a="1"==mxUtils.getValue(a,"html","0")?null:"1";e.getModel().beginUpdate();try{for(var b=e.getEditableCells(e.getSelectionCells()),c=0;c<b.length;c++)if(state=e.getView().getState(b[c]),null!=state){var f=mxUtils.getValue(state.style,"html","0");if("1"==f&&null==a){var h=e.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,
+"nl2Br","1")&&(h=h.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var k=document.createElement("div");k.innerHTML=e.sanitizeHtml(h);h=mxUtils.extractTextWithWhitespace(k.childNodes);e.cellLabelChanged(state.cell,h);e.setCellStyles("html",a,[b[c]])}else"0"==f&&"1"==a&&(h=mxUtils.htmlEntities(e.convertValueToString(state.cell),!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(h=h.replace(/\n/g,"<br/>")),e.cellLabelChanged(state.cell,e.sanitizeHtml(h)),e.setCellStyles("html",a,[b[c]]))}d.fireEvent(new mxEventObject("styleChanged",
+"keys",["html"],"values",[null!=a?a:"0"],"cells",b))}finally{e.getModel().endUpdate()}});this.addAction("wordWrap",function(){var a=e.getView().getState(e.getSelectionCell()),b="wrap";e.stopEditing();null!=a&&"wrap"==a.style[mxConstants.STYLE_WHITE_SPACE]&&(b=null);e.setCellStyles(mxConstants.STYLE_WHITE_SPACE,b)});this.addAction("rotation",function(){var a="0",b=e.getView().getState(e.getSelectionCell());null!=b&&(a=b.style[mxConstants.STYLE_ROTATION]||a);a=new FilenameDialog(d,a,mxResources.get("apply"),
+function(a){null!=a&&0<a.length&&e.setCellStyles(mxConstants.STYLE_ROTATION,a)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");d.showDialog(a.container,375,80,!0,!0);a.init()});this.addAction("resetView",function(){e.zoomTo(1);d.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",function(a){e.isFastZoomEnabled()?e.lazyZoom(!0,!0,d.buttonZoomDelay):e.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(a){e.isFastZoomEnabled()?
+e.lazyZoom(!1,!0,d.buttonZoomDelay):e.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var a=e.isSelectionEmpty()?e.getGraphBounds():e.getBoundingBox(e.getSelectionCells()),b=e.view.translate,c=e.view.scale;a.x=a.x/c-b.x;a.y=a.y/c-b.y;a.width/=c;a.height/=c;null!=e.backgroundImage&&(a=mxRectangle.fromRectangle(a),a.add(new mxRectangle(0,0,e.backgroundImage.width,e.backgroundImage.height)));0==a.width||0==a.height?(e.zoomTo(1),d.resetScrollbars()):
+(b=Editor.fitWindowBorders,null!=b&&(a.x-=b.x,a.y-=b.y,a.width+=b.width+b.x,a.height+=b.height+b.y),e.fitWindow(a))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){e.pageVisible||this.get("pageView").funct();var a=e.pageFormat,b=e.pageScale;e.zoomTo(Math.floor(20*Math.min((e.container.clientWidth-10)/a.width/b,(e.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(e.container)&&(a=e.getPagePadding(),e.container.scrollTop=a.y*e.view.scale-1,
+e.container.scrollLeft=Math.min(a.x*e.view.scale,(e.container.scrollWidth-e.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){e.pageVisible||this.get("pageView").funct();var a=e.pageFormat,b=e.pageScale;e.zoomTo(Math.floor(20*Math.min((e.container.clientWidth-10)/(2*a.width)/b,(e.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(e.container)&&(a=e.getPagePadding(),e.container.scrollTop=Math.min(a.y,(e.container.scrollHeight-
+e.container.clientHeight)/2),e.container.scrollLeft=Math.min(a.x,(e.container.scrollWidth-e.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){e.pageVisible||this.get("pageView").funct();e.zoomTo(Math.floor(20*(e.container.clientWidth-10)/e.pageFormat.width/e.pageScale)/20);if(mxUtils.hasScrollbars(e.container)){var a=e.getPagePadding();e.container.scrollLeft=Math.min(a.x*e.view.scale,(e.container.scrollWidth-e.container.clientWidth)/
+2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*e.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&e.zoomTo(a/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,
+parseInt(100*e.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&(a=new ChangePageSetup(d,null,null,null,a/100),a.ignoreColor=!0,a.ignoreImage=!0,e.model.execute(a))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}));var k=null,k=this.addAction("grid",function(){e.setGridEnabled(!e.isGridEnabled());e.defaultGridEnabled=e.isGridEnabled();d.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+
+"+Shift+G");k.setToggleAction(!0);k.setSelectedCallback(function(){return e.isGridEnabled()});k.setEnabled(!1);k=this.addAction("guides",function(){e.graphHandler.guidesEnabled=!e.graphHandler.guidesEnabled;d.fireEvent(new mxEventObject("guidesEnabledChanged"))});k.setToggleAction(!0);k.setSelectedCallback(function(){return e.graphHandler.guidesEnabled});k.setEnabled(!1);k=this.addAction("tooltips",function(){e.tooltipHandler.setEnabled(!e.tooltipHandler.isEnabled());d.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});
+k.setToggleAction(!0);k.setSelectedCallback(function(){return e.tooltipHandler.isEnabled()});k=this.addAction("collapseExpand",function(){var a=new ChangePageSetup(d);a.ignoreColor=!0;a.ignoreImage=!0;a.foldingEnabled=!e.foldingEnabled;e.model.execute(a)});k.setToggleAction(!0);k.setSelectedCallback(function(){return e.foldingEnabled});k.isEnabled=l;k=this.addAction("scrollbars",function(){d.setScrollbars(!d.hasScrollbars())});k.setToggleAction(!0);k.setSelectedCallback(function(){return e.scrollbars});
+k=this.addAction("pageView",mxUtils.bind(this,function(){d.setPageVisible(!e.pageVisible)}));k.setToggleAction(!0);k.setSelectedCallback(function(){return e.pageVisible});k=this.addAction("connectionArrows",function(){e.connectionArrowsEnabled=!e.connectionArrowsEnabled;d.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");k.setToggleAction(!0);k.setSelectedCallback(function(){return e.connectionArrowsEnabled});k=this.addAction("connectionPoints",function(){e.setConnectable(!e.connectionHandler.isEnabled());
+d.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");k.setToggleAction(!0);k.setSelectedCallback(function(){return e.connectionHandler.isEnabled()});k=this.addAction("copyConnect",function(){e.connectionHandler.setCreateTarget(!e.connectionHandler.isCreateTarget());d.fireEvent(new mxEventObject("copyConnectChanged"))});k.setToggleAction(!0);k.setSelectedCallback(function(){return e.connectionHandler.isCreateTarget()});k.isEnabled=l;k=this.addAction("autosave",function(){d.editor.setAutosave(!d.editor.autosave)});
+k.setToggleAction(!0);k.setSelectedCallback(function(){return d.editor.autosave});k.isEnabled=l;k.visible=!1;this.addAction("help",function(){var a="";mxResources.isLanguageSupported(mxClient.language)&&(a="_"+mxClient.language);e.openLink(RESOURCES_PATH+"/help"+a+".html")});var h=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){h||(d.showDialog((new AboutDialog(d)).container,320,280,!0,!0,function(){h=!1}),h=!0)}));k=mxUtils.bind(this,function(a,b,d,c){return this.addAction(a,
+function(){if(null!=d&&e.cellEditor.isContentEditing())d();else{e.stopEditing(!1);e.getModel().beginUpdate();try{var a=e.getEditableCells(e.getSelectionCells());e.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,b,a);(b&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?e.updateLabelElements(a,function(a){a.style.fontWeight=null;"B"==a.nodeName&&e.replaceElement(a)}):(b&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?e.updateLabelElements(a,function(a){a.style.fontStyle=null;"I"==a.nodeName&&e.replaceElement(a)}):
+(b&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.updateLabelElements(a,function(a){a.style.textDecoration=null;"U"==a.nodeName&&e.replaceElement(a)});for(var c=0;c<a.length;c++)0==e.model.getChildCount(a[c])&&e.autoSizeCell(a[c],!1)}finally{e.getModel().endUpdate()}}},null,null,c)});k("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");k("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");
+k("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){d.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){d.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){d.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){d.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)});
+this.addAction("backgroundColor...",function(){d.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){d.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){d.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,!0)});this.addAction("shadow",function(){d.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_DASHED,
+null),e.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("dashed",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_DASHED,"1"),e.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,
+mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("dotted",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_DASHED,"1"),e.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("sharp",
+function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),e.setCellStyles(mxConstants.STYLE_CURVED,"0"),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("rounded",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),e.setCellStyles(mxConstants.STYLE_CURVED,"0"),d.fireEvent(new mxEventObject("styleChanged",
+"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!e.isSelectionEmpty()&&e.isEnabled()){e.getModel().beginUpdate();try{var a=e.getSelectionCells(),b=e.getCurrentCellStyle(a[0]),c="1"==mxUtils.getValue(b,mxConstants.STYLE_ROUNDED,"0")?"0":"1";e.setCellStyles(mxConstants.STYLE_ROUNDED,c);e.setCellStyles(mxConstants.STYLE_CURVED,null);d.fireEvent(new mxEventObject("styleChanged",
+"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[c,"0"],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}}});this.addAction("curved",function(){e.getModel().beginUpdate();try{e.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),e.setCellStyles(mxConstants.STYLE_CURVED,"1"),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",e.getSelectionCells()))}finally{e.getModel().endUpdate()}});this.addAction("collapsible",
+function(){var a=e.view.getState(e.getSelectionCell()),b="1";null!=a&&null!=e.getFoldingImage(a)&&(b="0");e.setCellStyles("collapsible",b);d.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[b],"cells",e.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var a=e.getEditableCells(e.getSelectionCells());if(null!=a&&0<a.length){var b=e.getModel(),b=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",b.getStyle(a[0])||"",function(b){null!=
+b&&e.setCellStyle(mxUtils.trim(b),a)},null,null,400,220);this.editorUi.showDialog(b.container,420,300,!0,!0);b.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){e.isEnabled()&&!e.isSelectionEmpty()&&d.setDefaultStyle(e.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){e.isEnabled()&&d.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var a=e.getSelectionCell();
+if(null!=a&&e.getModel().isEdge(a)){var b=f.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var d=e.view.translate,c=e.view.scale,h=d.x,d=d.y,a=e.getModel().getParent(a),k=e.getCellGeometry(a);e.getModel().isVertex(a)&&null!=k;)h+=k.x,d+=k.y,a=e.getModel().getParent(a),k=e.getCellGeometry(a);h=Math.round(e.snap(e.popupMenuHandler.triggerX/c-h));c=Math.round(e.snap(e.popupMenuHandler.triggerY/c-d));b.addPointAt(b.state,h,c)}}});this.addAction("removeWaypoint",function(){var a=
+d.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,a.index)});this.addAction("clearWaypoints",function(a,b){a=null!=b?b:a;var d=e.getSelectionCells();if(null!=d){d=e.getEditableCells(e.addAllEdges(d));e.getModel().beginUpdate();try{for(var c=0;c<d.length;c++){var f=d[c];if(e.getModel().isEdge(f)){var g=e.getCellGeometry(f);null!=b&&mxEvent.isShiftDown(a)?(e.setCellStyles(mxConstants.STYLE_EXIT_X,null,[f]),e.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[f]),e.setCellStyles(mxConstants.STYLE_ENTRY_X,
+null,[f]),e.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[f])):null!=g&&(g=g.clone(),g.points=null,g.x=0,g.y=0,g.offset=null,e.getModel().setGeometry(f,g))}}}finally{e.getModel().endUpdate()}}},null,null,"Alt+Shift+C");k=this.addAction("subscript",mxUtils.bind(this,function(){e.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");k=this.addAction("superscript",mxUtils.bind(this,function(){e.cellEditor.isContentEditing()&&document.execCommand("superscript",
+!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",b=e.getView().getState(e.getSelectionCell()),f="",h=null;null!=b&&(f=b.style[mxConstants.STYLE_IMAGE]||f,h=b.style[mxConstants.STYLE_CLIP_PATH]||h);var k=e.cellEditor.saveSelection();d.showImageDialog(a,f,function(a,b,d,f,g,h){if(e.cellEditor.isContentEditing())e.cellEditor.restoreSelection(k),e.insertImage(a,
+b,d);else{var l=e.getSelectionCells();if(null!=a&&(0<a.length||0<l.length)){var m=null;e.getModel().beginUpdate();try{if(0==l.length){var l=[e.insertVertex(e.getDefaultParent(),null,"",0,0,b,d,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],n=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(l,!0));l[0].geometry.x=n.x;l[0].geometry.y=n.y;m=l;e.fireEvent(new mxEventObject("cellsInserted","cells",m))}e.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,
+l);var p=e.getCurrentCellStyle(l[0]);"image"!=p[mxConstants.STYLE_SHAPE]&&"label"!=p[mxConstants.STYLE_SHAPE]?e.setCellStyles(mxConstants.STYLE_SHAPE,"image",l):0==a.length&&e.setCellStyles(mxConstants.STYLE_SHAPE,null,l);if(1==e.getSelectionCount()&&null!=b&&null!=d){var q=l[0],r=e.getModel().getGeometry(q);null!=r&&(r=r.clone(),r.width=b,r.height=d,e.getModel().setGeometry(q,r));null!=f?c(q,f,g,h,e):e.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,l)}}finally{e.getModel().endUpdate()}null!=m&&(e.setSelectionCells(m),
+e.scrollCellToVisible(m[0]))}}},e.cellEditor.isContentEditing(),!e.cellEditor.isContentEditing(),!0,h)}}).isEnabled=l;this.addAction("crop...",function(){var a=e.getSelectionCell();if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&null!=a){var b=e.getCurrentCellStyle(a),f=b[mxConstants.STYLE_IMAGE],h=b[mxConstants.STYLE_SHAPE];f&&"image"==h&&(b=new CropImageDialog(d,f,b[mxConstants.STYLE_CLIP_PATH],function(b,d,f){c(a,b,d,f,e)}),d.showDialog(b.container,300,380,!0,!0))}}).isEnabled=l;k=this.addAction("layers",
+mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(d,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){d.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),this.layersWindow.window.addListener("hide",function(){d.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),d.fireEvent(new mxEventObject("layers")),this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),
null,null,Editor.ctrlKey+"+Shift+L");k.setToggleAction(!0);k.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));k=this.addAction("formatPanel",mxUtils.bind(this,function(){d.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");k.setToggleAction(!0);k.setSelectedCallback(mxUtils.bind(this,function(){return 0<d.formatWidth}));k=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=
new OutlineWindow(d,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){d.fireEvent(new mxEventObject("outline"));this.outlineWindow.window.fit()})),this.outlineWindow.window.addListener("hide",function(){d.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),d.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+
"+Shift+O");k.setToggleAction(!0);k.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))};Actions.prototype.addAction=function(a,b,c,d,f){var e;"..."==a.substring(a.length-3)?(a=a.substring(0,a.length-3),e=mxResources.get(a)+"..."):e=mxResources.get(a);return this.put(a,new Action(e,b,c,d,f))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};
@@ -3596,26 +3600,26 @@ e+">"))}),c)}d(mxResources.get("normal"),"p");d("","h1").firstChild.nextSibling.
[6,8,9,10,11,12,14,18,24,36,48,72];0>mxUtils.indexOf(e,this.defaultFontSize)&&(e.push(this.defaultFontSize),e.sort(function(a,b){return a-b}));for(var f=mxUtils.bind(this,function(d){if(null!=b.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var c=b.cellEditor.textarea.getElementsByTagName("font"),e=0;e<c.length;e++)if("3"==c[e].getAttribute("size")){c[e].removeAttribute("size");c[e].style.fontSize=d+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
"values",[d],"cells",[b.cellEditor.getEditingCell()]))}}),k=mxUtils.bind(this,function(a){this.styleChange(d,a,[mxConstants.STYLE_FONTSIZE],[a],null,c,function(){f(a)})}),h=0;h<e.length;h++)k(e[h]);d.addSeparator(c);if(0<this.customFontSizes.length){for(var g=0,h=0;h<this.customFontSizes.length;h++)0>mxUtils.indexOf(e,this.customFontSizes[h])&&(k(this.customFontSizes[h]),g++);0<g&&d.addSeparator(c);d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),c);d.addSeparator(c)}var m=
null;this.promptChange(d,mxResources.get("custom")+"...","("+mxResources.get("points")+")",this.defaultFontSize,mxConstants.STYLE_FONTSIZE,c,!0,mxUtils.bind(this,function(a){null!=m&&null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),b.cellEditor.restoreSelection(m));null!=a&&0<a.length&&(this.customFontSizes.push(a),f(a))}),null,function(){m=b.cellEditor.saveSelection();return!1})})));this.put("direction",new Menu(mxUtils.bind(this,function(a,c){a.addItem(mxResources.get("flipH"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPH,
-!1)},c);a.addItem(mxResources.get("flipV"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},c);this.addMenuItems(a,["-","rotation"],c)})));this.put("align",new Menu(mxUtils.bind(this,function(a,c){a.addItem(mxResources.get("leftAlign"),null,function(){b.alignCells(mxConstants.ALIGN_LEFT)},c);a.addItem(mxResources.get("center"),null,function(){b.alignCells(mxConstants.ALIGN_CENTER)},c);a.addItem(mxResources.get("rightAlign"),null,function(){b.alignCells(mxConstants.ALIGN_RIGHT)},c);
-a.addSeparator(c);a.addItem(mxResources.get("topAlign"),null,function(){b.alignCells(mxConstants.ALIGN_TOP)},c);a.addItem(mxResources.get("middle"),null,function(){b.alignCells(mxConstants.ALIGN_MIDDLE)},c);a.addItem(mxResources.get("bottomAlign"),null,function(){b.alignCells(mxConstants.ALIGN_BOTTOM)},c)})));this.put("distribute",new Menu(mxUtils.bind(this,function(a,c){a.addItem(mxResources.get("horizontal"),null,function(){b.distributeCells(!0)},c);a.addItem(mxResources.get("vertical"),null,function(){b.distributeCells(!1)},
-c)})));this.put("line",new Menu(mxUtils.bind(this,function(a,c){var d=b.view.getState(b.getSelectionCell());null!=d&&(d=mxUtils.getValue(d.style,mxConstants.STYLE_SHAPE),"arrow"!=d&&(this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",c,!0).setAttribute("title",mxResources.get("straight")),this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],
-["orthogonalEdgeStyle",null,null],"geIcon geSprite geSprite-orthogonal",c,!0).setAttribute("title",mxResources.get("orthogonal")),this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalelbow",c,!0).setAttribute("title",mxResources.get("simple")),this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],
-["elbowEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalelbow",c,!0).setAttribute("title",mxResources.get("simple")),this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalisometric",c,!0).setAttribute("title",mxResources.get("isometric")),this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,
-mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalisometric",c,!0).setAttribute("title",mxResources.get("isometric")),"connector"==d&&this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle","1",null],"geIcon geSprite geSprite-curved",c,!0).setAttribute("title",mxResources.get("curved")),this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],
-["entityRelationEdgeStyle",null,null],"geIcon geSprite geSprite-entity",c,!0).setAttribute("title",mxResources.get("entityRelation"))),a.addSeparator(c),this.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",c,!0,null,!0).setAttribute("title",mxResources.get("line")),this.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["link",
-null,null,null],"geIcon geSprite geSprite-linkedge",c,!0,null,!0).setAttribute("title",mxResources.get("link")),this.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["flexArrow",null,null,null],"geIcon geSprite geSprite-arrow",c,!0,null,!0).setAttribute("title",mxResources.get("arrow")),this.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,null],"geIcon geSprite geSprite-simplearrow",
-c,!0,null,!0).setAttribute("title",mxResources.get("simpleArrow")))})));this.put("layout",new Menu(mxUtils.bind(this,function(a,c){var d=mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});a.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var a=new mxHierarchicalLayout(b,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(function(){var c=
-b.getSelectionCells();a.execute(b.getDefaultParent(),0==c.length?null:c)},!0)}),c);a.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var a=new mxHierarchicalLayout(b,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(function(){var c=b.getSelectionCells();a.execute(b.getDefaultParent(),0==c.length?null:c)},!0)}),c);a.addSeparator(c);a.addItem(mxResources.get("horizontalTree"),null,mxUtils.bind(this,function(){var a=b.getSelectionCell(),c=null;null==a||0==b.getModel().getChildCount(a)?
-0==b.getModel().getEdgeCount(a)&&(c=b.findTreeRoots(b.getDefaultParent())):c=b.findTreeRoots(a);null!=c&&0<c.length&&(a=c[0]);if(null!=a){var e=new mxCompactTreeLayout(b,!0);e.edgeRouting=!1;e.levelDistance=30;d(e.levelDistance,mxUtils.bind(this,function(c){e.levelDistance=c;this.editorUi.executeLayout(function(){e.execute(b.getDefaultParent(),a)},!0)}))}}),c);a.addItem(mxResources.get("verticalTree"),null,mxUtils.bind(this,function(){var a=b.getSelectionCell(),c=null;null==a||0==b.getModel().getChildCount(a)?
-0==b.getModel().getEdgeCount(a)&&(c=b.findTreeRoots(b.getDefaultParent())):c=b.findTreeRoots(a);null!=c&&0<c.length&&(a=c[0]);if(null!=a){var e=new mxCompactTreeLayout(b,!1);e.edgeRouting=!1;e.levelDistance=30;d(e.levelDistance,mxUtils.bind(this,function(c){e.levelDistance=c;this.editorUi.executeLayout(function(){e.execute(b.getDefaultParent(),a)},!0)}))}}),c);a.addItem(mxResources.get("radialTree"),null,mxUtils.bind(this,function(){var a=b.getSelectionCell(),c=null;null==a||0==b.getModel().getChildCount(a)?
-0==b.getModel().getEdgeCount(a)&&(c=b.findTreeRoots(b.getDefaultParent())):c=b.findTreeRoots(a);null!=c&&0<c.length&&(a=c[0]);if(null!=a){var e=new mxRadialTreeLayout(b,!1);e.levelDistance=80;e.autoRadius=!0;d(e.levelDistance,mxUtils.bind(this,function(c){e.levelDistance=c;this.editorUi.executeLayout(function(){e.execute(b.getDefaultParent(),a);b.isSelectionEmpty()||(a=b.getModel().getParent(a),b.getModel().isVertex(a)&&b.updateGroupBounds([a],2*b.gridSize,!0))},!0)}))}}),c);a.addSeparator(c);a.addItem(mxResources.get("organic"),
-null,mxUtils.bind(this,function(){var a=new mxFastOrganicLayout(b);d(a.forceConstant,mxUtils.bind(this,function(c){a.forceConstant=c;this.editorUi.executeLayout(function(){var c=b.getSelectionCell();if(null==c||0==b.getModel().getChildCount(c))c=b.getDefaultParent();a.execute(c);b.getModel().isVertex(c)&&b.updateGroupBounds([c],2*b.gridSize,!0)},!0)}))}),c);a.addItem(mxResources.get("circle"),null,mxUtils.bind(this,function(){var a=new mxCircleLayout(b);this.editorUi.executeLayout(function(){var c=
-b.getSelectionCell();if(null==c||0==b.getModel().getChildCount(c))c=b.getDefaultParent();a.execute(c);b.getModel().isVertex(c)&&b.updateGroupBounds([c],2*b.gridSize,!0)},!0)}),c)})));this.put("navigation",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"home - exitGroup enterGroup - expand collapse - collapsible".split(" "),b)})));this.put("arrange",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["toFront","toBack","bringForward","sendBackward","-"],b);this.addSubmenu("direction",
-a,b);this.addMenuItems(a,["turn","-"],b);this.addSubmenu("align",a,b);this.addSubmenu("distribute",a,b);a.addSeparator(b);this.addSubmenu("navigation",a,b);this.addSubmenu("insert",a,b);this.addSubmenu("layout",a,b);this.addMenuItems(a,"- group ungroup removeFromGroup - clearWaypoints autosize".split(" "),b)}))).isEnabled=c;this.put("insert",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["insertLink","insertImage"],b)})));this.put("view",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,
-(null!=this.editorUi.format?["formatPanel"]:[]).concat("outline layers - pageView pageScale - scrollbars tooltips - grid guides - connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),b))})));this.put("viewPanels",new Menu(mxUtils.bind(this,function(a,b){null!=this.editorUi.format&&this.addMenuItems(a,["formatPanel"],b);this.addMenuItems(a,["outline","layers"],b)})));this.put("viewZoom",new Menu(mxUtils.bind(this,function(a,c){this.addMenuItems(a,["resetView","-"],c);for(var d=
-[.25,.5,.75,1,1.25,1.5,2,3,4],f=0;f<d.length;f++)(function(d){a.addItem(100*d+"%",null,function(){b.zoomTo(d)},c)})(d[f]);this.addMenuItems(a,"- fitWindow fitPageWidth fitPage fitTwoPages - customZoom".split(" "),c)})));this.put("file",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"new open - save saveAs - import export - pageSetup print".split(" "),b)})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - editData editTooltip - editStyle - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));
-this.put("extras",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["help","-","about"])})))};Menus.prototype.put=function(a,b){return this.menus[a]=b};Menus.prototype.get=function(a){return this.menus[a]};
-Menus.prototype.addSubmenu=function(a,b,c,d){var f=this.get(a);null!=f&&(f=f.isEnabled(),b.showDisabled||f)&&(c=b.addItem(d||mxResources.get(a),null,null,c,null,f),this.addMenu(a,b,c))};Menus.prototype.addMenu=function(a,b,c){var d=this.get(a);null!=d&&(b.showDisabled||d.isEnabled())&&this.get(a).execute(b,c)};
+!1)},c);a.addItem(mxResources.get("flipV"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},c);this.addMenuItems(a,["-","rotation"],c)})));this.put("align",new Menu(mxUtils.bind(this,function(a,c){var d=1<this.editorUi.getSelectionState().vertices.length;a.addItem(mxResources.get("leftAlign"),null,function(){b.alignCells(mxConstants.ALIGN_LEFT)},c,null,d);a.addItem(mxResources.get("center"),null,function(){b.alignCells(mxConstants.ALIGN_CENTER)},c,null,d);a.addItem(mxResources.get("rightAlign"),
+null,function(){b.alignCells(mxConstants.ALIGN_RIGHT)},c,null,d);a.addSeparator(c);a.addItem(mxResources.get("topAlign"),null,function(){b.alignCells(mxConstants.ALIGN_TOP)},c,null,d);a.addItem(mxResources.get("middle"),null,function(){b.alignCells(mxConstants.ALIGN_MIDDLE)},c,null,d);a.addItem(mxResources.get("bottomAlign"),null,function(){b.alignCells(mxConstants.ALIGN_BOTTOM)},c,null,d);this.addMenuItems(a,["-","snapToGrid"],c)})));this.put("distribute",new Menu(mxUtils.bind(this,function(a,c){a.addItem(mxResources.get("horizontal"),
+null,function(){b.distributeCells(!0)},c);a.addItem(mxResources.get("vertical"),null,function(){b.distributeCells(!1)},c)})));this.put("line",new Menu(mxUtils.bind(this,function(a,c){var d=b.view.getState(b.getSelectionCell());null!=d&&(d=mxUtils.getValue(d.style,mxConstants.STYLE_SHAPE),"arrow"!=d&&(this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",c,!0).setAttribute("title",mxResources.get("straight")),
+this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle",null,null],"geIcon geSprite geSprite-orthogonal",c,!0).setAttribute("title",mxResources.get("orthogonal")),this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalelbow",c,!0).setAttribute("title",mxResources.get("simple")),this.edgeStyleChange(a,
+"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalelbow",c,!0).setAttribute("title",mxResources.get("simple")),this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalisometric",c,!0).setAttribute("title",mxResources.get("isometric")),
+this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalisometric",c,!0).setAttribute("title",mxResources.get("isometric")),"connector"==d&&this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle","1",null],"geIcon geSprite geSprite-curved",c,!0).setAttribute("title",mxResources.get("curved")),
+this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["entityRelationEdgeStyle",null,null],"geIcon geSprite geSprite-entity",c,!0).setAttribute("title",mxResources.get("entityRelation"))),a.addSeparator(c),this.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",c,!0,null,!0).setAttribute("title",mxResources.get("line")),this.styleChange(a,
+"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["link",null,null,null],"geIcon geSprite geSprite-linkedge",c,!0,null,!0).setAttribute("title",mxResources.get("link")),this.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["flexArrow",null,null,null],"geIcon geSprite geSprite-arrow",c,!0,null,!0).setAttribute("title",mxResources.get("arrow")),this.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,
+mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,null],"geIcon geSprite geSprite-simplearrow",c,!0,null,!0).setAttribute("title",mxResources.get("simpleArrow")))})));this.put("layout",new Menu(mxUtils.bind(this,function(a,c){var d=mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});a.addItem(mxResources.get("horizontalFlow"),null,
+mxUtils.bind(this,function(){var a=new mxHierarchicalLayout(b,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(function(){var c=b.getSelectionCells();a.execute(b.getDefaultParent(),0==c.length?null:c)},!0)}),c);a.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var a=new mxHierarchicalLayout(b,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(function(){var c=b.getSelectionCells();a.execute(b.getDefaultParent(),0==c.length?null:c)},!0)}),c);a.addSeparator(c);
+a.addItem(mxResources.get("horizontalTree"),null,mxUtils.bind(this,function(){var a=b.getSelectionCell(),c=null;null==a||0==b.getModel().getChildCount(a)?0==b.getModel().getEdgeCount(a)&&(c=b.findTreeRoots(b.getDefaultParent())):c=b.findTreeRoots(a);null!=c&&0<c.length&&(a=c[0]);if(null!=a){var e=new mxCompactTreeLayout(b,!0);e.edgeRouting=!1;e.levelDistance=30;d(e.levelDistance,mxUtils.bind(this,function(c){e.levelDistance=c;this.editorUi.executeLayout(function(){e.execute(b.getDefaultParent(),a)},
+!0)}))}}),c);a.addItem(mxResources.get("verticalTree"),null,mxUtils.bind(this,function(){var a=b.getSelectionCell(),c=null;null==a||0==b.getModel().getChildCount(a)?0==b.getModel().getEdgeCount(a)&&(c=b.findTreeRoots(b.getDefaultParent())):c=b.findTreeRoots(a);null!=c&&0<c.length&&(a=c[0]);if(null!=a){var e=new mxCompactTreeLayout(b,!1);e.edgeRouting=!1;e.levelDistance=30;d(e.levelDistance,mxUtils.bind(this,function(c){e.levelDistance=c;this.editorUi.executeLayout(function(){e.execute(b.getDefaultParent(),
+a)},!0)}))}}),c);a.addItem(mxResources.get("radialTree"),null,mxUtils.bind(this,function(){var a=b.getSelectionCell(),c=null;null==a||0==b.getModel().getChildCount(a)?0==b.getModel().getEdgeCount(a)&&(c=b.findTreeRoots(b.getDefaultParent())):c=b.findTreeRoots(a);null!=c&&0<c.length&&(a=c[0]);if(null!=a){var e=new mxRadialTreeLayout(b,!1);e.levelDistance=80;e.autoRadius=!0;d(e.levelDistance,mxUtils.bind(this,function(c){e.levelDistance=c;this.editorUi.executeLayout(function(){e.execute(b.getDefaultParent(),
+a);b.isSelectionEmpty()||(a=b.getModel().getParent(a),b.getModel().isVertex(a)&&b.updateGroupBounds([a],2*b.gridSize,!0))},!0)}))}}),c);a.addSeparator(c);a.addItem(mxResources.get("organic"),null,mxUtils.bind(this,function(){var a=new mxFastOrganicLayout(b);d(a.forceConstant,mxUtils.bind(this,function(c){a.forceConstant=c;this.editorUi.executeLayout(function(){var c=b.getSelectionCell();if(null==c||0==b.getModel().getChildCount(c))c=b.getDefaultParent();a.execute(c);b.getModel().isVertex(c)&&b.updateGroupBounds([c],
+2*b.gridSize,!0)},!0)}))}),c);a.addItem(mxResources.get("circle"),null,mxUtils.bind(this,function(){var a=new mxCircleLayout(b);this.editorUi.executeLayout(function(){var c=b.getSelectionCell();if(null==c||0==b.getModel().getChildCount(c))c=b.getDefaultParent();a.execute(c);b.getModel().isVertex(c)&&b.updateGroupBounds([c],2*b.gridSize,!0)},!0)}),c)})));this.put("navigation",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"home - exitGroup enterGroup - expand collapse - collapsible".split(" "),
+b)})));this.put("arrange",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["toFront","toBack","bringForward","sendBackward","-"],b);this.addSubmenu("direction",a,b);this.addMenuItems(a,["turn","-"],b);this.addSubmenu("align",a,b);this.addSubmenu("distribute",a,b);a.addSeparator(b);this.addSubmenu("navigation",a,b);this.addSubmenu("insert",a,b);this.addSubmenu("layout",a,b);this.addMenuItems(a,"- group ungroup removeFromGroup - clearWaypoints autosize".split(" "),b)}))).isEnabled=c;this.put("insert",
+new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["insertLink","insertImage"],b)})));this.put("view",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,(null!=this.editorUi.format?["formatPanel"]:[]).concat("outline layers - pageView pageScale - scrollbars tooltips - grid guides - connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),b))})));this.put("viewPanels",new Menu(mxUtils.bind(this,function(a,b){null!=this.editorUi.format&&this.addMenuItems(a,["formatPanel"],
+b);this.addMenuItems(a,["outline","layers"],b)})));this.put("viewZoom",new Menu(mxUtils.bind(this,function(a,c){this.addMenuItems(a,["resetView","-"],c);for(var d=[.25,.5,.75,1,1.25,1.5,2,3,4],f=0;f<d.length;f++)(function(d){a.addItem(100*d+"%",null,function(){b.zoomTo(d)},c)})(d[f]);this.addMenuItems(a,"- fitWindow fitPageWidth fitPage fitTwoPages - customZoom".split(" "),c)})));this.put("file",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"new open - save saveAs - import export - pageSetup print".split(" "),
+b)})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - editData editTooltip - editStyle - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));this.put("extras",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["help","-","about"])})))};
+Menus.prototype.put=function(a,b){return this.menus[a]=b};Menus.prototype.get=function(a){return this.menus[a]};Menus.prototype.addSubmenu=function(a,b,c,d){var f=this.get(a);null!=f&&(f=f.isEnabled(),b.showDisabled||f)&&(c=b.addItem(d||mxResources.get(a),null,null,c,null,f),this.addMenu(a,b,c))};Menus.prototype.addMenu=function(a,b,c){var d=this.get(a);null!=d&&(b.showDisabled||d.isEnabled())&&this.get(a).execute(b,c)};
Menus.prototype.addInsertTableCellItem=function(a,b){var c=this.editorUi.editor.graph,d=c.getSelectionCell(),f=c.getCurrentCellStyle(d);1<c.getSelectionCount()&&(c.isTableCell(d)&&(d=c.model.getParent(d)),c.isTableRow(d)&&(d=c.model.getParent(d)));var e=c.isTable(d)||c.isTableRow(d)||c.isTableCell(d),l=c.isStack(d)||c.isStackChild(d),k=e,h=e;l&&(f=c.isStack(d)?f:c.getCellStyle(c.model.getParent(d)),h="0"==f.horizontalStack,k=!h);null!=b||!e&&!l?this.addInsertTableItem(a,mxUtils.bind(this,function(a,
b,d,e,f){b=f||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)?c.createCrossFunctionalSwimlane(b,d,null,null,e||mxEvent.isShiftDown(a)?"Cross-Functional Flowchart":null):c.createTable(b,d,null,null,e||mxEvent.isShiftDown(a)?"Table":null);a=mxEvent.isAltDown(a)?c.getFreeInsertPoint():c.getCenterInsertPoint(c.getBoundingBoxFromGeometry([b],!0));d=null;c.getModel().beginUpdate();try{d=c.importCells([b],a.x,a.y),c.fireEvent(new mxEventObject("cellsInserted","cells",c.model.getDescendants(d[0])))}finally{c.getModel().endUpdate()}null!=
d&&0<d.length&&(c.scrollCellToVisible(d[0]),c.setSelectionCells(d))}),b):(k&&(f=a.addItem(mxResources.get("insertColumnBefore"),null,mxUtils.bind(this,function(){try{l?c.insertLane(d,!0):c.insertTableColumn(d,!0)}catch(g){this.editorUi.handleError(g)}}),null,"geIcon geSprite geSprite-insertcolumnbefore"),f.setAttribute("title",mxResources.get("insertColumnBefore")),f=a.addItem(mxResources.get("insertColumnAfter"),null,mxUtils.bind(this,function(){try{l?c.insertLane(d,!1):c.insertTableColumn(d,!1)}catch(g){this.editorUi.handleError(g)}}),
@@ -3629,7 +3633,7 @@ a.addItem("",null,null,c,null,null,null,!0);a.firstChild.style.fontSize=Menus.pr
function(a){mxEvent.consume(a)}));var m=document.createElement("input");m.setAttribute("id","geContainerOption");m.setAttribute("type","checkbox");var n=document.createElement("label");mxUtils.write(n,mxResources.get("container"));n.setAttribute("for","geContainerOption");mxEvent.addGestureListeners(n,null,null,mxUtils.bind(this,function(a){mxEvent.consume(a)}));mxEvent.addGestureListeners(m,null,null,mxUtils.bind(this,function(a){mxEvent.consume(a)}));d&&(a.firstChild.appendChild(g),a.firstChild.appendChild(c),
mxUtils.br(a.firstChild),a.firstChild.appendChild(m),a.firstChild.appendChild(n),mxUtils.br(a.firstChild),mxUtils.br(a.firstChild));var p=function(a,b){var c=document.createElement("table");c.setAttribute("border","1");c.style.borderCollapse="collapse";c.style.borderStyle="solid";c.setAttribute("cellPadding","8");for(var d=0;d<a;d++)for(var e=c.insertRow(d),f=0;f<b;f++)e.insertCell(-1);return c}(5,5);a.firstChild.appendChild(p);var q=document.createElement("div");q.style.padding="4px";q.innerHTML=
"1x1";a.firstChild.appendChild(q);mxEvent.addGestureListeners(p,null,null,mxUtils.bind(this,function(a){var c=e(a);null!=h&&null!=k&&c&&(b(a,k.sectionRowIndex+1,h.cellIndex+1,g.checked,m.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(p,"mouseover",e)};
-Menus.prototype.edgeStyleChange=function(a,b,c,d,f,e,l,k){return this.showIconOnly(a.addItem(b,k,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;a.stopEditing(!1);a.getModel().beginUpdate();try{for(var b=a.getSelectionCells(),e=[],f=0;f<b.length;f++){var k=b[f];if(a.getModel().isEdge(k)){if(l){var q=a.getCellGeometry(k);null!=q&&(q=q.clone(),q.points=null,a.getModel().setGeometry(k,q))}for(var t=0;t<c.length;t++)a.setCellStyles(c[t],d[t],[k]);e.push(k)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
+Menus.prototype.edgeStyleChange=function(a,b,c,d,f,e,l,k){return this.showIconOnly(a.addItem(b,k,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;a.stopEditing(!1);a.getModel().beginUpdate();try{for(var b=a.getSelectionCells(),e=[],f=0;f<b.length;f++){var k=b[f];if(a.getModel().isEdge(k)){if(l){var q=a.getCellGeometry(k);null!=q&&(q=q.clone(),q.points=null,a.getModel().setGeometry(k,q))}for(var r=0;r<c.length;r++)a.setCellStyles(c[r],d[r],[k]);e.push(k)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
"keys",c,"values",d,"cells",e))}finally{a.getModel().endUpdate()}}),e,f))};Menus.prototype.showIconOnly=function(a){var b=a.getElementsByTagName("td");for(i=0;i<b.length;i++)"mxPopupMenuItem"==b[i].getAttribute("class")&&(b[i].style.display="none");return a};
Menus.prototype.styleChange=function(a,b,c,d,f,e,l,k,h){var g=this.createStyleChangeFunction(c,d);a=a.addItem(b,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;null!=l&&a.cellEditor.isContentEditing()?l():g(k)}),e,f);h&&this.showIconOnly(a);return a};
Menus.prototype.createStyleChangeFunction=function(a,b){return mxUtils.bind(this,function(c){var d=this.editorUi.editor.graph;d.stopEditing(!1);d.getModel().beginUpdate();try{for(var f=d.getEditableCells(d.getSelectionCells()),e=!1,l=0;l<a.length;l++)if(d.setCellStyles(a[l],b[l],f),a[l]==mxConstants.STYLE_ALIGN&&d.updateLabelElements(f,function(a){a.removeAttribute("align");a.style.textAlign=null}),a[l]==mxConstants.STYLE_FONTFAMILY||"fontSource"==a[l])e=!0;if(e)for(e=0;e<f.length;e++)0==d.model.getChildCount(f[e])&&
@@ -3711,53 +3715,53 @@ this.init=function(){mxClient.IS_TOUCH||l.focus()};var h=new mxJSColor.color(l);
"url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor="#"+a;var d=this.colorNames[a.toUpperCase()];null!=d&&b.setAttribute("title",d)}q.appendChild(b);null!=a&&(b.style.cursor="pointer",mxEvent.addListener(b,"click",function(){"none"==a?(h.fromString("ffffff"),l.value="none"):h.fromString(a)}),mxEvent.addListener(b,"dblclick",f))})(a[p*b+r]);m.appendChild(q)}d&&(a=document.createElement("td"),a.setAttribute("title",mxResources.get("reset")),a.style.border="1px solid black",a.style.padding=
"0px",a.style.width="16px",a.style.height="16px",a.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')",a.style.backgroundPosition="center center",a.style.backgroundRepeat="no-repeat",a.style.cursor="pointer",q.appendChild(a),mxEvent.addListener(a,"click",function(){ColorDialog.resetRecentColors();k.parentNode.replaceChild(e(),k)}));g.appendChild(k);return k});c.appendChild(l);if(mxClient.IS_IE||mxClient.IS_IE11)l.style.width="216px";else{l.style.width="182px";var n=document.createElement("input");
n.setAttribute("type","color");n.style.visibility="hidden";n.style.width="0px";n.style.height="0px";n.style.border="none";n.style.marginLeft="2px";c.style.whiteSpace="nowrap";c.appendChild(n);c.appendChild(mxUtils.button("...",function(){document.activeElement==n?l.focus():(n.value="#"+l.value,n.click())}));mxEvent.addListener(n,"input",function(){h.fromString(n.value.substring(1))})}mxUtils.br(c);e();var p=m(this.presetColors);p.style.marginBottom="8px";p=m(this.defaultColors);p.style.marginBottom=
-"16px";c.appendChild(g);p=document.createElement("div");p.style.textAlign="right";p.style.whiteSpace="nowrap";var q=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d()});q.className="geBtn";a.editor.cancelFirst&&p.appendChild(q);var t=mxUtils.button(mxResources.get("apply"),f);t.className="geBtn gePrimaryBtn";p.appendChild(t);a.editor.cancelFirst||p.appendChild(q);null!=b&&("none"==b?(h.fromString("ffffff"),l.value="none"):h.fromString(b));c.appendChild(p);this.picker=
+"16px";c.appendChild(g);p=document.createElement("div");p.style.textAlign="right";p.style.whiteSpace="nowrap";var q=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d()});q.className="geBtn";a.editor.cancelFirst&&p.appendChild(q);var r=mxUtils.button(mxResources.get("apply"),f);r.className="geBtn gePrimaryBtn";p.appendChild(r);a.editor.cancelFirst||p.appendChild(q);null!=b&&("none"==b?(h.fromString("ffffff"),l.value="none"):h.fromString(b));c.appendChild(p);this.picker=
h;this.colorInput=l;mxEvent.addListener(c,"keydown",function(b){27==b.keyCode&&(a.hideDialog(),null!=d&&d(),mxEvent.consume(b))});this.container=c};ColorDialog.prototype.presetColors="E6D0DE CDA2BE B5739D E1D5E7 C3ABD0 A680B8 D4E1F5 A9C4EB 7EA6E0 D5E8D4 9AC7BF 67AB9F D5E8D4 B9E0A5 97D077 FFF2CC FFE599 FFD966 FFF4C3 FFCE9F FFB570 F8CECC F19C99 EA6B66".split(" ");ColorDialog.prototype.colorNames={};ColorDialog.prototype.defaultColors="none FFFFFF E6E6E6 CCCCCC B3B3B3 999999 808080 666666 4D4D4D 333333 1A1A1A 000000 FFCCCC FFE6CC FFFFCC E6FFCC CCFFCC CCFFE6 CCFFFF CCE5FF CCCCFF E5CCFF FFCCFF FFCCE6 FF9999 FFCC99 FFFF99 CCFF99 99FF99 99FFCC 99FFFF 99CCFF 9999FF CC99FF FF99FF FF99CC FF6666 FFB366 FFFF66 B3FF66 66FF66 66FFB3 66FFFF 66B2FF 6666FF B266FF FF66FF FF66B3 FF3333 FF9933 FFFF33 99FF33 33FF33 33FF99 33FFFF 3399FF 3333FF 9933FF FF33FF FF3399 FF0000 FF8000 FFFF00 80FF00 00FF00 00FF80 00FFFF 007FFF 0000FF 7F00FF FF00FF FF0080 CC0000 CC6600 CCCC00 66CC00 00CC00 00CC66 00CCCC 0066CC 0000CC 6600CC CC00CC CC0066 990000 994C00 999900 4D9900 009900 00994D 009999 004C99 000099 4C0099 990099 99004D 660000 663300 666600 336600 006600 006633 006666 003366 000066 330066 660066 660033 330000 331A00 333300 1A3300 003300 00331A 003333 001933 000033 190033 330033 33001A".split(" ");
ColorDialog.prototype.createApplyFunction=function(){return mxUtils.bind(this,function(a){var b=this.editorUi.editor.graph;b.getModel().beginUpdate();try{b.setCellStyles(this.currentColorKey,a),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[this.currentColorKey],"values",[a],"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}})};ColorDialog.recentColors=[];
ColorDialog.addRecentColor=function(a,b){null!=a&&(mxUtils.remove(a,ColorDialog.recentColors),ColorDialog.recentColors.splice(0,0,a),ColorDialog.recentColors.length>=b&&ColorDialog.recentColors.pop())};ColorDialog.resetRecentColors=function(){ColorDialog.recentColors=[]};
var AboutDialog=function(a){var b=document.createElement("div");b.setAttribute("align","center");var c=document.createElement("h3");mxUtils.write(c,mxResources.get("about")+" GraphEditor");b.appendChild(c);c=document.createElement("img");c.style.border="0px";c.setAttribute("width","176");c.setAttribute("width","151");c.setAttribute("src",IMAGE_PATH+"/logo.png");b.appendChild(c);mxUtils.br(b);mxUtils.write(b,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(b);c=document.createElement("a");c.setAttribute("href",
-"http://www.jgraph.com/");c.setAttribute("target","_blank");mxUtils.write(c,"www.jgraph.com");b.appendChild(c);mxUtils.br(b);mxUtils.br(b);c=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});c.className="geBtn gePrimaryBtn";b.appendChild(c);this.container=b},TextareaDialog=function(a,b,c,d,f,e,l,k,h,g,m,n,p,q,t){l=null!=l?l:300;k=null!=k?k:120;g=null!=g?g:!1;var u,r,x=document.createElement("table"),y=document.createElement("tbody");u=document.createElement("tr");r=document.createElement("td");
-r.style.fontSize="10pt";mxUtils.write(r,b);null!=t&&r.appendChild(t);u.appendChild(r);y.appendChild(u);u=document.createElement("tr");r=document.createElement("td");var w=document.createElement("textarea");m&&w.setAttribute("wrap","off");w.setAttribute("spellcheck","false");w.setAttribute("autocorrect","off");w.setAttribute("autocomplete","off");w.setAttribute("autocapitalize","off");mxUtils.write(w,c||"");w.style.resize="none";w.style.width=l+"px";w.style.height=k+"px";this.textarea=w;this.init=
-function(){w.focus();w.scrollTop=0};r.appendChild(w);u.appendChild(r);y.appendChild(u);u=document.createElement("tr");r=document.createElement("td");r.style.paddingTop="14px";r.style.whiteSpace="nowrap";r.setAttribute("align","right");null!=p&&(b=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(p)}),b.className="geBtn",r.appendChild(b));if(null!=q)for(b=0;b<q.length;b++)(function(a,b,c){a=mxUtils.button(a,function(a){b(a,w)});null!=c&&a.setAttribute("title",c);a.className=
-"geBtn";r.appendChild(a)})(q[b][0],q[b][1],q[b][2]);e=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f()});e.setAttribute("title","Escape");e.className="geBtn";a.editor.cancelFirst&&r.appendChild(e);null!=h&&h(r,w);if(null!=d){var F=mxUtils.button(n||mxResources.get("apply"),function(){g||a.hideDialog();d(w.value)});F.setAttribute("title","Ctrl+Enter");F.className="geBtn gePrimaryBtn";r.appendChild(F);mxEvent.addListener(w,"keypress",function(a){13==a.keyCode&&mxEvent.isControlDown(a)&&
-F.click()})}a.editor.cancelFirst||r.appendChild(e);u.appendChild(r);y.appendChild(u);x.appendChild(y);this.container=x},EditDiagramDialog=function(a){var b=document.createElement("div");b.style.textAlign="right";var c=document.createElement("textarea");c.setAttribute("wrap","off");c.setAttribute("spellcheck","false");c.setAttribute("autocorrect","off");c.setAttribute("autocomplete","off");c.setAttribute("autocapitalize","off");c.style.overflow="auto";c.style.resize="none";c.style.width="600px";c.style.height=
-"360px";c.style.marginBottom="16px";c.value=mxUtils.getPrettyXml(a.editor.getGraphXml());b.appendChild(c);this.init=function(){c.focus()};Graph.fileSupport&&(c.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),c.addEventListener("drop",function(b){b.stopPropagation();b.preventDefault();if(0<b.dataTransfer.files.length){b=b.dataTransfer.files[0];var d=new FileReader;d.onload=function(a){c.value=a.target.result};d.readAsText(b)}else c.value=a.extractGraphModelFromEvent(b)},
-!1));var d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});d.className="geBtn";a.editor.cancelFirst&&b.appendChild(d);var f=document.createElement("select");f.style.width="180px";f.className="geBtn";if(a.editor.graph.isEnabled()){var e=document.createElement("option");e.setAttribute("value","replace");mxUtils.write(e,mxResources.get("replaceExistingDrawing"));f.appendChild(e)}e=document.createElement("option");e.setAttribute("value","new");mxUtils.write(e,mxResources.get("openInNewWindow"));
-EditDiagramDialog.showNewWindowOption&&f.appendChild(e);a.editor.graph.isEnabled()&&(e=document.createElement("option"),e.setAttribute("value","import"),mxUtils.write(e,mxResources.get("addToExistingDrawing")),f.appendChild(e));b.appendChild(f);e=mxUtils.button(mxResources.get("ok"),function(){var b=Graph.zapGremlins(mxUtils.trim(c.value)),d=null;if("new"==f.value)a.hideDialog(),a.editor.editAsNew(b);else if("replace"==f.value){a.editor.graph.model.beginUpdate();try{a.editor.setGraphXml(mxUtils.parseXml(b).documentElement),
-a.hideDialog()}catch(n){d=n}finally{a.editor.graph.model.endUpdate()}}else if("import"==f.value){a.editor.graph.model.beginUpdate();try{var e=mxUtils.parseXml(b),g=new mxGraphModel;(new mxCodec(e)).decode(e.documentElement,g);var m=g.getChildren(g.getChildAt(g.getRoot(),0));a.editor.graph.setSelectionCells(a.editor.graph.importCells(m));a.hideDialog()}catch(n){d=n}finally{a.editor.graph.model.endUpdate()}}null!=d&&mxUtils.alert(d.message)});e.className="geBtn gePrimaryBtn";b.appendChild(e);a.editor.cancelFirst||
-b.appendChild(d);this.container=b};EditDiagramDialog.showNewWindowOption=!0;
-var ExportDialog=function(a){function b(){var a=m.value,b=a.lastIndexOf(".");m.value=0<b?a.substring(0,b+1)+n.value:a+"."+n.value;"xml"===n.value?(p.setAttribute("disabled","true"),q.setAttribute("disabled","true"),t.setAttribute("disabled","true"),F.setAttribute("disabled","true")):(p.removeAttribute("disabled"),q.removeAttribute("disabled"),t.removeAttribute("disabled"),F.removeAttribute("disabled"));"png"===n.value||"svg"===n.value||"pdf"===n.value?y.removeAttribute("disabled"):y.setAttribute("disabled",
-"disabled");"png"===n.value||"jpg"===n.value||"pdf"===n.value?w.removeAttribute("disabled"):w.setAttribute("disabled","disabled");"png"===n.value?(u.removeAttribute("disabled"),r.removeAttribute("disabled")):(u.setAttribute("disabled","disabled"),r.setAttribute("disabled","disabled"))}function c(){q.style.backgroundColor=q.value*t.value>MAX_AREA||0>=q.value?"red":"";t.style.backgroundColor=q.value*t.value>MAX_AREA||0>=t.value?"red":""}var d=a.editor.graph,f=d.getGraphBounds(),e=d.view.scale,l=Math.ceil(f.width/
+"http://www.jgraph.com/");c.setAttribute("target","_blank");mxUtils.write(c,"www.jgraph.com");b.appendChild(c);mxUtils.br(b);mxUtils.br(b);c=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});c.className="geBtn gePrimaryBtn";b.appendChild(c);this.container=b},TextareaDialog=function(a,b,c,d,f,e,l,k,h,g,m,n,p,q,r){g=null!=g?g:!1;l=document.createElement("div");l.style.position="absolute";l.style.top="20px";l.style.bottom="20px";l.style.left="20px";l.style.right="20px";k=document.createElement("div");
+k.style.position="absolute";k.style.left="0px";k.style.right="0px";var u=k.cloneNode(!1),t=k.cloneNode(!1);k.style.top="0px";k.style.height="20px";u.style.top="20px";u.style.bottom="64px";t.style.bottom="0px";t.style.height="60px";t.style.textAlign="center";mxUtils.write(k,b);l.appendChild(k);l.appendChild(u);l.appendChild(t);null!=r&&k.appendChild(r);var w=document.createElement("textarea");m&&w.setAttribute("wrap","off");w.setAttribute("spellcheck","false");w.setAttribute("autocorrect","off");w.setAttribute("autocomplete",
+"off");w.setAttribute("autocapitalize","off");mxUtils.write(w,c||"");w.style.resize="none";w.style.outline="none";w.style.position="absolute";w.style.boxSizing="border-box";w.style.top="0px";w.style.left="0px";w.style.height="100%";w.style.width="100%";this.textarea=w;this.init=function(){w.focus();w.scrollTop=0};u.appendChild(w);null!=p&&(b=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(p)}),b.className="geBtn",t.appendChild(b));if(null!=q)for(b=0;b<q.length;b++)(function(a,
+b,c){a=mxUtils.button(a,function(a){b(a,w)});null!=c&&a.setAttribute("title",c);a.className="geBtn";t.appendChild(a)})(q[b][0],q[b][1],q[b][2]);e=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f()});e.setAttribute("title","Escape");e.className="geBtn";a.editor.cancelFirst&&t.appendChild(e);null!=h&&h(t,w);if(null!=d){var x=mxUtils.button(n||mxResources.get("apply"),function(){g||a.hideDialog();d(w.value)});x.setAttribute("title","Ctrl+Enter");x.className="geBtn gePrimaryBtn";
+t.appendChild(x);mxEvent.addListener(w,"keypress",function(a){13==a.keyCode&&mxEvent.isControlDown(a)&&x.click()})}a.editor.cancelFirst||t.appendChild(e);this.container=l},EditDiagramDialog=function(a){var b=document.createElement("div");b.style.textAlign="right";var c=document.createElement("textarea");c.setAttribute("wrap","off");c.setAttribute("spellcheck","false");c.setAttribute("autocorrect","off");c.setAttribute("autocomplete","off");c.setAttribute("autocapitalize","off");c.style.overflow="auto";
+c.style.resize="none";c.style.width="600px";c.style.height="360px";c.style.marginBottom="16px";c.value=mxUtils.getPrettyXml(a.editor.getGraphXml());b.appendChild(c);this.init=function(){c.focus()};Graph.fileSupport&&(c.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),c.addEventListener("drop",function(b){b.stopPropagation();b.preventDefault();if(0<b.dataTransfer.files.length){b=b.dataTransfer.files[0];var d=new FileReader;d.onload=function(a){c.value=a.target.result};
+d.readAsText(b)}else c.value=a.extractGraphModelFromEvent(b)},!1));var d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});d.className="geBtn";a.editor.cancelFirst&&b.appendChild(d);var f=document.createElement("select");f.style.width="180px";f.className="geBtn";if(a.editor.graph.isEnabled()){var e=document.createElement("option");e.setAttribute("value","replace");mxUtils.write(e,mxResources.get("replaceExistingDrawing"));f.appendChild(e)}e=document.createElement("option");e.setAttribute("value",
+"new");mxUtils.write(e,mxResources.get("openInNewWindow"));EditDiagramDialog.showNewWindowOption&&f.appendChild(e);a.editor.graph.isEnabled()&&(e=document.createElement("option"),e.setAttribute("value","import"),mxUtils.write(e,mxResources.get("addToExistingDrawing")),f.appendChild(e));b.appendChild(f);e=mxUtils.button(mxResources.get("ok"),function(){var b=Graph.zapGremlins(mxUtils.trim(c.value)),d=null;if("new"==f.value)a.hideDialog(),a.editor.editAsNew(b);else if("replace"==f.value){a.editor.graph.model.beginUpdate();
+try{a.editor.setGraphXml(mxUtils.parseXml(b).documentElement),a.hideDialog()}catch(n){d=n}finally{a.editor.graph.model.endUpdate()}}else if("import"==f.value){a.editor.graph.model.beginUpdate();try{var e=mxUtils.parseXml(b),g=new mxGraphModel;(new mxCodec(e)).decode(e.documentElement,g);var m=g.getChildren(g.getChildAt(g.getRoot(),0));a.editor.graph.setSelectionCells(a.editor.graph.importCells(m));a.hideDialog()}catch(n){d=n}finally{a.editor.graph.model.endUpdate()}}null!=d&&mxUtils.alert(d.message)});
+e.className="geBtn gePrimaryBtn";b.appendChild(e);a.editor.cancelFirst||b.appendChild(d);this.container=b};EditDiagramDialog.showNewWindowOption=!0;
+var ExportDialog=function(a){function b(){var a=m.value,b=a.lastIndexOf(".");m.value=0<b?a.substring(0,b+1)+n.value:a+"."+n.value;"xml"===n.value?(p.setAttribute("disabled","true"),q.setAttribute("disabled","true"),r.setAttribute("disabled","true"),F.setAttribute("disabled","true")):(p.removeAttribute("disabled"),q.removeAttribute("disabled"),r.removeAttribute("disabled"),F.removeAttribute("disabled"));"png"===n.value||"svg"===n.value||"pdf"===n.value?x.removeAttribute("disabled"):x.setAttribute("disabled",
+"disabled");"png"===n.value||"jpg"===n.value||"pdf"===n.value?y.removeAttribute("disabled"):y.setAttribute("disabled","disabled");"png"===n.value?(u.removeAttribute("disabled"),t.removeAttribute("disabled")):(u.setAttribute("disabled","disabled"),t.setAttribute("disabled","disabled"))}function c(){q.style.backgroundColor=q.value*r.value>MAX_AREA||0>=q.value?"red":"";r.style.backgroundColor=q.value*r.value>MAX_AREA||0>=r.value?"red":""}var d=a.editor.graph,f=d.getGraphBounds(),e=d.view.scale,l=Math.ceil(f.width/
e),k=Math.ceil(f.height/e),h,e=document.createElement("table"),g=document.createElement("tbody");e.setAttribute("cellpadding",mxClient.IS_SF?"0":"2");f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";h.style.width="100px";mxUtils.write(h,mxResources.get("filename")+":");f.appendChild(h);var m=document.createElement("input");m.setAttribute("value",a.editor.getOrCreateFilename());m.style.width="180px";h=document.createElement("td");h.appendChild(m);f.appendChild(h);
g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("format")+":");f.appendChild(h);var n=document.createElement("select");n.style.width="180px";h=document.createElement("option");h.setAttribute("value","png");mxUtils.write(h,mxResources.get("formatPng"));n.appendChild(h);h=document.createElement("option");ExportDialog.showGifOption&&(h.setAttribute("value","gif"),mxUtils.write(h,mxResources.get("formatGif")),n.appendChild(h));
h=document.createElement("option");h.setAttribute("value","jpg");mxUtils.write(h,mxResources.get("formatJpg"));n.appendChild(h);h=document.createElement("option");h.setAttribute("value","pdf");mxUtils.write(h,mxResources.get("formatPdf"));n.appendChild(h);h=document.createElement("option");h.setAttribute("value","svg");mxUtils.write(h,mxResources.get("formatSvg"));n.appendChild(h);ExportDialog.showXmlOption&&(h=document.createElement("option"),h.setAttribute("value","xml"),mxUtils.write(h,mxResources.get("formatXml")),
n.appendChild(h));h=document.createElement("td");h.appendChild(n);f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("zoom")+" (%):");f.appendChild(h);var p=document.createElement("input");p.setAttribute("type","number");p.setAttribute("value","100");p.style.width="180px";h=document.createElement("td");h.appendChild(p);f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");
-h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("width")+":");f.appendChild(h);var q=document.createElement("input");q.setAttribute("value",l);q.style.width="180px";h=document.createElement("td");h.appendChild(q);f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("height")+":");f.appendChild(h);var t=document.createElement("input");t.setAttribute("value",k);t.style.width="180px";h=document.createElement("td");
-h.appendChild(t);f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("dpi")+":");f.appendChild(h);var u=document.createElement("select");u.style.width="180px";h=document.createElement("option");h.setAttribute("value","100");mxUtils.write(h,"100dpi");u.appendChild(h);h=document.createElement("option");h.setAttribute("value","200");mxUtils.write(h,"200dpi");u.appendChild(h);h=document.createElement("option");
-h.setAttribute("value","300");mxUtils.write(h,"300dpi");u.appendChild(h);h=document.createElement("option");h.setAttribute("value","400");mxUtils.write(h,"400dpi");u.appendChild(h);h=document.createElement("option");h.setAttribute("value","custom");mxUtils.write(h,mxResources.get("custom"));u.appendChild(h);var r=document.createElement("input");r.style.width="180px";r.style.display="none";r.setAttribute("value","100");r.setAttribute("type","number");r.setAttribute("min","50");r.setAttribute("step",
-"50");var x=!1;mxEvent.addListener(u,"change",function(){"custom"==this.value?(this.style.display="none",r.style.display="",r.focus()):(r.value=this.value,x||(p.value=this.value))});mxEvent.addListener(r,"change",function(){var a=parseInt(r.value);isNaN(a)||0>=a?r.style.backgroundColor="red":(r.style.backgroundColor="",x||(p.value=a))});h=document.createElement("td");h.appendChild(u);h.appendChild(r);f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize=
-"10pt";mxUtils.write(h,mxResources.get("background")+":");f.appendChild(h);var y=document.createElement("input");y.setAttribute("type","checkbox");y.checked=null==d.background||d.background==mxConstants.NONE;h=document.createElement("td");h.appendChild(y);mxUtils.write(h,mxResources.get("transparent"));f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("grid")+":");f.appendChild(h);var w=document.createElement("input");
-w.setAttribute("type","checkbox");w.checked=!1;h=document.createElement("td");h.appendChild(w);f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("borderWidth")+":");f.appendChild(h);var F=document.createElement("input");F.setAttribute("type","number");F.setAttribute("value",ExportDialog.lastBorderValue);F.style.width="180px";h=document.createElement("td");h.appendChild(F);f.appendChild(h);g.appendChild(f);
-e.appendChild(g);mxEvent.addListener(n,"change",b);b();mxEvent.addListener(p,"change",function(){x=!0;var a=Math.max(0,parseFloat(p.value)||100)/100;p.value=parseFloat((100*a).toFixed(2));0<l?(q.value=Math.floor(l*a),t.value=Math.floor(k*a)):(p.value="100",q.value=l,t.value=k);c()});mxEvent.addListener(q,"change",function(){var a=parseInt(q.value)/l;0<a?(p.value=parseFloat((100*a).toFixed(2)),t.value=Math.floor(k*a)):(p.value="100",q.value=l,t.value=k);c()});mxEvent.addListener(t,"change",function(){var a=
-parseInt(t.value)/k;0<a?(p.value=parseFloat((100*a).toFixed(2)),q.value=Math.floor(l*a)):(p.value="100",q.value=l,t.value=k);c()});f=document.createElement("tr");h=document.createElement("td");h.setAttribute("align","right");h.style.paddingTop="22px";h.colSpan=2;var H=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(p.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var b=m.value,c=n.value,e=Math.max(0,parseFloat(p.value)||100)/100,f=Math.max(0,parseInt(F.value)),
-g=d.background,h=Math.max(1,parseInt(r.value));if(("svg"==c||"png"==c||"pdf"==c)&&y.checked)g=null;else if(null==g||g==mxConstants.NONE)g="#ffffff";ExportDialog.lastBorderValue=f;ExportDialog.exportFile(a,b,c,g,e,f,h,w.checked)}}));H.className="geBtn gePrimaryBtn";var C=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});C.className="geBtn";a.editor.cancelFirst?(h.appendChild(C),h.appendChild(H)):(h.appendChild(H),h.appendChild(C));f.appendChild(h);g.appendChild(f);e.appendChild(g);
+h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("width")+":");f.appendChild(h);var q=document.createElement("input");q.setAttribute("value",l);q.style.width="180px";h=document.createElement("td");h.appendChild(q);f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("height")+":");f.appendChild(h);var r=document.createElement("input");r.setAttribute("value",k);r.style.width="180px";h=document.createElement("td");
+h.appendChild(r);f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("dpi")+":");f.appendChild(h);var u=document.createElement("select");u.style.width="180px";h=document.createElement("option");h.setAttribute("value","100");mxUtils.write(h,"100dpi");u.appendChild(h);h=document.createElement("option");h.setAttribute("value","200");mxUtils.write(h,"200dpi");u.appendChild(h);h=document.createElement("option");
+h.setAttribute("value","300");mxUtils.write(h,"300dpi");u.appendChild(h);h=document.createElement("option");h.setAttribute("value","400");mxUtils.write(h,"400dpi");u.appendChild(h);h=document.createElement("option");h.setAttribute("value","custom");mxUtils.write(h,mxResources.get("custom"));u.appendChild(h);var t=document.createElement("input");t.style.width="180px";t.style.display="none";t.setAttribute("value","100");t.setAttribute("type","number");t.setAttribute("min","50");t.setAttribute("step",
+"50");var w=!1;mxEvent.addListener(u,"change",function(){"custom"==this.value?(this.style.display="none",t.style.display="",t.focus()):(t.value=this.value,w||(p.value=this.value))});mxEvent.addListener(t,"change",function(){var a=parseInt(t.value);isNaN(a)||0>=a?t.style.backgroundColor="red":(t.style.backgroundColor="",w||(p.value=a))});h=document.createElement("td");h.appendChild(u);h.appendChild(t);f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize=
+"10pt";mxUtils.write(h,mxResources.get("background")+":");f.appendChild(h);var x=document.createElement("input");x.setAttribute("type","checkbox");x.checked=null==d.background||d.background==mxConstants.NONE;h=document.createElement("td");h.appendChild(x);mxUtils.write(h,mxResources.get("transparent"));f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("grid")+":");f.appendChild(h);var y=document.createElement("input");
+y.setAttribute("type","checkbox");y.checked=!1;h=document.createElement("td");h.appendChild(y);f.appendChild(h);g.appendChild(f);f=document.createElement("tr");h=document.createElement("td");h.style.fontSize="10pt";mxUtils.write(h,mxResources.get("borderWidth")+":");f.appendChild(h);var F=document.createElement("input");F.setAttribute("type","number");F.setAttribute("value",ExportDialog.lastBorderValue);F.style.width="180px";h=document.createElement("td");h.appendChild(F);f.appendChild(h);g.appendChild(f);
+e.appendChild(g);mxEvent.addListener(n,"change",b);b();mxEvent.addListener(p,"change",function(){w=!0;var a=Math.max(0,parseFloat(p.value)||100)/100;p.value=parseFloat((100*a).toFixed(2));0<l?(q.value=Math.floor(l*a),r.value=Math.floor(k*a)):(p.value="100",q.value=l,r.value=k);c()});mxEvent.addListener(q,"change",function(){var a=parseInt(q.value)/l;0<a?(p.value=parseFloat((100*a).toFixed(2)),r.value=Math.floor(k*a)):(p.value="100",q.value=l,r.value=k);c()});mxEvent.addListener(r,"change",function(){var a=
+parseInt(r.value)/k;0<a?(p.value=parseFloat((100*a).toFixed(2)),q.value=Math.floor(l*a)):(p.value="100",q.value=l,r.value=k);c()});f=document.createElement("tr");h=document.createElement("td");h.setAttribute("align","right");h.style.paddingTop="22px";h.colSpan=2;var H=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(p.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var b=m.value,c=n.value,e=Math.max(0,parseFloat(p.value)||100)/100,f=Math.max(0,parseInt(F.value)),
+g=d.background,h=Math.max(1,parseInt(t.value));if(("svg"==c||"png"==c||"pdf"==c)&&x.checked)g=null;else if(null==g||g==mxConstants.NONE)g="#ffffff";ExportDialog.lastBorderValue=f;ExportDialog.exportFile(a,b,c,g,e,f,h,y.checked)}}));H.className="geBtn gePrimaryBtn";var C=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});C.className="geBtn";a.editor.cancelFirst?(h.appendChild(C),h.appendChild(H)):(h.appendChild(H),h.appendChild(C));f.appendChild(h);g.appendChild(f);e.appendChild(g);
this.container=e};ExportDialog.lastBorderValue=0;ExportDialog.showGifOption=!0;ExportDialog.showXmlOption=!0;
ExportDialog.exportFile=function(a,b,c,d,f,e,l,k){k=a.editor.graph;if("xml"==c)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),b,c);else if("svg"==c)ExportDialog.saveLocalFile(a,mxUtils.getXml(k.getSvg(d,f,e)),b,c);else{var h=k.getGraphBounds(),g=mxUtils.createXmlDocument(),m=g.createElement("output");g.appendChild(m);g=new mxXmlCanvas2D(m);g.translate(Math.floor((e/f-h.x)/k.view.scale),Math.floor((e/f-h.y)/k.view.scale));g.scale(f/k.view.scale);(new mxImageExport).drawState(k.getView().getState(k.model.root),
g);m="xml="+encodeURIComponent(mxUtils.getXml(m));g=Math.ceil(h.width*f/k.view.scale+2*e);f=Math.ceil(h.height*f/k.view.scale+2*e);m.length<=MAX_REQUEST_SIZE&&g*f<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+c+"&filename="+encodeURIComponent(b)+"&bg="+(null!=d?d:"none")+"&w="+g+"&h="+f+"&"+m+"&dpi="+l)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
ExportDialog.saveLocalFile=function(a,b,c,d){b.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(c)+"&format="+d)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
-var EditDataDialog=function(a,b){function c(){0<w.value.length?F.removeAttribute("disabled"):F.setAttribute("disabled","disabled")}var d=document.createElement("div"),f=a.editor.graph,e=f.getModel().getValue(b);if(!mxUtils.isNode(e)){var l=mxUtils.createXmlDocument().createElement("object");l.setAttribute("label",e||"");e=l}var k={};try{var h=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(b),"metaData",null);null!=h&&(k=JSON.parse(h))}catch(C){}var g=new mxForm("properties");g.table.style.width=
-"100%";for(var m=e.attributes,n=[],p=[],q=0,t=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,b):null,u=function(a,b){var c=document.createElement("div");c.style.position="relative";c.style.paddingRight="20px";c.style.boxSizing="border-box";c.style.width="100%";var d=document.createElement("a"),e=mxUtils.createImage(Dialog.prototype.closeImage);e.style.height="9px";e.style.fontSize="9px";e.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";d.className="geButton";d.setAttribute("title",
-mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin="0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<n.length;c++){if(n[c]==a){p[c]=null;g.table.deleteRow(b+(null!=t?1:0));break}null!=p[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},l=function(a,b,c){n[a]=b;p[a]=g.addTextarea(n[q]+":",c,
-2);p[a].style.width="100%";0<c.indexOf("\n")&&p[a].setAttribute("rows","2");u(p[a],b);null!=k[b]&&0==k[b].editable&&p[a].setAttribute("disabled","disabled")},h=[],r=f.getModel().getParent(b)==f.getModel().getRoot(),x=0;x<m.length;x++)!r&&"label"==m[x].nodeName||"placeholders"==m[x].nodeName||h.push({name:m[x].nodeName,value:m[x].nodeValue});h.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});if(null!=t){m=document.createElement("div");m.style.width="100%";m.style.fontSize="11px";m.style.textAlign=
-"center";mxUtils.write(m,t);var y=g.addField(mxResources.get("id")+":",m);mxEvent.addListener(m,"dblclick",function(c){mxEvent.isShiftDown(c)&&(c=new FilenameDialog(a,t,mxResources.get("apply"),mxUtils.bind(this,function(c){null!=c&&0<c.length&&c!=t&&(null==f.getModel().getCell(c)?(f.getModel().cellRemoved(b),b.setId(c),t=c,y.innerHTML=mxUtils.htmlEntities(c),f.getModel().cellAdded(b)):a.handleError({message:mxResources.get("alreadyExst",[c])}))}),mxResources.get("id")),a.showDialog(c.container,300,
-80,!0,!0),c.init())});m.setAttribute("title","Shift+Double Click to Edit ID")}for(x=0;x<h.length;x++)l(q,h[x].name,h[x].value),q++;h=document.createElement("div");h.style.position="absolute";h.style.top="30px";h.style.left="30px";h.style.right="30px";h.style.bottom="80px";h.style.overflowY="auto";h.appendChild(g.table);l=document.createElement("div");l.style.boxSizing="border-box";l.style.paddingRight="160px";l.style.whiteSpace="nowrap";l.style.marginTop="6px";l.style.width="100%";var w=document.createElement("input");
-w.setAttribute("placeholder",mxResources.get("enterPropertyName"));w.setAttribute("type","text");w.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"36":"40");w.style.boxSizing="border-box";w.style.marginLeft="2px";w.style.width="100%";l.appendChild(w);h.appendChild(l);d.appendChild(h);var F=mxUtils.button(mxResources.get("addProperty"),function(){var a=w.value;if(0<a.length&&"label"!=a&&"placeholders"!=a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(n,a);if(0<=b&&null!=p[b])p[b].focus();else{e.cloneNode(!1).setAttribute(a,
-"");0<=b&&(n.splice(b,1),p.splice(b,1));n.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";p.push(c);u(c,a);c.focus()}F.setAttribute("disabled","disabled");w.value=""}catch(G){mxUtils.alert(G)}else mxUtils.alert(mxResources.get("invalidName"))});mxEvent.addListener(w,"keypress",function(a){13==a.keyCode&&F.click()});this.init=function(){0<p.length?p[0].focus():w.focus()};F.setAttribute("title",mxResources.get("addProperty"));F.setAttribute("disabled","disabled");F.style.textOverflow="ellipsis";
+var EditDataDialog=function(a,b){function c(){0<y.value.length?F.removeAttribute("disabled"):F.setAttribute("disabled","disabled")}var d=document.createElement("div"),f=a.editor.graph,e=f.getModel().getValue(b);if(!mxUtils.isNode(e)){var l=mxUtils.createXmlDocument().createElement("object");l.setAttribute("label",e||"");e=l}var k={};try{var h=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(b),"metaData",null);null!=h&&(k=JSON.parse(h))}catch(C){}var g=new mxForm("properties");g.table.style.width=
+"100%";for(var m=e.attributes,n=[],p=[],q=0,r=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,b):null,u=function(a,b){var c=document.createElement("div");c.style.position="relative";c.style.paddingRight="20px";c.style.boxSizing="border-box";c.style.width="100%";var d=document.createElement("a"),e=mxUtils.createImage(Dialog.prototype.closeImage);e.style.height="9px";e.style.fontSize="9px";e.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";d.className="geButton";d.setAttribute("title",
+mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin="0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<n.length;c++){if(n[c]==a){p[c]=null;g.table.deleteRow(b+(null!=r?1:0));break}null!=p[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},l=function(a,b,c){n[a]=b;p[a]=g.addTextarea(n[q]+":",c,
+2);p[a].style.width="100%";0<c.indexOf("\n")&&p[a].setAttribute("rows","2");u(p[a],b);null!=k[b]&&0==k[b].editable&&p[a].setAttribute("disabled","disabled")},h=[],t=f.getModel().getParent(b)==f.getModel().getRoot(),w=0;w<m.length;w++)!t&&"label"==m[w].nodeName||"placeholders"==m[w].nodeName||h.push({name:m[w].nodeName,value:m[w].nodeValue});h.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});if(null!=r){m=document.createElement("div");m.style.width="100%";m.style.fontSize="11px";m.style.textAlign=
+"center";mxUtils.write(m,r);var x=g.addField(mxResources.get("id")+":",m);mxEvent.addListener(m,"dblclick",function(c){mxEvent.isShiftDown(c)&&(c=new FilenameDialog(a,r,mxResources.get("apply"),mxUtils.bind(this,function(c){null!=c&&0<c.length&&c!=r&&(null==f.getModel().getCell(c)?(f.getModel().cellRemoved(b),b.setId(c),r=c,x.innerHTML=mxUtils.htmlEntities(c),f.getModel().cellAdded(b)):a.handleError({message:mxResources.get("alreadyExst",[c])}))}),mxResources.get("id")),a.showDialog(c.container,300,
+80,!0,!0),c.init())});m.setAttribute("title","Shift+Double Click to Edit ID")}for(w=0;w<h.length;w++)l(q,h[w].name,h[w].value),q++;h=document.createElement("div");h.style.position="absolute";h.style.top="30px";h.style.left="30px";h.style.right="30px";h.style.bottom="80px";h.style.overflowY="auto";h.appendChild(g.table);l=document.createElement("div");l.style.boxSizing="border-box";l.style.paddingRight="160px";l.style.whiteSpace="nowrap";l.style.marginTop="6px";l.style.width="100%";var y=document.createElement("input");
+y.setAttribute("placeholder",mxResources.get("enterPropertyName"));y.setAttribute("type","text");y.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"36":"40");y.style.boxSizing="border-box";y.style.marginLeft="2px";y.style.width="100%";l.appendChild(y);h.appendChild(l);d.appendChild(h);var F=mxUtils.button(mxResources.get("addProperty"),function(){var a=y.value;if(0<a.length&&"label"!=a&&"placeholders"!=a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(n,a);if(0<=b&&null!=p[b])p[b].focus();else{e.cloneNode(!1).setAttribute(a,
+"");0<=b&&(n.splice(b,1),p.splice(b,1));n.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";p.push(c);u(c,a);c.focus()}F.setAttribute("disabled","disabled");y.value=""}catch(G){mxUtils.alert(G)}else mxUtils.alert(mxResources.get("invalidName"))});mxEvent.addListener(y,"keypress",function(a){13==a.keyCode&&F.click()});this.init=function(){0<p.length?p[0].focus():y.focus()};F.setAttribute("title",mxResources.get("addProperty"));F.setAttribute("disabled","disabled");F.style.textOverflow="ellipsis";
F.style.position="absolute";F.style.overflow="hidden";F.style.width="144px";F.style.right="0px";F.className="geBtn";l.appendChild(F);h=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});h.setAttribute("title","Escape");h.className="geBtn";var H=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var c=!1,d=0;d<n.length;d++)null==p[d]?e.removeAttribute(n[d]):(e.setAttribute(n[d],p[d].value),c=c||"placeholder"==
-n[d]&&"1"==e.getAttribute("placeholders"));c&&e.removeAttribute("label");f.getModel().setValue(b,e)}catch(z){mxUtils.alert(z)}});H.setAttribute("title","Ctrl+Enter");H.className="geBtn gePrimaryBtn";mxEvent.addListener(d,"keypress",function(a){13==a.keyCode&&mxEvent.isControlDown(a)&&H.click()});mxEvent.addListener(w,"keyup",c);mxEvent.addListener(w,"change",c);l=document.createElement("div");l.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(b)||
-a.editor.graph.getModel().isEdge(b))m=document.createElement("span"),m.style.marginRight="10px",r=document.createElement("input"),r.setAttribute("type","checkbox"),r.style.marginRight="6px","1"==e.getAttribute("placeholders")&&(r.setAttribute("checked","checked"),r.defaultChecked=!0),mxEvent.addListener(r,"click",function(){"1"==e.getAttribute("placeholders")?e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")}),m.appendChild(r),mxUtils.write(m,mxResources.get("placeholders")),null!=
-EditDataDialog.placeholderHelpLink&&(r=document.createElement("a"),r.setAttribute("href",EditDataDialog.placeholderHelpLink),r.setAttribute("title",mxResources.get("help")),r.setAttribute("target","_blank"),r.style.marginLeft="8px",r.style.cursor="help",x=document.createElement("img"),mxUtils.setOpacity(x,50),x.style.height="16px",x.style.width="16px",x.setAttribute("border","0"),x.setAttribute("valign","middle"),x.style.marginTop=mxClient.IS_IE11?"0px":"-4px",x.setAttribute("src",Editor.helpImage),
-r.appendChild(x),m.appendChild(r)),l.appendChild(m);a.editor.cancelFirst?(l.appendChild(h),l.appendChild(H)):(l.appendChild(H),l.appendChild(h));d.appendChild(l);this.container=d};EditDataDialog.getDisplayIdForCell=function(a,b){var c=null;null!=a.editor.graph.getModel().getParent(b)&&(c=b.getId());return c};EditDataDialog.placeholderHelpLink=null;
+n[d]&&"1"==e.getAttribute("placeholders"));c&&e.removeAttribute("label");f.getModel().setValue(b,e)}catch(z){mxUtils.alert(z)}});H.setAttribute("title","Ctrl+Enter");H.className="geBtn gePrimaryBtn";mxEvent.addListener(d,"keypress",function(a){13==a.keyCode&&mxEvent.isControlDown(a)&&H.click()});mxEvent.addListener(y,"keyup",c);mxEvent.addListener(y,"change",c);l=document.createElement("div");l.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(b)||
+a.editor.graph.getModel().isEdge(b))m=document.createElement("span"),m.style.marginRight="10px",t=document.createElement("input"),t.setAttribute("type","checkbox"),t.style.marginRight="6px","1"==e.getAttribute("placeholders")&&(t.setAttribute("checked","checked"),t.defaultChecked=!0),mxEvent.addListener(t,"click",function(){"1"==e.getAttribute("placeholders")?e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")}),m.appendChild(t),mxUtils.write(m,mxResources.get("placeholders")),null!=
+EditDataDialog.placeholderHelpLink&&(t=document.createElement("a"),t.setAttribute("href",EditDataDialog.placeholderHelpLink),t.setAttribute("title",mxResources.get("help")),t.setAttribute("target","_blank"),t.style.marginLeft="8px",t.style.cursor="help",w=document.createElement("img"),mxUtils.setOpacity(w,50),w.style.height="16px",w.style.width="16px",w.setAttribute("border","0"),w.setAttribute("valign","middle"),w.style.marginTop=mxClient.IS_IE11?"0px":"-4px",w.setAttribute("src",Editor.helpImage),
+t.appendChild(w),m.appendChild(t)),l.appendChild(m);a.editor.cancelFirst?(l.appendChild(h),l.appendChild(H)):(l.appendChild(H),l.appendChild(h));d.appendChild(l);this.container=d};EditDataDialog.getDisplayIdForCell=function(a,b){var c=null;null!=a.editor.graph.getModel().getParent(b)&&(c=b.getId());return c};EditDataDialog.placeholderHelpLink=null;
var LinkDialog=function(a,b,c,d){var f=document.createElement("div");mxUtils.write(f,mxResources.get("editLink")+":");var e=document.createElement("div");e.className="geTitle";e.style.backgroundColor="transparent";e.style.borderColor="transparent";e.style.whiteSpace="nowrap";e.style.textOverflow="clip";e.style.cursor="default";e.style.paddingRight="20px";var l=document.createElement("input");l.setAttribute("value",b);l.setAttribute("placeholder","http://www.example.com/");l.setAttribute("type","text");
l.style.marginTop="6px";l.style.width="400px";l.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";l.style.backgroundRepeat="no-repeat";l.style.backgroundPosition="100% 50%";l.style.paddingRight="14px";b=document.createElement("div");b.setAttribute("title",mxResources.get("reset"));b.style.position="relative";b.style.left="-16px";b.style.width="12px";b.style.height="14px";b.style.cursor="pointer";b.style.display="inline-block";b.style.top="3px";b.style.background="url("+IMAGE_PATH+"/transparent.gif)";
mxEvent.addListener(b,"click",function(){l.value="";l.focus()});e.appendChild(l);e.appendChild(b);f.appendChild(e);this.init=function(){l.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?l.select():document.execCommand("selectAll",!1,null)};e=document.createElement("div");e.style.marginTop="18px";e.style.textAlign="right";mxEvent.addListener(l,"keypress",function(b){13==b.keyCode&&(a.hideDialog(),d(l.value))});b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});
@@ -3765,26 +3769,26 @@ b.className="geBtn";a.editor.cancelFirst&&e.appendChild(b);c=mxUtils.button(c,fu
new mxRectangle(0,0,80,80);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-("1"==urlParams.sketch?
3:48)));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var k=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",k);var h=a.createOutline(this.window);this.destroy=function(){mxEvent.removeListener(window,"resize",k);this.window.destroy();h.destroy()};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit();h.setSuspended(!1)}));this.window.addListener(mxEvent.HIDE,
mxUtils.bind(this,function(){h.setSuspended(!0)}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){h.setSuspended(!1)}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){h.setSuspended(!0)}));h.init(l);a.actions.get("zoomIn");a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(a,b){for(var c=!1,d=mxEvent.getSource(a);null!=d;){if(d==h.svg){c=!0;break}d=d.parentNode}c&&(c=e.zoomFactor,null!=a.deltaY&&Math.round(a.deltaY)!=a.deltaY&&(c=1+Math.abs(a.deltaY)/
-20*(c-1)),e.lazyZoom(b,null,null,c),mxEvent.consume(a))})},LayersWindow=function(a,b,c,d,f){function e(b){if(h.isEnabled()&&null!=b){var c=h.convertValueToString(b),c=new FilenameDialog(a,c||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&h.cellLabelChanged(b,a)}),mxResources.get("enterName"));a.showDialog(c.container,300,100,!0,!0);c.init()}}function l(){var a=C.get(h.getLayerForCells(h.getSelectionCells()));null!=a?a.appendChild(D):null!=D.parentNode&&
-D.parentNode.removeChild(D)}function k(){function a(a,b,c,d){var f=document.createElement("div");f.className="geToolbarContainer";C.put(c,f);f.style.overflow="hidden";f.style.position="relative";f.style.padding="4px";f.style.height="22px";f.style.display="block";f.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";f.style.borderWidth="0px 0px 1px 0px";f.style.borderColor="#c3c3c3";f.style.borderStyle="solid";f.style.whiteSpace="nowrap";f.setAttribute("title",b);var g=document.createElement("div");
+20*(c-1)),e.lazyZoom(b,null,null,c),mxEvent.consume(a))})},LayersWindow=function(a,b,c,d,f){function e(b){if(h.isEnabled()&&null!=b){var c=h.convertValueToString(b),c=new FilenameDialog(a,c||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&h.cellLabelChanged(b,a)}),mxResources.get("enterName"));a.showDialog(c.container,300,100,!0,!0);c.init()}}function l(){var a=C.get(h.getLayerForCells(h.getSelectionCells()));null!=a?a.appendChild(E):null!=E.parentNode&&
+E.parentNode.removeChild(E)}function k(){function a(a,b,c,d){var f=document.createElement("div");f.className="geToolbarContainer";C.put(c,f);f.style.overflow="hidden";f.style.position="relative";f.style.padding="4px";f.style.height="22px";f.style.display="block";f.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";f.style.borderWidth="0px 0px 1px 0px";f.style.borderColor="#c3c3c3";f.style.borderStyle="solid";f.style.whiteSpace="nowrap";f.setAttribute("title",b);var g=document.createElement("div");
g.style.display="inline-block";g.style.width="100%";g.style.textOverflow="ellipsis";g.style.overflow="hidden";mxEvent.addListener(f,"dragover",function(b){b.dataTransfer.dropEffect="move";q=a;b.stopPropagation();b.preventDefault()});mxEvent.addListener(f,"dragstart",function(a){p=f;mxClient.IS_FF&&a.dataTransfer.setData("Text","<layer/>")});mxEvent.addListener(f,"dragend",function(a){null!=p&&null!=q&&h.addCell(c,h.model.root,q);q=p=null;a.stopPropagation();a.preventDefault()});var k=document.createElement("img");
k.setAttribute("draggable","false");k.setAttribute("align","top");k.setAttribute("border","0");k.style.width="16px";k.style.padding="0px 6px 0 4px";k.style.marginTop="2px";k.style.cursor="pointer";k.setAttribute("title",mxResources.get(h.model.isVisible(c)?"hide":"show"));h.model.isVisible(c)?(k.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(f,75)):(k.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(f,25));Editor.isDarkMode()&&(k.style.filter="invert(100%)");g.appendChild(k);
mxEvent.addListener(k,"click",function(a){h.model.setVisible(c,!h.model.isVisible(c));mxEvent.consume(a)});k=document.createElement("img");k.setAttribute("draggable","false");k.setAttribute("align","top");k.setAttribute("border","0");k.style.width="16px";k.style.padding="0px 6px 0 0";k.style.marginTop="2px";k.setAttribute("title",mxResources.get("lockUnlock"));var l=h.getCurrentCellStyle(c);"1"==mxUtils.getValue(l,"locked","0")?(k.setAttribute("src",Editor.lockedImage),mxUtils.setOpacity(k,75)):(k.setAttribute("src",
Editor.unlockedImage),mxUtils.setOpacity(k,25));Editor.isDarkMode()&&(k.style.filter="invert(100%)");h.isEnabled()&&(k.style.cursor="pointer");mxEvent.addListener(k,"click",function(a){if(h.isEnabled()){var b=null;h.getModel().beginUpdate();try{b="1"==mxUtils.getValue(l,"locked","0")?null:"1",h.setCellStyles("locked",b,[c])}finally{h.getModel().endUpdate()}"1"==b&&h.removeSelectionCells(h.getModel().getDescendants(c));mxEvent.consume(a)}});g.appendChild(k);k=document.createElement("span");mxUtils.write(k,
b);k.style.display="block";k.style.whiteSpace="nowrap";k.style.overflow="hidden";k.style.textOverflow="ellipsis";k.style.position="absolute";k.style.left="52px";k.style.right="8px";k.style.top="8px";g.appendChild(k);f.appendChild(g);if(h.isEnabled()){if(mxClient.IS_TOUCH||mxClient.IS_POINTER||mxClient.IS_IE&&10>document.documentMode)b=document.createElement("div"),b.style.display="block",b.style.textAlign="right",b.style.whiteSpace="nowrap",b.style.position="absolute",b.style.right="16px",b.style.top=
-"6px",0<a&&(g=document.createElement("a"),g.setAttribute("title",mxResources.get("toBack")),g.className="geButton",g.style.cssFloat="none",g.innerHTML="&#9660;",g.style.width="14px",g.style.height="14px",g.style.fontSize="14px",g.style.margin="0px",g.style.marginTop="-1px",b.appendChild(g),mxEvent.addListener(g,"click",function(b){h.isEnabled()&&h.addCell(c,h.model.root,a-1);mxEvent.consume(b)})),0<=a&&a<t-1&&(g=document.createElement("a"),g.setAttribute("title",mxResources.get("toFront")),g.className=
+"6px",0<a&&(g=document.createElement("a"),g.setAttribute("title",mxResources.get("toBack")),g.className="geButton",g.style.cssFloat="none",g.innerHTML="&#9660;",g.style.width="14px",g.style.height="14px",g.style.fontSize="14px",g.style.margin="0px",g.style.marginTop="-1px",b.appendChild(g),mxEvent.addListener(g,"click",function(b){h.isEnabled()&&h.addCell(c,h.model.root,a-1);mxEvent.consume(b)})),0<=a&&a<r-1&&(g=document.createElement("a"),g.setAttribute("title",mxResources.get("toFront")),g.className=
"geButton",g.style.cssFloat="none",g.innerHTML="&#9650;",g.style.width="14px",g.style.height="14px",g.style.fontSize="14px",g.style.margin="0px",g.style.marginTop="-1px",b.appendChild(g),mxEvent.addListener(g,"click",function(b){h.isEnabled()&&h.addCell(c,h.model.root,a+1);mxEvent.consume(b)})),f.appendChild(b);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&&(f.setAttribute("draggable","true"),f.style.cursor="move")}mxEvent.addListener(f,"dblclick",function(a){var b=mxEvent.getSource(a).nodeName;
-"INPUT"!=b&&"IMG"!=b&&(e(c),mxEvent.consume(a))});h.getDefaultParent()==c&&(f.style.background=Editor.isDarkMode()?"#505759":"#e6eff8",f.style.fontWeight=h.isEnabled()?"bold":"",u=c);mxEvent.addListener(f,"click",function(a){h.isEnabled()&&(h.setDefaultParent(d),h.view.setCurrentRoot(null),mxEvent.isShiftDown(a)&&h.setSelectionCells(c.children),mxEvent.consume(a))});n.appendChild(f)}t=h.model.getChildCount(h.model.root);n.innerHTML="";C.clear();for(var b=t-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,
-h.convertValueToString(c)||mxResources.get("background"),c,c)})(h.model.getChildAt(h.model.root,b));var c=h.convertValueToString(u)||mxResources.get("background");y.setAttribute("title",mxResources.get("removeIt",[c]));H.setAttribute("title",mxResources.get("duplicateIt",[c]));h.isSelectionEmpty()&&(w.className="geButton mxDisabled");l()}var h=a.editor.graph,g=document.createElement("div");g.style.userSelect="none";g.style.background=Editor.isDarkMode()?Dialog.backdropColor:"#fff";g.style.border=
+"INPUT"!=b&&"IMG"!=b&&(e(c),mxEvent.consume(a))});h.getDefaultParent()==c&&(f.style.background=Editor.isDarkMode()?"#505759":"#e6eff8",f.style.fontWeight=h.isEnabled()?"bold":"",u=c);mxEvent.addListener(f,"click",function(a){h.isEnabled()&&(h.setDefaultParent(d),h.view.setCurrentRoot(null),mxEvent.isShiftDown(a)&&h.setSelectionCells(c.children),mxEvent.consume(a))});n.appendChild(f)}r=h.model.getChildCount(h.model.root);n.innerHTML="";C.clear();for(var b=r-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,
+h.convertValueToString(c)||mxResources.get("background"),c,c)})(h.model.getChildAt(h.model.root,b));var c=h.convertValueToString(u)||mxResources.get("background");x.setAttribute("title",mxResources.get("removeIt",[c]));H.setAttribute("title",mxResources.get("duplicateIt",[c]));h.isSelectionEmpty()&&(y.className="geButton mxDisabled");l()}var h=a.editor.graph,g=document.createElement("div");g.style.userSelect="none";g.style.background=Editor.isDarkMode()?Dialog.backdropColor:"#fff";g.style.border=
"1px solid whiteSmoke";g.style.height="100%";g.style.marginBottom="10px";g.style.overflow="auto";var m=EditorUi.compactUi?"26px":"30px",n=document.createElement("div");n.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"#fff";n.style.position="absolute";n.style.overflow="auto";n.style.left="0px";n.style.right="0px";n.style.top="0px";n.style.bottom=parseInt(m)+7+"px";g.appendChild(n);var p=null,q=null;mxEvent.addListener(g,"dragover",function(a){a.dataTransfer.dropEffect="move";q=0;a.stopPropagation();
-a.preventDefault()});mxEvent.addListener(g,"drop",function(a){a.stopPropagation();a.preventDefault()});var t=null,u=null,r=document.createElement("div");r.className="geToolbarContainer";r.style.position="absolute";r.style.bottom="0px";r.style.left="0px";r.style.right="0px";r.style.height=m;r.style.overflow="hidden";r.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";r.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";r.style.borderWidth="1px 0px 0px 0px";r.style.borderColor=
-"#c3c3c3";r.style.borderStyle="solid";r.style.display="block";r.style.whiteSpace="nowrap";var x=document.createElement("a");x.className="geButton";var y=x.cloneNode(!1),m=document.createElement("img");m.setAttribute("border","0");m.setAttribute("width","22");m.setAttribute("src",Editor.trashImage);m.style.opacity="0.9";Editor.isDarkMode()&&(m.style.filter="invert(100%)");y.appendChild(m);mxEvent.addListener(y,"click",function(a){if(h.isEnabled()){h.model.beginUpdate();try{var b=h.model.root.getIndex(u);
-h.removeCells([u],!1);0==h.model.getChildCount(h.model.root)?(h.model.add(h.model.root,new mxCell),h.setDefaultParent(null)):0<b&&b<=h.model.getChildCount(h.model.root)?h.setDefaultParent(h.model.getChildAt(h.model.root,b-1)):h.setDefaultParent(null)}finally{h.model.endUpdate()}}mxEvent.consume(a)});h.isEnabled()||(y.className="geButton mxDisabled");r.appendChild(y);var w=x.cloneNode();w.setAttribute("title",mxUtils.trim(mxResources.get("moveSelectionTo",["..."])));m=m.cloneNode(!1);m.setAttribute("src",
-Editor.verticalDotsImage);w.appendChild(m);mxEvent.addListener(w,"click",function(b){if(h.isEnabled()&&!h.isSelectionEmpty()){var c=mxUtils.getOffset(w);a.showPopupMenu(mxUtils.bind(this,function(a,b){for(var c=t-1;0<=c;c--)mxUtils.bind(this,function(c){var d=a.addItem(h.convertValueToString(c)||mxResources.get("background"),null,mxUtils.bind(this,function(){h.moveCells(h.getSelectionCells(),0,0,!1,c)}),b);1==h.getSelectionCount()&&h.model.isAncestor(c,h.getSelectionCell())&&a.addCheckmark(d,Editor.checkmarkImage)})(h.model.getChildAt(h.model.root,
-c))}),c.x,c.y+w.offsetHeight,b)}});r.appendChild(w);var F=x.cloneNode(!1);F.setAttribute("title",mxResources.get("editData"));m=m.cloneNode(!1);m.setAttribute("src",Editor.editImage);F.appendChild(m);mxEvent.addListener(F,"click",function(b){h.isEnabled()&&a.showDataDialog(u);mxEvent.consume(b)});h.isEnabled()||(F.className="geButton mxDisabled");r.appendChild(F);var H=x.cloneNode(!1);H.setAttribute("title",mxResources.get("duplicate"));m=m.cloneNode(!1);m.setAttribute("src",Editor.duplicateImage);
-H.appendChild(m);mxEvent.addListener(H,"click",function(a){if(h.isEnabled()){a=null;h.model.beginUpdate();try{a=h.cloneCell(u),h.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=h.addCell(a,h.model.root),h.setDefaultParent(a)}finally{h.model.endUpdate()}null==a||h.isCellLocked(a)||h.selectAll(a)}});h.isEnabled()||(H.className="geButton mxDisabled");r.appendChild(H);x=x.cloneNode(!1);x.setAttribute("title",mxResources.get("addLayer"));m=m.cloneNode(!1);m.setAttribute("src",Editor.addImage);
-x.appendChild(m);mxEvent.addListener(x,"click",function(a){if(h.isEnabled()){h.model.beginUpdate();try{var b=h.addCell(new mxCell(mxResources.get("untitledLayer")),h.model.root);h.setDefaultParent(b)}finally{h.model.endUpdate()}}mxEvent.consume(a)});h.isEnabled()||(x.className="geButton mxDisabled");r.appendChild(x);g.appendChild(r);var C=new mxDictionary,D=document.createElement("span");D.setAttribute("title",mxResources.get("selectionOnly"));D.innerHTML="&#8226;";D.style.position="absolute";D.style.fontWeight=
-"bold";D.style.fontSize="16pt";D.style.right="2px";D.style.top="2px";k();h.model.addListener(mxEvent.CHANGE,k);h.addListener("defaultParentChanged",k);h.selectionModel.addListener(mxEvent.CHANGE,function(){h.isSelectionEmpty()?w.className="geButton mxDisabled":w.className="geButton";l()});this.window=new mxWindow(mxResources.get("layers"),g,b,c,d,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,150,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);
+a.preventDefault()});mxEvent.addListener(g,"drop",function(a){a.stopPropagation();a.preventDefault()});var r=null,u=null,t=document.createElement("div");t.className="geToolbarContainer";t.style.position="absolute";t.style.bottom="0px";t.style.left="0px";t.style.right="0px";t.style.height=m;t.style.overflow="hidden";t.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";t.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";t.style.borderWidth="1px 0px 0px 0px";t.style.borderColor=
+"#c3c3c3";t.style.borderStyle="solid";t.style.display="block";t.style.whiteSpace="nowrap";var w=document.createElement("a");w.className="geButton";var x=w.cloneNode(!1),m=document.createElement("img");m.setAttribute("border","0");m.setAttribute("width","22");m.setAttribute("src",Editor.trashImage);m.style.opacity="0.9";Editor.isDarkMode()&&(m.style.filter="invert(100%)");x.appendChild(m);mxEvent.addListener(x,"click",function(a){if(h.isEnabled()){h.model.beginUpdate();try{var b=h.model.root.getIndex(u);
+h.removeCells([u],!1);0==h.model.getChildCount(h.model.root)?(h.model.add(h.model.root,new mxCell),h.setDefaultParent(null)):0<b&&b<=h.model.getChildCount(h.model.root)?h.setDefaultParent(h.model.getChildAt(h.model.root,b-1)):h.setDefaultParent(null)}finally{h.model.endUpdate()}}mxEvent.consume(a)});h.isEnabled()||(x.className="geButton mxDisabled");t.appendChild(x);var y=w.cloneNode();y.setAttribute("title",mxUtils.trim(mxResources.get("moveSelectionTo",["..."])));m=m.cloneNode(!1);m.setAttribute("src",
+Editor.verticalDotsImage);y.appendChild(m);mxEvent.addListener(y,"click",function(b){if(h.isEnabled()&&!h.isSelectionEmpty()){var c=mxUtils.getOffset(y);a.showPopupMenu(mxUtils.bind(this,function(a,b){for(var c=r-1;0<=c;c--)mxUtils.bind(this,function(c){var d=a.addItem(h.convertValueToString(c)||mxResources.get("background"),null,mxUtils.bind(this,function(){h.moveCells(h.getSelectionCells(),0,0,!1,c)}),b);1==h.getSelectionCount()&&h.model.isAncestor(c,h.getSelectionCell())&&a.addCheckmark(d,Editor.checkmarkImage)})(h.model.getChildAt(h.model.root,
+c))}),c.x,c.y+y.offsetHeight,b)}});t.appendChild(y);var F=w.cloneNode(!1);F.setAttribute("title",mxResources.get("editData"));m=m.cloneNode(!1);m.setAttribute("src",Editor.editImage);F.appendChild(m);mxEvent.addListener(F,"click",function(b){h.isEnabled()&&a.showDataDialog(u);mxEvent.consume(b)});h.isEnabled()||(F.className="geButton mxDisabled");t.appendChild(F);var H=w.cloneNode(!1);H.setAttribute("title",mxResources.get("duplicate"));m=m.cloneNode(!1);m.setAttribute("src",Editor.duplicateImage);
+H.appendChild(m);mxEvent.addListener(H,"click",function(a){if(h.isEnabled()){a=null;h.model.beginUpdate();try{a=h.cloneCell(u),h.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=h.addCell(a,h.model.root),h.setDefaultParent(a)}finally{h.model.endUpdate()}null==a||h.isCellLocked(a)||h.selectAll(a)}});h.isEnabled()||(H.className="geButton mxDisabled");t.appendChild(H);w=w.cloneNode(!1);w.setAttribute("title",mxResources.get("addLayer"));m=m.cloneNode(!1);m.setAttribute("src",Editor.addImage);
+w.appendChild(m);mxEvent.addListener(w,"click",function(a){if(h.isEnabled()){h.model.beginUpdate();try{var b=h.addCell(new mxCell(mxResources.get("untitledLayer")),h.model.root);h.setDefaultParent(b)}finally{h.model.endUpdate()}}mxEvent.consume(a)});h.isEnabled()||(w.className="geButton mxDisabled");t.appendChild(w);g.appendChild(t);var C=new mxDictionary,E=document.createElement("span");E.setAttribute("title",mxResources.get("selectionOnly"));E.innerHTML="&#8226;";E.style.position="absolute";E.style.fontWeight=
+"bold";E.style.fontSize="16pt";E.style.right="2px";E.style.top="2px";k();h.model.addListener(mxEvent.CHANGE,k);h.addListener("defaultParentChanged",k);h.selectionModel.addListener(mxEvent.CHANGE,function(){h.isSelectionEmpty()?y.className="geButton mxDisabled":y.className="geButton";l()});this.window=new mxWindow(mxResources.get("layers"),g,b,c,d,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,150,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);
this.window.setClosable(!0);this.window.setVisible(!0);this.init=function(){n.scrollTop=n.scrollHeight-n.clientHeight};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.refreshLayers=k;this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,
Math.min(b,c-this.table.clientHeight-("1"==urlParams.sketch?3:48)));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var z=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",z);this.destroy=function(){mxEvent.removeListener(window,"resize",z);this.window.destroy()}};
(function(){Sidebar.prototype.tagIndex="5V1dV+M6sv01rDvngax0oLvveYQEaGaAziE0PW8sxVYSDbblI9uk6V9/VVWS7ST+kB0zL3etbmIn3ltlfZRKUqkU/rpRLN6MmFJym5yM/8QL/Xnw7yLceXQ03fA3JaOTyfjCQCKZehvu66tErCMW6J9E1M4jlJcFTJWIPP1VIKK1ixj/zML4VBRiTMaf9HOKx8G7/lwy71V/ZJEv8Vv8cKea9KW646tU41nk678/4tK7SZVu5FpC9oz/TDPVnkEPJlsn4wVma1lEnVemGByy6q+M+SXkSmaQ6Vv27gJeBDzyOQDMu1ma5FVEEVBEtuokgQhdyZ62Uv/9qWWoYPRltgx4A3U970/hc6BnIuD+kdI+KbGTcelGce6ec4evOBl/k0r8llGKtWBTvulF98xVKjzEvxWXDVS/M8VHF57Hk0TDpzpxJQGScC9TIoX3euXvVV/UcWWpDFkqsCYyfaM/1ly36vGfgVhv0oiasyfh7ypgyaaBaKHl5/nThqb5VeAvZEigXx8k0AolJJUkVjo7jGBOHFOm29Se3FZin6VsyRL42V+2U90z9crTOGAeIEK8Q1UCnMlGxk4CLWb/gsflKt0y/MLnbzyQccgjaIivAjgTT/Gtr4Quf9cXXWRLjRKxyRwvkBko75hHnjisPzUkP/kyESnHtwoAtQ7kkrehL7UyzUAtLrh6E5g7Nnn9iYo2SWW8ZVr1QYsTIW8gE+ll5kHWQlXGdr/Qug1Zl/RDe2O4FL+fWPBaiJSUZGoDT6HRYT3DN9Gdgy4agY3Q59gj+iIOdAOB/MmYYlHKqYp5PMLaFHMVirSSG2XYySnnZrGHNW19JdaZoiYxGV8LbGq+9DKsT0APT3Sk1ldzXaZszQvOpfzlkndUYodytAPDOEuxuocyEqlUmM+Jbm6HevkAq0sAW8+MB9BmQJs+8HQr1Wup3G2zL6uCetJZjXKofV7J+FLnUUWtxZyLTYa20FzpV1GxEgnVdxH4JOgyS0QECr4F3z3nEUHWUQfUjUi/ZUv7tjqTGaCkl0q6Wou0Ef9tdhslUBAn9Xq4GshZkG6gTmx0m8EqvuGoYzb4iwMYdDnVMcpbS2QM3TYB3mM0Sp71/0fuSVPf7lmki1d10DN3LE6x0/CKut+GuddVgGpRyFCtc/sZYS/Cm9FySdUj3sgIPlOZeZvWNAm1o0uTXH81UO3zZEEqQDkwD5q37t+zdAOqNe/RS/aJ6Tdi5purBt73xV930PiLapT8HTTXqz2Kh7JloQ26bIlVOtAl6dIY9uBPMhbeCdgtu/ZLJeEe1XdduTSPrpc6v9+TlIf64jakMpeQ9RumQFVr3YiV3vcb+eZyy9Viw4Ogl1p+nM2xmofSyNSdYgHjnSzA6m26fu+wTKtwYM30S1LXTkxPsYp0qp+nbu8yg271r4xnWM3/hoseBI+8qttygmLlSfLhZtmsS7CZUd1Kds295iT2m4dTh7aH0qLgF2QqGo5qVVdLtHiPvIp2mdDXinvvXtBgGhLRI4/1sJs09z5TqY6sRCNVqlU+2qxPDNuRuxm20MqLmqNOO3CqHRqxEGEclC3jNtATkMOLhFZpOynrH5FAc3UlcKRsbJHvy/9wD8iylUSFJHhrrfmRYBPaZCGDZ2Mu6QXolr3prFf16OdvsxOjqyqUVPXzVEngw+g2Qrur8WehCxWnqu71sE9gv/QWnrSalK00WglxllLFX+VXVaxv1TMae7yFcRrlV2059PNiNr2+wdxh60gmKamJ7trRDvIm4xsecYXqxI7z6sQ5pICWKDHp6jFiEyjpgtLioL1lU6MmSu3VHZm0QtcI1RVNeCPPjIeKHnuZLamxJzHnNIzdyIzsV2+DJm+Y22ZVlPINS35AxuFl1Bo4nQ5IJ7PIfxyW8xzGplLgaG9BGginPqsrUhn55RCZiLoxbRn4v4dAbkYubdBLFkWoRfXYs24CvPz8lGzpNZchT1XDzN8OSEkcF8ZBhnP+1cq2jJgddJORxMmOmMX7w5A96HXzILoS882Mr/IBWqAHTcjxejheKQPvJRo3kWNuP0g0msMlzn6upFoK36/o6A6R34t5fG0RKMGiNdXSwyFVJX4R6mwE9Y+GsodSb1gcv7cCTRUWmCEx1rI2SAbsPvY2+m9QmTl7mCeBdrAdKeMnTGC24X4ylMvU3qWtzY2Yf5/QdB+kwyKPB1i9agqkwEqZJqm+HLULWY27rx0Q72mUWoass8VjGOIQHihN0cRKenQVagMsqEtZ40YXPq4geB2yGWCXNjHdvWUBLwzZJqO0hL+TVEJ2va5urbACZWbCVYXEuLKywZep5bhnERlBRuANDHRa5c1HgwZlFJY2kWnipFFzIUE+znKy+EtINIQLcbvWDo8tdUmlOANNl1A7/85EXGmvHeBG00tYB81LS0AuLBVnVATUY8Ryv9DreSbjX5/Gw7BN6qTSVmRHniapOrKd1UqFa33dmLRcn4eiO68TzJgwXYga5OrAdj+l/P+s/3w5u4BXnkOdFpGwo5wOb+7Cf+7CX/0GtfRfzjCN8YfJX05g2BeQMAv9mxwCtgIWyOwr5L/o7pR+6SJ3Fe/5QLwwr4C6BIv1fKyzpToXHJTbLiG8/GQotrMJyTgA31zp7sYz07uavDfhI0+ET93fNFPKrlqZnmkCBaS85u7Qkeu8E9ciU7jYt/Oin4Cirkdwp8G3qlPh7jTYKupVrjsR5kytjqzkeYIFXRodnI/DcJL3VsvKmexWjgEoQCsdT/N5gLf5grrxeJ6vHTm4gO6UlxdM9fCJr5VdTooZGIdRDXwVSKniAK23gL3Xr/TsPT66RK06s+5MS1xeX2UqEqZDcGRYCDPKrMfWwKV89WhCtCt0umFC9cHJWKCO87lZ93ND0Yx1Ilesax5NH5/A6H4+Kc+ulmZcK+SoYJnx5BWnwRUNUOzoqJMouyS0VN6PSOkRm10jTnAgsGXKVzQTWkNVwXMVcD3cwHzgiccCc+0iwrV+eIB8vYYrzXPHQmiE1ZMQ1dCqZe8YRowhM391K5bkoGWFgTnpJC0cvypov69W1PHZKu61VvUKlrlgOFehv8dRqYiSVFVPrFeh9R+a6FKwUKF/2DYN5EtABZqrc/t6ZBF2b+Aky+I4EDDf0hE76YPlKyXWsFCNdaYrfEHqwDPaoVMBPZl25/OkuXfYh1AuGViPJI2HzBH4syPx50fiP/fFS0ErkVp1KFpUCxjqH1AdWqWlSspDr9t9mp8sRe05lZKcAbbwhWfvXCT5uaMGgh6KpJLW1xfoBw3LaFijA7pLbA/dLBaAHq0vExEoc+vIsCVvS8dsgKfzHs2zF5UcNegfdc9XQw7LtzEBEfnVuw5qsk9o/ZpU+TG0Qy5lmqJsZZKl/bKVR1cmoRI9kMKywhvIGYGrFIq+bi/73BQ0hZ97urenL6JXo5mqakobbtIVV66p/w8gNxay1cYALkHB9QnaBuTxx//OCudewXQalev3OcXoIopkah29PmH7C415oHVru0dODdPkGKapDAJyVt7oUe06YBVuotXIfZ+gJPdtaYfWuto0odAH8LSEDeELJ+eFgmTOYjMjHzutTu3jF0WpG5cTsOdrF/oO4OA7ZEqfB4GIEzsLWN3o6/CT3nipaAhKotcVWg06C0PjypdFnnW8zKDa16wc7zM8ads4WfHympGqW4QkbMBZ9BJqM5HWi99YkIFBog0Hzio7lkrk6FpEIqHNUzdS+rD2lUqc/dJZEPYVaHSDy8bczBP5mZ0nMo6LJDO2Kt7crnZYv2dpIkqO4Lj+UwiaZGA0N9XXHbZnPaKg7UVm+cmsVbpgLwQqTBDlK2QRjYqU9WGg36q1rR4EKSmgVoQS93g0qWbzMLnj/zKeThc2Ny9xdcxvW89tJ4FBZ+TrYS822IEJJ+OfG7MBproKdaU+lm6ha0k6VD5Wkg2Rn63EH5QRvWjn4LGOw95S7TY+lo3TH5bgr0x4r7qHlmhA5xdL8inC2+X+qnIjibHk+hEt7HPJHmiPr5FDKwqa25qJBIaLoGOvda+c0H4n10rRyKPrgymjDoVVMM5x8qynOBbcSwY9gDZTfidm4q9hNigH6Zq7EjwAgaEWn4CdRLdtSHCS1yLr+oE6voukO1CwEDCn2jNsm2CDCNlvtAe2HK3BYr8H2yZ1uJHuZl7so7STbMGZwqkd6+yc2C8a0q/ngU2T1/pvyFPmk83Tn/jK+AeZjy7QxdUCkrSe3NbTqNgL40jzsEOzt6u1D9tkTG81GT/skQ2ayLenp/lHp2H3zgzG+tdOZtsNHX1oJuNi99VAhH9Z9NF0P6/LNDBfboa6fZhgGdkTPhmqg3Eaf+zelGaa70Uruxfjpw7m7dWUBlIMPOJLqqEnlbYw7m/rCMN8W4EIq3yU28lRr/00O6EP07B7pPtJPgO3BzSObqMkNTPyh4nQVpli6C+Kh7umeGXIdYrzyrTE4a54V+7GdziaNakWdy8rutDfP+5Q6uGXHqZnFasiznRQXfSQERvNwMTfZtcLB/4N88lR1Bd6tC6Wmg+3UpO1nNAGReekn+dT/fCb2QYDbrLizeyyPyxWZ8bSBMBkfKP5KJTH8MncwhpdhJEJPjKZR2kWM4anfp4/4AqMtort1M9HJXJkDjXvCa99fDR7j1goZ+Ci5eNlH6zuA1JT24fiScpErMTelfGWWtwxQgHFjjzCtuJuPPlabFdZTK9hY7OU1LD5pjsLmKV+V7LRWsksxq1hcNHhDR5nYFYqnRg0I1Y7DGhmMD12qaM7njEng52y6I//yONAG9BDsy/0hb98H4T2Hv7Q9t5BMyMPDTB4Nn9XzMNV9SGpaZMwKq/cRu6MBdc0PRqMupDoGiLfYQUGNXqIoSzglobh11Ll0aDyYCql7wahxgrlvX5sEk9cZ8huDzRQKtakbzDk+1FCGCwTPmIQ6tuLe/08bRLHSBvMs1uV8of6M2tpff8UM/Pjklg8LY7ij2R0alrmSxLrke4KNjZKlWGvuIKL9jaT+K844epjeCsbzgtnkPNwXuM/X3fC4BwyjB44eY2kUW1gqzKElvowWzyKevTim5hHprYrSXGfbPU290OwgmbZRoHEXmVmBwR7emHQ9K589FG7k96B/hk0nQWuRNKy6Ee92NUl1NrCPFkWodFqXT7dWLX8EYuTjUw/LIFnGWQh/wD6BXjF5f1UsZTtMB/UxgsRVUy8uA9OYDJGlyEbZyNpS1HacBx90z06HU8knhzZ+GJAVIo1Vl/L92CjS6WtHnxx8r5FZ4xmPbZPYWNQQGbmEnRmuZ+BSxs5k2zBqQJpskiklWy1PIuQ4XrcZbGXdyOzpNmGIhLrhZhgucX6peINVyxIRreX0Gvda5tspRgFQCo8FlPjIwyemeTOGHtHJCIiCLF1sTgfj3fTib1jX+DJSDoQaa0feE+++5K/Z4mSnEGL3N11JS8SdE9HeEraqGfFD0fVEJwXKwldJ25PbrDKdG6T+y0F1RlOcDth5Q1LnHvED0S48Kx/2FCEsd33NxRhFplVkqLAB2obiywGV+ucayDaPEbVTg7QOnlfSrsfbDAhf+w3rmPInvWoA13OtB5XbLiyp9hIlxATesgqVVuZanqbKm6MJh1Y9lBCLL9k9Gl8cwW+HVN5dYJRLrKWiYZmurNPX2FH4z9mJNcfpaWJPKJ1YKpu6aZ3cv+m5HAb00cnVoSnzXdi39v8OjrjroXiW7JZiggXhh5ecLu4/2OIdA7Ih+C08S2Hz/Mi1Fqe56VEdMY8L6Zn4/H4j64J+gKCZEl0trLXXWAjGMsGJWQg26I8EcMmW9IrrmlhBZrg+JIlHLZJUsDSTda8UlJHNIXvj2Y5Dm0N7+NY9pee1o2LUIfB7vYSCPXf0b/4OxT2bsD8RsTjfKH/6Z9VXOcwfICpjK3rhMzX9DytZOyWPLfXrWCUPg9NPwImrq4cFDp2bgze3FOyVbYDpm9SprndbD67s+TRiPMDD27nJfk83rKrqZ7X5xQq0q9YDHNhWMhV5/fLowhZv+42gEJbG6qJssvEbZBSVOXSZTsKYuja+uiYEEIglnuoh940Z5eYnsnancUvHRghyGUuRsN2kzpsWYZVmcuVBAd9W77MgSF8cWI9JZs5sAeipm0DrrRhtrqDCGj+YStWogZxgwj9oEfBAkdsCZHMvHQ0uwCj1xdrQQeRMG1SSzqzI4JDRSpiZTWQ8TCDQIm6wsMEi66wv1qClVex6HKgZJe6zcRte5SqGO6zX6dWll1JmiVrIz2g68ZgQnab6IEXIcRmwh3ZYRxAHN5hGCfHMT5dGKlkiVuP1WAvj64TsOvFLGDWJOJAP/lY+rOPooctUXaFcG5CMCa1a0AHPB6LmSeMTZjfdEePpjmWiipzbiI1JJMhSCDb6SkZvNPUfwVnB0LYx541RzxuJ/k8hFT3ptWjI2OJC8b3RVLQnYF/CSf9GYYUlJRr45LCdn5cmnOM+J+nGctEOKfpC22h0DCFPGOcUCZPT0PubViEX01O6XyqRR4tbFvn7ONCdyczP8nnzoqrvnzzLNmUx3kP0PNFsKof4FFvGGqlYWNjR/bvu+xaITXs0W3mplMCaGSq9dDgslfw95VecO/809fRxfT0YkqMuRWRmxYdiWa1RIXZ4s43G5IMY9p07mxL6Mn4UtAY33ZVfdkuC2NpZQ2orngTjbcXfnaxl7EVNqU7WUX1OZLvoBYVfDWmbgulWK24yneHH1cVriJPvce4Kh95HZSwgX8Tx5T8neyLftHFIDycVUHfSFbhqFqHRluMTCF73Rk7urVIY0gLE+jEreOr5DkbiOfzMTy0c16rX25fTSgzM38k16QXl41tRaVVG+mqHQ9Kj2tRjO4N49KlY/vbrXN4V1f3WuAjOGZmozND0lk84L9yZ3zmzFEzTpQwu8YD2B2viUbXWWKDSOkmchQHFhbnzo2qkgRHQ8tEBty9dVYSnR8lzW0QZLBgZ46HuswCmA8R9ltgtcHh8HNJD3RKA4PMUdZbLlFOtrvUhnEyICPSHGYAsR3mR598eOA4RDUx91qTOIbeVNIBkpDJiqcJlB1dnsAJOg2hOSqwoxkt5cC8PixAfV9cX8Gqx8PJzjAM7N5oP9h+T2rYzFYabfWizslupwMJu8s4qIywhoDnZ+gK/DqkqPM94mMlfji1sFJxfTppGJD3YpwMzng2OOP54IyfB2f8cgzjvK6saydCejFOBmc8G5zxfHDGz4MzfunPCEXQt3+YDK4TahiP0Ak1jEfohBrGI3RCDeMROqGG8QidMBlcJ9QwHqETahiP0Ak1jEfohBrGI3RCDWMfnSDjVL6Y+cxIeMnoK67frkNzxEEetjrhb7XHe/VlzX35Z/NSCj73REj+FIdndDml9mfNO0Si1lGgL+nuK5gEjn+Du6vZ3iiMhyK1J7EeLjJ0IJ0MTApUp8xL0fUFY+1PIThD4lH4kcAc0ZZ7fsEUO87W7k3yOaX2XX9x6sksJg8y+L2461euSImrmyKhGTR4ZOeLfsTzjUylzdYYbqqzuZbvRY8OMSAUjkF3l2M7rL3GgfcSMN/nCg7P1gX0PUvjzEbVbDt124lo0ptoAFl6SwF7LF4S3QbMsrY0LjilL47hGt08fS+aQ3tDMPNvaYbHaMjVCm4278rUQudkb2+mtp+2Z3RgWoYf/YJS812Jv/v7mYQmH57QA7rd3d5cFu+VZMFuaksRSzpcr7Lp9ktr8l9M6+y/mNb5x6Y1f5j/18prJ60PLq+dtD64vHbS+uDyAhVlI6M799fdE5h8YAK31gsPt6BVaZt6RsUp69DTk3fr9ROx1h3yS5LHHaarfvARrtguLAODtUQzBeyZU8d6kM5KpOZkDlwuH5J18iGsZwOxPmOw7TcZpG2xuxs4cH33aI5Jd5J0A/u0wKZ8oZC56GjUdHaNAwVZp8aD2xqnlQ7dlXy5uknqlI8rfmfa4p+V00n/cZ2kaqGdDEA7r5a267C7hbLPjMiWvXFYo0Y/ZnPdiBUy+ToCJYpL0l6tk/j+06MLbE6e4m3OCmUMBlbBmIwYySAVIUXwCUXkNy1blzguKWaN4jE6VDljtma3rNJVX2ak5eHgFEcCGB0nG3TrWcrDQ+wrQdSQmIkm0+0tpXzFpGTTidwVMBCtiEwAsXob3RfLWCX4ypxyl0oZVL1mDXTKAh75Jk66e3WYbjBMgC8SL0vqzqOpBO7WH5vDDkAZ6haFYTV80TxG3EGhkULjQpwqMUeO68F4KirOKKgkwXBn/2FvzDVZc9pEc2C+SiA3Pgq6yskW3VGGFYeCeDJ2blwWhh1SQRGzpMmTZIdgizN+NtQNGoLctdpe2WPnJ+N/XIVx+o67L/O4wYoztyZe5jFhh4EpiyoZ6kje0SLH+OEmmkWxpN90tkyJ4zpgyWbHhcM19WsZkH6Ras0i8du55AloXNdaztzYgSmjVSMTb53tH+BUg7xhGZYONOBme6EMCujYxrX+rN3BeYD6xunkoQ3XlnTdTqBDlETN0hSK5ABzV3IzOXRyoYOyyjWjlS7C4Gzl2KFuctjgTfkpR62bf3bRrzgai5lv1GzlwbDVWPlKbkk35kykmnDxNfh7Eyk+b73cNsoi+HsbRY71qHcpDnlyBic7MhgeB3Q5TsmbJMsckqeTLbVSk+tI5EHclWjjK84IzRcv3ASRtGEiPyEv+h/61AUTSdPlpplatvIkMKP6LPiW06Ed6OhY1wfKmLYftpG+gY7Fc4RyhcXwxBznF3yQ2LXoERXmbJgl6LsIFIGoOEPugOC7tnWi/CywOxNXSxuzuPakZB7BoTLnqxhxGxNtsOAVRmUdSnF0fvb2MtDBzKimE2/MA2mNB7qTEI8873ZXiid0El/MsdYrniqHt38sni8oclZHCnqsvxCLcqZV5+t+fnro/r7m5ryWStYNhRnMYvM+Tnm60EOFmFThlPqfZeZcvRe6EzZntaWkS0wsOJ8spTa4HjHk+6Ibt48fQlPMCVXtlFkLkvG2iMbZYpnXMBwMWHzFas7yPYRn2FSxmTraXlU05nQ71NwNh5Uc4uTB2MANp7Sh5+EmdN03vFN026Vw7ud/xJ2r5Q8KdgOHyTIb+oN5bt1bHpGwXf/vNj8HUrMgLTPqDioiQ1eBf7KAoiFR2zLDcwecuIa+t7TluwWGYR+m9rzA4ghBJ5iZsdwJqknTOi4mHXJ0HtARirSFPaHPBXL1KyZjxYJaSwJh5izfLind6Vpr9KPN18QcHuVG8GizwuetHvkllLGJuoi6sGeG/eObVOI3NJkAhoY154U58DxDm/F6suBsH7TdDa8wy2tA3fQ6YlC9NOXTGgF0TuGI+bD1SyTEX3M0aAXOM1NHtJU7n0ZywCkYmwWjBz30PNV21NvJzuSeO0EfLBzLSaFI8HQybXkJbo+4tZ/tLMW0krl0QcGMLniY2CkXc+kC1c9lJPUyS1OcetH6+4SiDIMPmf4dGpT+0lgaIX3TQmvUXIL7tS5MjYlzg7gjwTfSQF3xN9z0aDhTy1PUXKarOmnpnCoJzWDUmgLFgLBZGF0hcDmELWGhtiVWVYyHIcbCnNNabPDKOwolTaRtHq1FxLnabcBlpslwVCMGezrNyo69hvxMhe7NKq2yCuzowiK1zpsqmSSnl5yFGAIM7kBRVJ1H68B2DYvgp5cBwwNf58z3A5yua4hje1NQxjHTqlC3Bed2VIAx6JNYZTRNUNy1A2UYw6GIJmxFftcFSGvDF8JELCgYOq0S75NO7UvgzpwS72R8qv8/ZWop8DTbmR5fknemaluT2kvj5fRFJLLje6ss2UCcubWuqSZOMX53Uj4XDH+0nxTziHBunKMpfIOWCGTtjU0KwgfbJPYIawXWuUKzqHiBn+9NQxjAUFssWiW8m2z0WSihRldm5Q/ElaZpXEz/6FMhmihnSOm+CF/mw3DTbBjZdrj6CLXi3E5041VrkdJWbsdN3SXA6E78nQk8jJVwWuBLIXHTLNl9S9Ec04PI8pHWKvfRbYEEcvuS8CixfoyRS1PbcJa+8F+wBL2m181vTnDqPM0v3FlG1+IX+QKnipndmk/ZksMe4W/ANBlflVJJs2W7StlP4oAHehqJJ3NiUn8MSXwN4xO/eAtQGNcsGjSN/bzqTf4DMn7D4rLAvbO91851AIa6CmB9wgvHx0e30ekd9TiPUo9cwMH+3uBFFLT571cSLcAO8roTkUFVIjoWj5N7XieKjDzA4dPtYd3b+jiPZCB+xaTSDirhaBFZnWFuWhNLdP3Sb/diemM6EMb2ms3QNzgeGsc+dOUKGM1ktsSZMgjAqTjuIn5idqksZYIGnp6A8MItr205EY/N+dkKcxzX0bLo3kLK9I8hiEr5BNFrh+KEfgwopR5JhgOTPkq5+gBK/QFjy4GFftODSX9ILqqJg5X/TGjj1R8yV3cYSdoPqRDXLMCAGUNSBtJGzhgsO/Y4jyg+xbxXE4/UhoiespQF77gOa0e7eWi0s/FkrD9WNG0CW882fBvwlNxvvFfyzRgorU/HptUVBG6zdODOGk83i2jQkJ/09x4uccbM/F6NH7EINuHhNEZktuOlMlO0SkxXYfnHZpoRBlaYybU5t2wpfL9lQyThV1L6NUm34kZThkF9C91FPjq0dLTEeyeea4Zle02yhLzFiaaEfORJyjLFIrtJa9XA0Uow6UZAnjseLcPmbjwh94VHlsZGJvFhyLlaFp2fuFnzDo/N8PQNxE4Sv5tiJNcw3WJ05d/Mzi2K0n03poX0KACac1zyGqKn2QyqF6wS7MV+zr3Ffc5W5pn9sNl7vLq9ZZrziinM8xgi12CwVt16W+ucAf8z04VDZ2xY+BrLXtdGBSPi9wrCaqp7RnE87+gFdANgfrM75R4c7dvjxeDKy9T7IFTkqpPoAXYQiJZlrB3kA4/TjEKfHyvEPMjQ8/9oogUz+xaPZ4rkdhWwV3hy27QQUIXFY31wI1PasqxWgZv0xJ31xJ13xv3QajQbpCI/82OJnMLpHwJG11x3p1i4shPunlAdMbY+mDQ74SadcT/xlUw/yfthJ12wCVtxPGJgw35XmVR1CLBmupkxBU53VCE5e4Jdu6a1N/jU1l1rz5B4AuZARroHljjTAMIHFadYVUBjqegcRrgofTqgIKykRANWm7VhSMLHsnbdtYLhX+yd4fYTuTUr3ZK8TFkk6wIn7BA84rk3y4CZBY38HByV/9CefZZqa1Lfl8YJ/XyCfkewgYfsgze+EV67KWnwCyZouIcpJvqubXp6Dx4JM7UHUTRkQsZPvlpZHKKVgpsUaIrDDQU11B6PcKoPHFdt7I03bXa7mAqW41X3yDo3lSmmJL/vwBFhASlaZ0jsXfm6MfThLpmtsXarWZdaWwJP3MEp9za1p9FUGY8NLHuHwdEZkWHpAMndYxfT4lC6Wk739fkD6OMCDguCJSBoA4IClZL1lcDRBKiPmgie8rc3xdFw+kwjeHIM+OwY8Pkx4M9dwLDLEephqUG/cXOaBJxi241gdIG+4kXW43VXMcosk0FYzgZhOR+E5fMgLF8GYfnan+USwwljIWfLACtK/kQvqslwVGfDUZ0PQTVlefBuPZhz8PpuYJkMwnI2CMv5kSxwXGOqMvSUXAmcQrK3XWhuFO41mYyfKrRZTYG1ki5oNfaSB2hC6bslXXbkMUtOTIXkCwSfOD/vaNHt0ykmoqEaniUbpOlZskEanyYLB3zLcLiXhOpJgh1RuSzNZBias2Fozoeh+TwMzZdhaL52pzEGUM0iQB1kRM61k/HD1QkeK5NuTjntucUb3rj/tprpZ8605QWTue7CtACZEpkVMuFND5kWP3MmIwfedJDpkq3XNBgIMnvlDFVLdMVZ0HaSDRPKa4knt0sAoRsm4wvsLhYye9Oj0RIfhHRISpdp4+kRO8y0lcR7L3nwnGCMOLdFAsNyFfA3490RiFWHF8OdweQFbLdrOSJxvmjOlJkv6jLjZBjmZqunZ7Og8kSzaixkPM4YUa53yfEfsR6TCvKKsRd7//4P";
@@ -10146,9 +10150,9 @@ mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive");"function"===typeof wind
mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox");null!=b.gitHub&&c(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub");null!=b.gitLab&&c(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),App.MODE_GITLAB,"gitLab");6>f&&null!=b.notion&&c(IMAGE_PATH+"/notion-logo.svg",mxResources.get("notion"),App.MODE_NOTION,"notion");k=document.createElement("span");k.style.position="absolute";k.style.cursor="pointer";k.style.bottom="27px";k.style.color="gray";k.style.userSelect=
"none";k.style.textAlign="center";k.style.left="50%";mxUtils.setPrefixedStyle(k.style,"transform","translate(-50%,0)");mxUtils.write(k,mxResources.get("decideLater"));g.appendChild(k);mxEvent.addListener(k,"click",function(){b.hideDialog();var c=Editor.useLocalStorage;b.createFile(b.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=c});mxClient.IS_SVG&&isLocalStorage&&"0"!=urlParams.gapi&&(null==document.documentMode||10<=document.documentMode)&&window.setTimeout(function(){null==
b.drive&&(m.style.padding="7px",m.style.fontSize="9pt",m.style.marginTop="-14px",m.innerHTML='<a style="background-color:#dcdcdc;padding:6px;color:black;text-decoration:none;" href="https://desk.draw.io/a/solutions/articles/16000074659" target="_blank"><img border="0" src="'+mxGraph.prototype.warningImage.src+'" align="absmiddle" style="margin-top:-4px"> '+mxResources.get("googleDriveMissingClickHere")+"</a>",g.appendChild(m))},5E3);this.container=g},SplashDialog=function(b){var e=document.createElement("div");
-e.style.textAlign="center";if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp){var d=b.addLanguageMenu(e,!0);null!=d&&(d.style.bottom="19px")}b.getServiceCount();var c=document.createElement("img");c.setAttribute("border","0");c.setAttribute("align","absmiddle");c.style.width="32px";c.style.height="32px";c.style.marginRight="8px";c.style.marginTop="-4px";var g=document.createElement("div");g.style.margin="8px 0px 0px 0px";g.style.padding="18px 0px 24px 0px";d="";b.mode==App.MODE_GOOGLE?(c.src=IMAGE_PATH+
-"/google-drive-logo.svg",d=mxResources.get("googleDrive")):b.mode==App.MODE_DROPBOX?(c.src=IMAGE_PATH+"/dropbox-logo.svg",d=mxResources.get("dropbox")):b.mode==App.MODE_ONEDRIVE?(c.src=IMAGE_PATH+"/onedrive-logo.svg",d=mxResources.get("oneDrive")):b.mode==App.MODE_GITHUB?(c.src=IMAGE_PATH+"/github-logo.svg",d=mxResources.get("github")):b.mode==App.MODE_GITLAB?(c.src=IMAGE_PATH+"/gitlab-logo.svg",d=mxResources.get("gitlab")):b.mode==App.MODE_NOTION?(c.src=IMAGE_PATH+"/notion-logo.svg",d=mxResources.get("notion")):
-b.mode==App.MODE_BROWSER?(c.src=IMAGE_PATH+"/osa_database.png",d=mxResources.get("browser")):b.mode==App.MODE_TRELLO?(c.src=IMAGE_PATH+"/trello-logo.svg",d=mxResources.get("trello")):(c.src=IMAGE_PATH+"/osa_drive-harddisk.png",g.style.paddingBottom="10px",g.style.paddingTop="30px",d=mxResources.get("device"));var k=document.createElement("button");k.className="geBigButton";k.style.marginBottom="8px";k.style.fontSize="18px";k.style.padding="10px";k.style.width="340px";if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)g.style.padding=
+e.style.textAlign="center";if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp){var d=b.addLanguageMenu(e,!0);null!=d&&(d.style.bottom="19px")}var c=document.createElement("img");c.setAttribute("border","0");c.setAttribute("align","absmiddle");c.style.width="32px";c.style.height="32px";c.style.marginRight="8px";c.style.marginTop="-4px";var g=document.createElement("div");g.style.margin="8px 0px 0px 0px";g.style.padding="18px 0px 24px 0px";d="";b.mode==App.MODE_GOOGLE?(c.src=IMAGE_PATH+"/google-drive-logo.svg",
+d=mxResources.get("googleDrive")):b.mode==App.MODE_DROPBOX?(c.src=IMAGE_PATH+"/dropbox-logo.svg",d=mxResources.get("dropbox")):b.mode==App.MODE_ONEDRIVE?(c.src=IMAGE_PATH+"/onedrive-logo.svg",d=mxResources.get("oneDrive")):b.mode==App.MODE_GITHUB?(c.src=IMAGE_PATH+"/github-logo.svg",d=mxResources.get("github")):b.mode==App.MODE_GITLAB?(c.src=IMAGE_PATH+"/gitlab-logo.svg",d=mxResources.get("gitlab")):b.mode==App.MODE_NOTION?(c.src=IMAGE_PATH+"/notion-logo.svg",d=mxResources.get("notion")):b.mode==
+App.MODE_BROWSER?(c.src=IMAGE_PATH+"/osa_database.png",d=mxResources.get("browser")):b.mode==App.MODE_TRELLO?(c.src=IMAGE_PATH+"/trello-logo.svg",d=mxResources.get("trello")):(c.src=IMAGE_PATH+"/osa_drive-harddisk.png",g.style.paddingBottom="10px",g.style.paddingTop="30px",d=mxResources.get("device"));var k=document.createElement("button");k.className="geBigButton";k.style.marginBottom="8px";k.style.fontSize="18px";k.style.padding="10px";k.style.width="340px";if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)g.style.padding=
"42px 0px 10px 0px",k.style.marginBottom="12px";else{g.style.border="1px solid #d3d3d3";g.style.borderWidth="1px 0px 1px 0px";var n=document.createElement("table"),f=document.createElement("tbody"),l=document.createElement("tr"),m=document.createElement("td"),p=document.createElement("td");n.setAttribute("align","center");m.appendChild(c);c=document.createElement("div");c.style.fontSize="22px";c.style.paddingBottom="6px";c.style.color="gray";mxUtils.write(c,d);p.style.textAlign="left";p.appendChild(c);
l.appendChild(m);l.appendChild(p);f.appendChild(l);n.appendChild(f);e.appendChild(n);d=document.createElement("span");d.style.cssText="position:absolute;cursor:pointer;bottom:27px;color:gray;userSelect:none;text-align:center;left:50%;";mxUtils.setPrefixedStyle(d.style,"transform","translate(-50%,0)");mxUtils.write(d,mxResources.get("changeStorage"));mxEvent.addListener(d,"click",function(){b.hideDialog(!1);b.setMode(null);b.clearMode();b.showSplash(!0)});e.appendChild(d)}mxUtils.write(k,mxResources.get("createNewDiagram"));
mxEvent.addListener(k,"click",function(){b.hideDialog();b.actions.get("new").funct()});g.appendChild(k);mxUtils.br(g);k=document.createElement("button");k.className="geBigButton";k.style.marginBottom="22px";k.style.fontSize="18px";k.style.padding="10px";k.style.width="340px";mxUtils.write(k,mxResources.get("openExistingDiagram"));mxEvent.addListener(k,"click",function(){b.actions.get("open").funct()});g.appendChild(k);b.mode==App.MODE_GOOGLE?mxResources.get("googleDrive"):b.mode==App.MODE_DROPBOX?
@@ -10319,11 +10323,11 @@ K.style.outline="none";K.style.border="none";K.style.margin="2px";mxUtils.setOpa
mxResources.get("pageNotFound")):(G.style.display="none",k.style.display="none",J.style.display="",J.style.backgroundColor=k.style.backgroundColor,b=Editor.parseDiagramNode(b),(new mxCodec(b.ownerDocument)).decode(b,I.getModel()),I.view.scaleAndTranslate(f.view.scale,f.view.translate.x,f.view.translate.y))},null,function(){mxUtils.setOpacity(K,60);n.innerHTML="";"none"==k.style.display&&(G.style.display="",k.style.display="",J.style.display="none")});var G=document.createElement("div");G.style.position=
"absolute";G.style.textAlign="right";G.style.color="gray";G.style.marginTop="10px";G.style.backgroundColor="transparent";G.style.top="440px";G.style.right="32px";G.style.maxWidth="380px";G.style.cursor="default";var Q=mxUtils.button(mxResources.get("download"),function(){if(null!=y){var c=mxUtils.getXml(y.documentElement),f=b.getBaseFilename()+".drawio";b.isLocalFileSave()?b.saveLocalFile(c,f,"text/xml"):(c="undefined"===typeof pako?"&xml="+encodeURIComponent(c):"&data="+encodeURIComponent(Graph.compress(c)),
(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(f)+"&format=xml"+c)).simulate(document,"_blank"))}});Q.className="geBtn";Q.setAttribute("disabled","disabled");var N=mxUtils.button(mxResources.get("restore"),function(c){null!=y&&null!=C&&(mxEvent.isShiftDown(c)?null!=y&&(c=b.getPagesForNode(y.documentElement),c=b.diffPages(b.pages,c),c=new TextareaDialog(b,mxResources.get("compare"),JSON.stringify(c,null,2),function(c){if(0<c.length)try{b.confirm(mxResources.get("areYouSure"),function(){u.patch([JSON.parse(c)],
-null,!0);b.hideDialog();b.hideDialog()})}catch(da){b.handleError(da)}},null,null,null,null,null,!0,null,mxResources.get("merge")),c.textarea.style.width="600px",c.textarea.style.height="380px",b.showDialog(c.container,620,460,!0,!0),c.init()):b.confirm(mxResources.get("areYouSure"),function(){null!=d?d(C):b.spinner.spin(document.body,mxResources.get("restoring"))&&u.save(!0,function(c){b.spinner.stop();b.replaceFileData(C);b.hideDialog()},function(c){b.spinner.stop();b.editor.setStatus("");b.handleError(c,
-null!=c?mxResources.get("errorSavingFile"):null)})}))});N.className="geBtn";N.setAttribute("disabled","disabled");N.setAttribute("title","Shift+Click for Diff");var M=document.createElement("select");M.setAttribute("disabled","disabled");M.style.maxWidth="80px";M.style.position="relative";M.style.top="-2px";M.style.verticalAlign="bottom";M.style.marginRight="6px";M.style.display="none";var Y=null;mxEvent.addListener(M,"change",function(b){null!=Y&&(Y(b),mxEvent.consume(b))});var W=mxUtils.button(mxResources.get("edit"),
-function(){null!=y&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(y.documentElement)),b.openLink(b.getUrl(),null,!0))});W.className="geBtn";W.setAttribute("disabled","disabled");null!=d&&(W.style.display="none");var L=mxUtils.button(mxResources.get("show"),function(){null!=B&&b.openLink(B.getUrl(M.selectedIndex))});L.className="geBtn gePrimaryBtn";L.setAttribute("disabled","disabled");null!=d&&(L.style.display="none",N.className="geBtn gePrimaryBtn");
-x=document.createElement("div");x.style.position="absolute";x.style.top="482px";x.style.width="640px";x.style.textAlign="right";var R=document.createElement("div");R.className="geToolbarContainer";R.style.backgroundColor="transparent";R.style.padding="2px";R.style.border="none";R.style.left="199px";R.style.top="442px";var O=null;if(null!=e&&0<e.length){k.style.cursor="move";var ea=document.createElement("table");ea.style.border="1px solid lightGray";ea.style.borderCollapse="collapse";ea.style.borderSpacing=
-"0px";ea.style.width="100%";var pa=document.createElement("tbody"),aa=(new Date).toDateString();null!=b.currentPage&&null!=b.pages&&(l=mxUtils.indexOf(b.pages,b.currentPage));for(t=e.length-1;0<=t;t--){var V=function(c){var d=new Date(c.modifiedDate),g=null;if(0<=d.getTime()){var q=function(e){v.stop();n.innerHTML="";var q=mxUtils.parseXml(e),t=b.editor.extractGraphModel(q.documentElement,!0);if(null!=t){var x=function(b){null!=b&&(b=z(Editor.parseDiagramNode(b)));return b},z=function(b){var c=b.getAttribute("background");
+null,!0);b.hideDialog();b.hideDialog()})}catch(da){b.handleError(da)}},null,null,null,null,null,!0,null,mxResources.get("merge")),b.showDialog(c.container,620,460,!0,!0),c.init()):b.confirm(mxResources.get("areYouSure"),function(){null!=d?d(C):b.spinner.spin(document.body,mxResources.get("restoring"))&&u.save(!0,function(c){b.spinner.stop();b.replaceFileData(C);b.hideDialog()},function(c){b.spinner.stop();b.editor.setStatus("");b.handleError(c,null!=c?mxResources.get("errorSavingFile"):null)})}))});
+N.className="geBtn";N.setAttribute("disabled","disabled");N.setAttribute("title","Shift+Click for Diff");var M=document.createElement("select");M.setAttribute("disabled","disabled");M.style.maxWidth="80px";M.style.position="relative";M.style.top="-2px";M.style.verticalAlign="bottom";M.style.marginRight="6px";M.style.display="none";var Y=null;mxEvent.addListener(M,"change",function(b){null!=Y&&(Y(b),mxEvent.consume(b))});var W=mxUtils.button(mxResources.get("edit"),function(){null!=y&&(window.openFile=
+new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(y.documentElement)),b.openLink(b.getUrl(),null,!0))});W.className="geBtn";W.setAttribute("disabled","disabled");null!=d&&(W.style.display="none");var L=mxUtils.button(mxResources.get("show"),function(){null!=B&&b.openLink(B.getUrl(M.selectedIndex))});L.className="geBtn gePrimaryBtn";L.setAttribute("disabled","disabled");null!=d&&(L.style.display="none",N.className="geBtn gePrimaryBtn");x=document.createElement("div");
+x.style.position="absolute";x.style.top="482px";x.style.width="640px";x.style.textAlign="right";var R=document.createElement("div");R.className="geToolbarContainer";R.style.backgroundColor="transparent";R.style.padding="2px";R.style.border="none";R.style.left="199px";R.style.top="442px";var O=null;if(null!=e&&0<e.length){k.style.cursor="move";var ea=document.createElement("table");ea.style.border="1px solid lightGray";ea.style.borderCollapse="collapse";ea.style.borderSpacing="0px";ea.style.width=
+"100%";var pa=document.createElement("tbody"),aa=(new Date).toDateString();null!=b.currentPage&&null!=b.pages&&(l=mxUtils.indexOf(b.pages,b.currentPage));for(t=e.length-1;0<=t;t--){var V=function(c){var d=new Date(c.modifiedDate),g=null;if(0<=d.getTime()){var q=function(e){v.stop();n.innerHTML="";var q=mxUtils.parseXml(e),t=b.editor.extractGraphModel(q.documentElement,!0);if(null!=t){var x=function(b){null!=b&&(b=z(Editor.parseDiagramNode(b)));return b},z=function(b){var c=b.getAttribute("background");
if(null==c||""==c||c==mxConstants.NONE)c=f.defaultPageBackgroundColor;k.style.backgroundColor=c;(new mxCodec(b.ownerDocument)).decode(b,f.getModel());f.maxFitScale=1;f.fit(8);f.center();return b};M.style.display="none";M.innerHTML="";y=q;C=e;m=parseSelectFunction=null;p=0;if("mxfile"==t.nodeName){q=t.getElementsByTagName("diagram");m=[];for(e=0;e<q.length;e++)m.push(q[e]);p=Math.min(l,m.length-1);0<m.length&&x(m[p]);if(1<m.length)for(M.removeAttribute("disabled"),M.style.display="",e=0;e<m.length;e++)q=
document.createElement("option"),mxUtils.write(q,m[e].getAttribute("name")||mxResources.get("pageWithNumber",[e+1])),q.setAttribute("value",e),e==p&&q.setAttribute("selected","selected"),M.appendChild(q);Y=function(){try{var c=parseInt(M.value);p=l=c;x(m[c])}catch(X){M.value=l,b.handleError(X)}}}else z(t);e=c.lastModifyingUserName;null!=e&&20<e.length&&(e=e.substring(0,20)+"...");G.innerHTML="";mxUtils.write(G,(null!=e?e+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());G.setAttribute("title",
g.getAttribute("title"));H.removeAttribute("disabled");D.removeAttribute("disabled");E.removeAttribute("disabled");F.removeAttribute("disabled");K.removeAttribute("disabled");null!=u&&u.isRestricted()||(b.editor.graph.isEnabled()&&N.removeAttribute("disabled"),Q.removeAttribute("disabled"),L.removeAttribute("disabled"),W.removeAttribute("disabled"));mxUtils.setOpacity(H,60);mxUtils.setOpacity(D,60);mxUtils.setOpacity(E,60);mxUtils.setOpacity(F,60);mxUtils.setOpacity(K,60)}else M.style.display="none",
@@ -10533,29 +10537,29 @@ IMAGE_PATH+"/img-lo-res.png";Editor.cameraImage="data:image/svg+xml;base64,PHN2Z
Editor.tagsImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE4cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48Zz48cGF0aCBkPSJNMjEuNDEsMTEuNDFsLTguODMtOC44M0MxMi4yMSwyLjIxLDExLjcsMiwxMS4xNywySDRDMi45LDIsMiwyLjksMiw0djcuMTdjMCwwLjUzLDAuMjEsMS4wNCwwLjU5LDEuNDFsOC44Myw4LjgzIGMwLjc4LDAuNzgsMi4wNSwwLjc4LDIuODMsMGw3LjE3LTcuMTdDMjIuMiwxMy40NiwyMi4yLDEyLjIsMjEuNDEsMTEuNDF6IE0xMi44MywyMEw0LDExLjE3VjRoNy4xN0wyMCwxMi44M0wxMi44MywyMHoiLz48Y2lyY2xlIGN4PSI2LjUiIGN5PSI2LjUiIHI9IjEuNSIvPjwvZz48L2c+PC9zdmc+";
Editor.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');Editor.errorImage="data:image/gif;base64,R0lGODlhEAAQAPcAAADGAIQAAISEhP8AAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEAAAAALAAAAAAQABAAAAhoAAEIFBigYMGBCAkGGMCQ4cGECxtKHBAAYUQCEzFSHLiQgMeGHjEGEAAg4oCQJz86LCkxpEqHAkwyRClxpEyXGmGaREmTIsmOL1GO/DkzI0yOE2sKIMlRJsWhCQHENDiUaVSpS5cmDAgAOw==";
Editor.configurationKey=".configuration";Editor.settingsKey=".drawio-config";Editor.defaultCustomLibraries=[];Editor.enableCustomLibraries=!0;Editor.enableCustomProperties=!0;Editor.defaultIncludeDiagram=!0;Editor.enableServiceWorker="0"!=urlParams.pwa&&"serviceWorker"in navigator&&("1"==urlParams.offline||/.*\.diagrams\.net$/.test(window.location.hostname)||/.*\.draw\.io$/.test(window.location.hostname));Editor.enableWebFonts="1"!=urlParams["safe-style-src"];Editor.enableShadowOption=!mxClient.IS_SF;
-Editor.enableExportUrl=!0;Editor.compressXml=!0;Editor.oneDriveInlinePicker=null!=window.urlParams&&"0"==window.urlParams.inlinePicker?!1:!0;Editor.globalVars=null;Editor.config=null;Editor.configVersion=null;Editor.defaultBorder=5;Editor.commonProperties=[{name:"comic",dispName:"Comic",type:"bool",defVal:!1,isVisible:function(b,c){return"1"!=mxUtils.getValue(b.style,"sketch","0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,
-"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"fillWeight",dispName:"Fill Weight",type:"int",defVal:-1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureGap",dispName:"Hachure Gap",type:"int",defVal:-1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureAngle",dispName:"Hachure Angle",type:"int",defVal:-41,isVisible:function(b,
-c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"curveFitting",dispName:"Curve Fitting",type:"float",defVal:.95,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"simplification",dispName:"Simplification",type:"float",defVal:0,min:0,max:1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStroke",dispName:"Disable Multi Stroke",type:"bool",
-defVal:!1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStrokeFill",dispName:"Disable Multi Stroke Fill",type:"bool",defVal:!1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"dashOffset",dispName:"Dash Offset",type:"int",defVal:-1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"dashGap",dispName:"Dash Gap",
-type:"int",defVal:-1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"zigzagOffset",dispName:"ZigZag Offset",type:"int",defVal:-1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"sketchStyle",
-dispName:"Sketch Style",type:"enum",defVal:"rough",enumList:[{val:"rough",dispName:"Rough"},{val:"comic",dispName:"Comic"}],isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}}];Editor.commonEdgeProperties=[{type:"separator"},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"sourcePortConstraint",dispName:"Source 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:"targetPortConstraint",dispName:"Target 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:"jettySize",dispName:"Jetty Size",type:"int",min:0,defVal:"auto",allowAuto:!0,isVisible:function(b){return"orthogonalEdgeStyle"==mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,
-null)}},{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"startFill",dispName:"Start Fill",type:"bool",defVal:!0},{name:"endFill",dispName:"End Fill",type:"bool",defVal:!0},{name:"perimeterSpacing",dispName:"Terminal Spacing",type:"float",defVal:0},{name:"anchorPointDirection",dispName:"Anchor Direction",type:"bool",defVal:!0},{name:"snapToPoint",dispName:"Snap to Point",type:"bool",
-defVal:!1},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!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:"bendable",dispName:"Bendable",type:"bool",defVal:!0},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",
-defVal:!0},{name:"noJump",dispName:"No Jumps",type:"bool",defVal:!1},{name:"flowAnimation",dispName:"Flow Animation",type:"bool",defVal:!1},{name:"ignoreEdge",dispName:"Ignore Edge",type:"bool",defVal:!1},{name:"orthogonalLoop",dispName:"Loop Routing",type:"bool",defVal:!1},{name:"orthogonal",dispName:"Orthogonal",type:"bool",defVal:!1}].concat(Editor.commonProperties);Editor.commonVertexProperties=[{name:"colspan",dispName:"Colspan",type:"int",min:1,defVal:1,isVisible:function(b,c){var f=c.editorUi.editor.graph;
-return 1==b.vertices.length&&0==b.edges.length&&f.isTableCell(b.vertices[0])}},{name:"rowspan",dispName:"Rowspan",type:"int",min:1,defVal:1,isVisible:function(b,c){var f=c.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&f.isTableCell(b.vertices[0])}},{type:"separator"},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",getDefaultValue:function(b,c){var f=c.editorUi.editor.graph.getCellStyle(1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(f,
-"resizeLastRow","0")},isVisible:function(b,c){var f=c.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&f.isTable(b.vertices[0])}},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",getDefaultValue:function(b,c){var f=c.editorUi.editor.graph.getCellStyle(1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(f,"resizeLast","0")},isVisible:function(b,c){var f=c.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&f.isTable(b.vertices[0])}},
-{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"overflow",dispName:"Text Overflow",defVal:"visible",type:"enum",enumList:[{val:"visible",dispName:"Visible"},{val:"hidden",dispName:"Hidden"},{val:"block",dispName:"Block"},{val:"fill",dispName:"Fill"},{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(b,c){return c.editorUi.editor.graph.isCellConnectable(0<b.vertices.length&&0==b.edges.length?b.vertices[0]:null)},isVisible:function(b,c){return 0<b.vertices.length&&0==b.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(b,c){return 1==b.vertices.length&&0==b.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(b,c){var f=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:
-null,d=c.editorUi.editor.graph;return null!=f&&(d.isSwimlane(f)||0<d.model.getChildCount(f))},isVisible:function(b,c){return 1==b.vertices.length&&0==b.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(b,c){var f=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null,d=c.editorUi.editor.graph;return null!=f&&(d.isContainer(f)&&"0"!=b.style.collapsible||!d.isContainer(f)&&"1"==b.style.collapsible)},isVisible:function(b,c){return 1==b.vertices.length&&
-0==b.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(b,c){return 1==b.vertices.length&&0==b.edges.length&&!c.editorUi.editor.graph.isSwimlane(b.vertices[0])&&null==mxUtils.getValue(b.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(b,c){var f=c.editorUi.editor.graph.model;return 0<b.vertices.length?f.isVertex(f.getParent(b.vertices[0])):
-!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"enumerate",dispName:"Enumerate",type:"bool",defVal:!1,onChange:function(b){b.refresh()}},{name:"enumerateValue",dispName:"Enumerate Value",type:"string",defVal:"",isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"enumerate","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(b,c){var f=0<b.vertices.length?c.editorUi.editor.graph.getCellGeometry(b.vertices[0]):null;return null!=f&&!f.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(b,c){var f=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null);return c.editorUi.editor.graph.isSwimlane(b.vertices[0])||null==f||f==mxConstants.NONE||0==mxUtils.getValue(b.style,mxConstants.STYLE_FILL_OPACITY,
-100)||0==mxUtils.getValue(b.style,mxConstants.STYLE_OPACITY,100)||null!=b.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(b,c){return 0<b.vertices.length&&c.editorUi.editor.graph.isContainer(b.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## 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## 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 or a JSON string as used in Layout, Apply.\n## 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.enableExportUrl=!0;Editor.compressXml=!0;Editor.oneDriveInlinePicker=null!=window.urlParams&&"0"==window.urlParams.inlinePicker?!1:!0;Editor.globalVars=null;Editor.config=null;Editor.configVersion=null;Editor.defaultBorder=5;Editor.commonProperties=[{name:"enumerate",dispName:"Enumerate",type:"bool",defVal:!1,onChange:function(b){b.refresh()}},{name:"enumerateValue",dispName:"Enumerate Value",type:"string",defVal:"",isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"enumerate","0")}},
+{name:"comic",dispName:"Comic",type:"bool",defVal:!1,isVisible:function(b,c){return"1"!=mxUtils.getValue(b.style,"sketch","0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"fillWeight",dispName:"Fill Weight",type:"int",defVal:-1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureGap",
+dispName:"Hachure Gap",type:"int",defVal:-1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureAngle",dispName:"Hachure Angle",type:"int",defVal:-41,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"curveFitting",dispName:"Curve Fitting",type:"float",defVal:.95,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"simplification",
+dispName:"Simplification",type:"float",defVal:0,min:0,max:1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStroke",dispName:"Disable Multi Stroke",type:"bool",defVal:!1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStrokeFill",dispName:"Disable Multi Stroke Fill",type:"bool",defVal:!1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch",
+"1"==urlParams.rough?"1":"0")}},{name:"dashOffset",dispName:"Dash Offset",type:"int",defVal:-1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"dashGap",dispName:"Dash Gap",type:"int",defVal:-1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"zigzagOffset",dispName:"ZigZag Offset",type:"int",defVal:-1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?
+"1":"0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"sketchStyle",dispName:"Sketch Style",type:"enum",defVal:"rough",enumList:[{val:"rough",dispName:"Rough"},{val:"comic",dispName:"Comic"}],isVisible:function(b,c){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}}];Editor.commonEdgeProperties=[{type:"separator"},
+{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"sourcePortConstraint",dispName:"Source 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:"targetPortConstraint",dispName:"Target 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:"jettySize",dispName:"Jetty Size",type:"int",min:0,defVal:"auto",allowAuto:!0,isVisible:function(b){return"orthogonalEdgeStyle"==mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,null)}},{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"startFill",dispName:"Start Fill",type:"bool",defVal:!0},{name:"endFill",dispName:"End Fill",
+type:"bool",defVal:!0},{name:"perimeterSpacing",dispName:"Terminal Spacing",type:"float",defVal:0},{name:"anchorPointDirection",dispName:"Anchor Direction",type:"bool",defVal:!0},{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!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:"bendable",dispName:"Bendable",type:"bool",defVal:!0},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"noJump",dispName:"No Jumps",type:"bool",defVal:!1},{name:"flowAnimation",dispName:"Flow Animation",type:"bool",defVal:!1},{name:"ignoreEdge",dispName:"Ignore Edge",type:"bool",defVal:!1},{name:"orthogonalLoop",dispName:"Loop Routing",type:"bool",defVal:!1},
+{name:"orthogonal",dispName:"Orthogonal",type:"bool",defVal:!1}].concat(Editor.commonProperties);Editor.commonVertexProperties=[{name:"colspan",dispName:"Colspan",type:"int",min:1,defVal:1,isVisible:function(b,c){var f=c.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&f.isTableCell(b.vertices[0])}},{name:"rowspan",dispName:"Rowspan",type:"int",min:1,defVal:1,isVisible:function(b,c){var f=c.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&f.isTableCell(b.vertices[0])}},
+{type:"separator"},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",getDefaultValue:function(b,c){var f=c.editorUi.editor.graph.getCellStyle(1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(f,"resizeLastRow","0")},isVisible:function(b,c){var f=c.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&f.isTable(b.vertices[0])}},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",getDefaultValue:function(b,c){var f=c.editorUi.editor.graph.getCellStyle(1==
+b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(f,"resizeLast","0")},isVisible:function(b,c){var f=c.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&f.isTable(b.vertices[0])}},{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"overflow",dispName:"Text Overflow",defVal:"visible",type:"enum",enumList:[{val:"visible",dispName:"Visible"},
+{val:"hidden",dispName:"Hidden"},{val:"block",dispName:"Block"},{val:"fill",dispName:"Fill"},{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(b,c){return c.editorUi.editor.graph.isCellConnectable(0<b.vertices.length&&0==b.edges.length?b.vertices[0]:null)},isVisible:function(b,c){return 0<b.vertices.length&&
+0==b.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(b,c){return 1==b.vertices.length&&0==b.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(b,c){var f=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null,d=c.editorUi.editor.graph;return null!=f&&(d.isSwimlane(f)||0<d.model.getChildCount(f))},isVisible:function(b,c){return 1==b.vertices.length&&0==b.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(b,c){var f=1==b.vertices.length&&
+0==b.edges.length?b.vertices[0]:null,d=c.editorUi.editor.graph;return null!=f&&(d.isContainer(f)&&"0"!=b.style.collapsible||!d.isContainer(f)&&"1"==b.style.collapsible)},isVisible:function(b,c){return 1==b.vertices.length&&0==b.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(b,c){return 1==b.vertices.length&&0==b.edges.length&&!c.editorUi.editor.graph.isSwimlane(b.vertices[0])&&null==mxUtils.getValue(b.style,"childLayout",null)}},{name:"expand",
+dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(b,c){var f=c.editorUi.editor.graph.model;return 0<b.vertices.length?f.isVertex(f.getParent(b.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(b,c){var f=0<b.vertices.length?c.editorUi.editor.graph.getCellGeometry(b.vertices[0]):null;return null!=f&&!f.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(b,c){var f=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null);return c.editorUi.editor.graph.isSwimlane(b.vertices[0])||null==f||f==mxConstants.NONE||0==mxUtils.getValue(b.style,mxConstants.STYLE_FILL_OPACITY,100)||
+0==mxUtils.getValue(b.style,mxConstants.STYLE_OPACITY,100)||null!=b.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(b,c){return 0<b.vertices.length&&c.editorUi.editor.graph.isContainer(b.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## 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## 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 or a JSON string as used in Layout, Apply.\n## 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(b){var c=rough.canvas({getContext:function(){return b}});c.draw=function(c){var f=c.sets||[];c=c.options||this.getDefaultOptions();for(var d=0;d<f.length;d++){var e=f[d];switch(e.type){case "path":null!=c.stroke&&this._drawToContext(b,e,c);break;case "fillPath":this._drawToContext(b,e,c);break;case "fillSketch":this.fillSketch(b,e,c)}}};c.fillSketch=function(c,f,d){var e=b.state.strokeColor,l=b.state.strokeWidth,m=b.state.strokeAlpha,g=b.state.dashed,k=d.fillWeight;
0>k&&(k=d.strokeWidth/2);b.setStrokeAlpha(b.state.fillAlpha);b.setStrokeColor(d.fill||"");b.setStrokeWidth(k);b.setDashed(!1);this._drawToContext(c,f,d);b.setDashed(g);b.setStrokeWidth(l);b.setStrokeColor(e);b.setStrokeAlpha(m)};c._drawToContext=function(b,c,f){b.begin();for(var d=0;d<c.ops.length;d++){var e=c.ops[d],l=e.data;switch(e.op){case "move":b.moveTo(l[0],l[1]);break;case "bcurveTo":b.curveTo(l[0],l[1],l[2],l[3],l[4],l[5]);break;case "lineTo":b.lineTo(l[0],l[1])}}b.end();"fillPath"===c.type&&
f.filled?b.fill():b.stroke()};return c};(function(){function b(c,f,d){this.canvas=c;this.rc=f;this.shape=d;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,b.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,b.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,b.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
@@ -10623,9 +10627,9 @@ null,"data:"+c+";charset=utf-8;base64,")}})(Editor.trimCssUrl(f[l].substring(0,m
d&&this.embedCssFonts(f,b)}),l=0;l<c.length;l++)mxUtils.bind(this,function(b,c){Graph.isCssFontUrl(c)?null==this.cachedGoogleFonts[c]?(d++,this.loadUrl(c,mxUtils.bind(this,function(b){this.cachedGoogleFonts[c]=b;f+=b;d--;e()}),mxUtils.bind(this,function(b){d--;f+="@import url("+c+");";e()}))):f+=this.cachedGoogleFonts[c]:f+='@font-face {font-family: "'+b+'";src: url("'+c+'")}'})(c[l].name,c[l].url);e()}else b()};Editor.prototype.addMathCss=function(b){b=b.getElementsByTagName("defs");if(null!=b&&
0<b.length)for(var c=document.getElementsByTagName("style"),f=0;f<c.length;f++){var d=mxUtils.getTextContent(c[f]);0>d.indexOf("mxPageSelector")&&0<d.indexOf("MathJax")&&b[0].appendChild(c[f].cloneNode(!0))}};Editor.prototype.addFontCss=function(b,c){c=null!=c?c:this.absoluteCssFonts(this.fontCss);if(null!=c){var f=b.getElementsByTagName("defs"),d=b.ownerDocument;0==f.length?(f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"defs"):d.createElement("defs"),null!=b.firstChild?b.insertBefore(f,
b.firstChild):b.appendChild(f)):f=f[0];d=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"style"):d.createElement("style");d.setAttribute("type","text/css");mxUtils.setTextContent(d,c);f.appendChild(d)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,c,f){var d=mxClient.IS_FF?8192:16384;return Math.min(f,Math.min(d/b,d/c))};Editor.prototype.exportToCanvas=function(b,c,f,d,e,l,m,g,k,p,q,
-t,n,v,y,u,x,z){try{l=null!=l?l:!0;m=null!=m?m:!0;t=null!=t?t:this.graph;n=null!=n?n:0;var C=k?null:t.background;C==mxConstants.NONE&&(C=null);null==C&&(C=d);null==C&&0==k&&(C=u?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(t.getSvg(null,null,n,v,null,m,null,null,null,p,null,u,x,z),mxUtils.bind(this,function(f){try{var d=new Image;d.onload=mxUtils.bind(this,function(){try{var m=function(){mxClient.IS_SF?window.setTimeout(function(){v.drawImage(d,0,0);b(k,f)},0):(v.drawImage(d,
-0,0),b(k,f))},k=document.createElement("canvas"),p=parseInt(f.getAttribute("width")),q=parseInt(f.getAttribute("height"));g=null!=g?g:1;null!=c&&(g=l?Math.min(1,Math.min(3*c/(4*q),c/p)):c/p);g=this.getMaxCanvasScale(p,q,g);p=Math.ceil(g*p);q=Math.ceil(g*q);k.setAttribute("width",p);k.setAttribute("height",q);var v=k.getContext("2d");null!=C&&(v.beginPath(),v.rect(0,0,p,q),v.fillStyle=C,v.fill());1!=g&&v.scale(g,g);if(y){var u=t.view,x=u.scale;u.scale=1;var z=btoa(unescape(encodeURIComponent(u.createSvgGrid(u.gridColor))));
-u.scale=x;var z="data:image/svg+xml;base64,"+z,D=t.gridSize*u.gridSteps*g,L=t.getGraphBounds(),E=u.translate.x*x,I=u.translate.y*x,A=E+(L.x-E)/x-n,F=I+(L.y-I)/x-n,G=new Image;G.onload=function(){try{for(var b=-Math.round(D-mxUtils.mod((E-A)*g,D)),c=-Math.round(D-mxUtils.mod((I-F)*g,D));b<p;b+=D)for(var f=c;f<q;f+=D)v.drawImage(G,b/g,f/g);m()}catch(Da){null!=e&&e(Da)}};G.onerror=function(b){null!=e&&e(b)};G.src=z}else m()}catch(Ba){null!=e&&e(Ba)}});d.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(f);
+t,n,v,u,y,x,z){try{l=null!=l?l:!0;m=null!=m?m:!0;t=null!=t?t:this.graph;n=null!=n?n:0;var C=k?null:t.background;C==mxConstants.NONE&&(C=null);null==C&&(C=d);null==C&&0==k&&(C=y?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(t.getSvg(null,null,n,v,null,m,null,null,null,p,null,y,x,z),mxUtils.bind(this,function(f){try{var d=new Image;d.onload=mxUtils.bind(this,function(){try{var m=function(){mxClient.IS_SF?window.setTimeout(function(){v.drawImage(d,0,0);b(k,f)},0):(v.drawImage(d,
+0,0),b(k,f))},k=document.createElement("canvas"),p=parseInt(f.getAttribute("width")),q=parseInt(f.getAttribute("height"));g=null!=g?g:1;null!=c&&(g=l?Math.min(1,Math.min(3*c/(4*q),c/p)):c/p);g=this.getMaxCanvasScale(p,q,g);p=Math.ceil(g*p);q=Math.ceil(g*q);k.setAttribute("width",p);k.setAttribute("height",q);var v=k.getContext("2d");null!=C&&(v.beginPath(),v.rect(0,0,p,q),v.fillStyle=C,v.fill());1!=g&&v.scale(g,g);if(u){var y=t.view,x=y.scale;y.scale=1;var z=btoa(unescape(encodeURIComponent(y.createSvgGrid(y.gridColor))));
+y.scale=x;var z="data:image/svg+xml;base64,"+z,D=t.gridSize*y.gridSteps*g,L=t.getGraphBounds(),E=y.translate.x*x,I=y.translate.y*x,A=E+(L.x-E)/x-n,F=I+(L.y-I)/x-n,G=new Image;G.onload=function(){try{for(var b=-Math.round(D-mxUtils.mod((E-A)*g,D)),c=-Math.round(D-mxUtils.mod((I-F)*g,D));b<p;b+=D)for(var f=c;f<q;f+=D)v.drawImage(G,b/g,f/g);m()}catch(Da){null!=e&&e(Da)}};G.onerror=function(b){null!=e&&e(b)};G.src=z}else m()}catch(Ba){null!=e&&e(Ba)}});d.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(f);
this.graph.mathEnabled&&this.addMathCss(f);var m=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(f,this.resolvedFontCss),d.src=Editor.createSvgDataUri(mxUtils.getXml(f))}catch(ja){null!=e&&e(ja)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(f,b),this.loadFonts(m)}catch(ua){null!=e&&e(ua)}}))}catch(ja){null!=e&&e(ja)}}),f,q)}catch(ca){null!=e&&e(ca)}};Editor.crcTable=[];for(var g=0;256>g;g++)for(var k=g,n=0;8>n;n++)k=1==(k&1)?3988292384^
k>>>1:k>>>1,Editor.crcTable[g]=k;Editor.updateCRC=function(b,c,f,d){for(var e=0;e<d;e++)b=Editor.crcTable[(b^c.charCodeAt(f+e))&255]^b>>>8;return b};Editor.crc32=function(b){for(var c=-1,f=0;f<b.length;f++)c=c>>>8^Editor.crcTable[(c^b.charCodeAt(f))&255];return(c^-1)>>>0};Editor.writeGraphModelToPng=function(b,c,f,d,e){function l(b,c){var f=k;k+=c;return b.substring(f,k)}function m(b){b=l(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function g(b){return String.fromCharCode(b>>
24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,!0);var k=0;if(l(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(l(b,4),"IHDR"!=l(b,4))null!=e&&e();else{l(b,17);e=b.substring(0,k);do{var p=m(b);if("IDAT"==l(b,4)){e=b.substring(0,k-8);"pHYs"==c&&"dpi"==f?(f=Math.round(d/.0254),f=g(f)+g(f)+String.fromCharCode(1)):f=f+String.fromCharCode(0)+("zTXt"==c?String.fromCharCode(0):"")+d;d=4294967295;d=Editor.updateCRC(d,
@@ -10666,17 +10670,17 @@ l.push(m.length))}t.setCellStyles(b,c,t.getSelectionCells());e.push(b);l.push(c)
l,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}function e(c,f,d){var e=mxUtils.getOffset(b,!0),l=mxUtils.getOffset(c,!0);f.style.position="absolute";f.style.left=l.x-e.x+"px";f.style.top=l.y-e.y+"px";f.style.width=c.offsetWidth+"px";f.style.height=c.offsetHeight-(d?4:0)+"px";f.style.zIndex=5}function l(b,c,f){var e=document.createElement("div");e.style.width="32px";e.style.height="4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=c&&"none"!=c?c:"url('"+
Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(q,function(l){this.editorUi.pickColor(c,function(c){e.style.background="none"==c?"url('"+Dialog.prototype.noColorImage+"')":c;d(b,c,f)});mxEvent.consume(l)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function m(b,c,f,e,l,m,g){null!=c&&(c=c.split(","),n.push({name:b,values:c,type:f,defVal:e,countProperty:l,parentRow:m,isDeletable:!0,flipBkg:g}));btn=mxUtils.button("+",
mxUtils.bind(q,function(c){for(var k=m,q=0;null!=k.nextSibling;)if(k.nextSibling.getAttribute("data-pName")==b)k=k.nextSibling,q++;else break;var t={type:f,parentRow:m,index:q,isDeletable:!0,defVal:e,countProperty:l},q=p(b,"",t,0==q%2,g);d(b,e,t);k.parentNode.insertBefore(q,k.nextSibling);mxEvent.consume(c)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function g(b,c,f,d,e,l,m){if(0<e){var g=Array(e);c=null!=c?c.split(","):[];for(var k=0;k<e;k++)g[k]=null!=
-c[k]?c[k]:null!=d?d:"";n.push({name:b,values:g,type:f,defVal:d,parentRow:l,flipBkg:m,size:e})}return document.createElement("div")}function k(b,c,f){var e=document.createElement("input");e.type="checkbox";e.checked="1"==c;mxEvent.addListener(e,"change",function(){d(b,e.checked?"1":"0",f)});return e}function p(c,f,p,t,n){var v=p.dispName,u=p.type,y=document.createElement("tr");y.className="gePropRow"+(n?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";y.setAttribute("data-pName",c);y.setAttribute("data-pValue",
-f);t=!1;null!=p.index&&(y.setAttribute("data-index",p.index),v=(null!=v?v:"")+"["+p.index+"]",t=!0);var x=document.createElement("td");x.className="gePropRowCell";v=mxResources.get(v,null,v);mxUtils.write(x,v);x.setAttribute("title",v);t&&(x.style.textAlign="right");y.appendChild(x);x=document.createElement("td");x.className="gePropRowCell";if("color"==u)x.appendChild(l(c,f,p));else if("bool"==u||"boolean"==u)x.appendChild(k(c,f,p));else if("enum"==u){var z=p.enumList;for(n=0;n<z.length;n++)if(v=
+c[k]?c[k]:null!=d?d:"";n.push({name:b,values:g,type:f,defVal:d,parentRow:l,flipBkg:m,size:e})}return document.createElement("div")}function k(b,c,f){var e=document.createElement("input");e.type="checkbox";e.checked="1"==c;mxEvent.addListener(e,"change",function(){d(b,e.checked?"1":"0",f)});return e}function p(c,f,p,t,n){var v=p.dispName,y=p.type,u=document.createElement("tr");u.className="gePropRow"+(n?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";u.setAttribute("data-pName",c);u.setAttribute("data-pValue",
+f);t=!1;null!=p.index&&(u.setAttribute("data-index",p.index),v=(null!=v?v:"")+"["+p.index+"]",t=!0);var x=document.createElement("td");x.className="gePropRowCell";v=mxResources.get(v,null,v);mxUtils.write(x,v);x.setAttribute("title",v);t&&(x.style.textAlign="right");u.appendChild(x);x=document.createElement("td");x.className="gePropRowCell";if("color"==y)x.appendChild(l(c,f,p));else if("bool"==y||"boolean"==y)x.appendChild(k(c,f,p));else if("enum"==y){var z=p.enumList;for(n=0;n<z.length;n++)if(v=
z[n],v.val==f){mxUtils.write(x,mxResources.get(v.dispName,null,v.dispName));break}mxEvent.addListener(x,"click",mxUtils.bind(q,function(){var l=document.createElement("select");e(x,l);for(var m=0;m<z.length;m++){var g=z[m],k=document.createElement("option");k.value=mxUtils.htmlEntities(g.val);mxUtils.write(k,mxResources.get(g.dispName,null,g.dispName));l.appendChild(k)}l.value=f;b.appendChild(l);mxEvent.addListener(l,"change",function(){var b=mxUtils.htmlEntities(l.value);d(c,b,p)});l.focus();mxEvent.addListener(l,
-"blur",function(){b.removeChild(l)})}))}else"dynamicArr"==u?x.appendChild(m(c,f,p.subType,p.subDefVal,p.countProperty,y,n)):"staticArr"==u?x.appendChild(g(c,f,p.subType,p.subDefVal,p.size,y,n)):"readOnly"==u?(n=document.createElement("input"),n.setAttribute("readonly",""),n.value=f,n.style.width="96px",n.style.borderWidth="0px",x.appendChild(n)):(x.innerHTML=f,mxEvent.addListener(x,"click",mxUtils.bind(q,function(){function l(){var b=m.value,b=0==b.length&&"string"!=u?0:b;p.allowAuto&&(null!=b.trim&&
-"auto"==b.trim().toLowerCase()?(b="auto",u="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=p.min&&b<p.min?b=p.min:null!=p.max&&b>p.max&&(b=p.max);b=mxUtils.htmlEntities(("int"==u?parseInt(b):b)+"");d(c,b,p)}var m=document.createElement("input");e(x,m,!0);m.value=f;m.className="gePropEditor";"int"!=u&&"float"!=u||p.allowAuto||(m.type="number",m.step="int"==u?"1":"any",null!=p.min&&(m.min=parseFloat(p.min)),null!=p.max&&(m.max=parseFloat(p.max)));b.appendChild(m);mxEvent.addListener(m,"keypress",
-function(b){13==b.keyCode&&l()});m.focus();mxEvent.addListener(m,"blur",function(){l()})})));p.isDeletable&&(n=mxUtils.button("-",mxUtils.bind(q,function(b){d(c,"",p,p.index);mxEvent.consume(b)})),n.style.height="16px",n.style.width="25px",n.style["float"]="right",n.className="geColorBtn",x.appendChild(n));y.appendChild(x);return y}var q=this,t=this.editorUi.editor.graph,n=[];b.style.position="relative";b.style.padding="0";var v=document.createElement("table");v.className="geProperties";v.style.whiteSpace=
-"nowrap";v.style.width="100%";var u=document.createElement("tr");u.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var x=document.createElement("img");x.src=Sidebar.prototype.expandedImage;x.style.verticalAlign="middle";y.appendChild(x);mxUtils.write(y,mxResources.get("property"));u.style.cursor="pointer";var z=function(){var c=v.querySelectorAll(".gePropNonHeaderRow"),f;if(q.editorUi.propertiesCollapsed){x.src=Sidebar.prototype.collapsedImage;f="none";for(var d=
-b.childNodes.length-1;0<=d;d--)try{var e=b.childNodes[d],l=e.nodeName.toUpperCase();"INPUT"!=l&&"SELECT"!=l||b.removeChild(e)}catch(va){}}else x.src=Sidebar.prototype.expandedImage,f="";for(d=0;d<c.length;d++)c[d].style.display=f};mxEvent.addListener(u,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;z()});u.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");u.appendChild(y);v.appendChild(u);var C=!1,D=
-!1,u=null;1==f.vertices.length&&0==f.edges.length?u=f.vertices[0].id:0==f.vertices.length&&1==f.edges.length&&(u=f.edges[0].id);null!=u&&v.appendChild(p("id",mxUtils.htmlEntities(u),{dispName:"ID",type:"readOnly"},!0,!1));for(var E in c)if(u=c[E],"function"!=typeof u.isVisible||u.isVisible(f,this)){var I=null!=f.style[E]?mxUtils.htmlEntities(f.style[E]+""):null!=u.getDefaultValue?u.getDefaultValue(f,this):u.defVal;if("separator"==u.type)D=!D;else{if("staticArr"==u.type)u.size=parseInt(f.style[u.sizeProperty]||
-c[u.sizeProperty].defVal)||0;else if(null!=u.dependentProps){for(var L=u.dependentProps,A=[],F=[],y=0;y<L.length;y++){var G=f.style[L[y]];F.push(c[L[y]].subDefVal);A.push(null!=G?G.split(","):[])}u.dependentPropsDefVal=F;u.dependentPropsVals=A}v.appendChild(p(E,I,u,C,D));C=!C}}for(y=0;y<n.length;y++)for(u=n[y],c=u.parentRow,f=0;f<u.values.length;f++)E=p(u.name,u.values[f],{type:u.type,parentRow:u.parentRow,isDeletable:u.isDeletable,index:f,defVal:u.defVal,countProperty:u.countProperty,size:u.size},
-0==f%2,u.flipBkg),c.parentNode.insertBefore(E,c.nextSibling),c=E;b.appendChild(v);z();return b};StyleFormatPanel.prototype.addStyles=function(b){function c(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var f=this.editorUi,d=f.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";
+"blur",function(){b.removeChild(l)})}))}else"dynamicArr"==y?x.appendChild(m(c,f,p.subType,p.subDefVal,p.countProperty,u,n)):"staticArr"==y?x.appendChild(g(c,f,p.subType,p.subDefVal,p.size,u,n)):"readOnly"==y?(n=document.createElement("input"),n.setAttribute("readonly",""),n.value=f,n.style.width="96px",n.style.borderWidth="0px",x.appendChild(n)):(x.innerHTML=f,mxEvent.addListener(x,"click",mxUtils.bind(q,function(){function l(){var b=m.value,b=0==b.length&&"string"!=y?0:b;p.allowAuto&&(null!=b.trim&&
+"auto"==b.trim().toLowerCase()?(b="auto",y="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=p.min&&b<p.min?b=p.min:null!=p.max&&b>p.max&&(b=p.max);b=mxUtils.htmlEntities(("int"==y?parseInt(b):b)+"");d(c,b,p)}var m=document.createElement("input");e(x,m,!0);m.value=f;m.className="gePropEditor";"int"!=y&&"float"!=y||p.allowAuto||(m.type="number",m.step="int"==y?"1":"any",null!=p.min&&(m.min=parseFloat(p.min)),null!=p.max&&(m.max=parseFloat(p.max)));b.appendChild(m);mxEvent.addListener(m,"keypress",
+function(b){13==b.keyCode&&l()});m.focus();mxEvent.addListener(m,"blur",function(){l()})})));p.isDeletable&&(n=mxUtils.button("-",mxUtils.bind(q,function(b){d(c,"",p,p.index);mxEvent.consume(b)})),n.style.height="16px",n.style.width="25px",n.style["float"]="right",n.className="geColorBtn",x.appendChild(n));u.appendChild(x);return u}var q=this,t=this.editorUi.editor.graph,n=[];b.style.position="relative";b.style.padding="0";var v=document.createElement("table");v.className="geProperties";v.style.whiteSpace=
+"nowrap";v.style.width="100%";var y=document.createElement("tr");y.className="gePropHeader";var u=document.createElement("th");u.className="gePropHeaderCell";var x=document.createElement("img");x.src=Sidebar.prototype.expandedImage;x.style.verticalAlign="middle";u.appendChild(x);mxUtils.write(u,mxResources.get("property"));y.style.cursor="pointer";var z=function(){var c=v.querySelectorAll(".gePropNonHeaderRow"),f;if(q.editorUi.propertiesCollapsed){x.src=Sidebar.prototype.collapsedImage;f="none";for(var d=
+b.childNodes.length-1;0<=d;d--)try{var e=b.childNodes[d],l=e.nodeName.toUpperCase();"INPUT"!=l&&"SELECT"!=l||b.removeChild(e)}catch(va){}}else x.src=Sidebar.prototype.expandedImage,f="";for(d=0;d<c.length;d++)c[d].style.display=f};mxEvent.addListener(y,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;z()});y.appendChild(u);u=document.createElement("th");u.className="gePropHeaderCell";u.innerHTML=mxResources.get("value");y.appendChild(u);v.appendChild(y);var C=!1,D=
+!1,y=null;1==f.vertices.length&&0==f.edges.length?y=f.vertices[0].id:0==f.vertices.length&&1==f.edges.length&&(y=f.edges[0].id);null!=y&&v.appendChild(p("id",mxUtils.htmlEntities(y),{dispName:"ID",type:"readOnly"},!0,!1));for(var E in c)if(y=c[E],"function"!=typeof y.isVisible||y.isVisible(f,this)){var I=null!=f.style[E]?mxUtils.htmlEntities(f.style[E]+""):null!=y.getDefaultValue?y.getDefaultValue(f,this):y.defVal;if("separator"==y.type)D=!D;else{if("staticArr"==y.type)y.size=parseInt(f.style[y.sizeProperty]||
+c[y.sizeProperty].defVal)||0;else if(null!=y.dependentProps){for(var L=y.dependentProps,A=[],F=[],u=0;u<L.length;u++){var G=f.style[L[u]];F.push(c[L[u]].subDefVal);A.push(null!=G?G.split(","):[])}y.dependentPropsDefVal=F;y.dependentPropsVals=A}v.appendChild(p(E,I,y,C,D));C=!C}}for(u=0;u<n.length;u++)for(y=n[u],c=y.parentRow,f=0;f<y.values.length;f++)E=p(y.name,y.values[f],{type:y.type,parentRow:y.parentRow,isDeletable:y.isDeletable,index:f,defVal:y.defVal,countProperty:y.countProperty,size:y.size},
+0==f%2,y.flipBkg),c.parentNode.insertBefore(E,c.nextSibling),c=E;b.appendChild(v);z();return b};StyleFormatPanel.prototype.addStyles=function(b){function c(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var f=this.editorUi,d=f.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";
b.style.position="relative";b.appendChild(e);var l="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(" "),m=document.createElement("div");m.style.whiteSpace="nowrap";m.style.position="relative";m.style.textAlign="center";m.style.width="210px";for(var g=[],k=0;k<this.defaultColorSchemes.length;k++){var p=document.createElement("div");p.style.display="inline-block";p.style.width=
"6px";p.style.height="6px";p.style.marginLeft="4px";p.style.marginRight="3px";p.style.borderRadius="3px";p.style.cursor="pointer";p.style.background="transparent";p.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(p,"click",mxUtils.bind(this,function(){q(b)}))})(k);g.push(p);m.appendChild(p)}var q=mxUtils.bind(this,function(b){null!=g[b]&&(null!=this.format.currentScheme&&null!=g[this.format.currentScheme]&&(g[this.format.currentScheme].style.background="transparent"),
this.format.currentScheme=b,t(this.defaultColorSchemes[this.format.currentScheme]),g[this.format.currentScheme].style.background="#84d7ff")}),t=mxUtils.bind(this,function(b){var c=mxUtils.bind(this,function(b){var c=mxUtils.button("",mxUtils.bind(this,function(c){d.getModel().beginUpdate();try{for(var e=f.getSelectionState().cells,m=0;m<e.length;m++){for(var g=d.getModel().getStyle(e[m]),k=0;k<l.length;k++)g=mxUtils.removeStylename(g,l[k]);var p=d.getModel().isVertex(e[m])?d.defaultVertexStyle:d.defaultEdgeStyle;
@@ -10711,73 +10715,74 @@ function(c,f){if(b()){for(var d=m.getAllTags(),e=0;e<d.length;e++)0>mxUtils.inde
v.style.right="10px";v.style.left="10px";m.isEnabled()&&(v.appendChild(q),v.appendChild(t),k.appendChild(v));return{div:k,refresh:n}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,b=null!=b?b.slice():[],c;for(c in Graph.customFontElements){var f=Graph.customFontElements[c];b.push({name:f.name,url:f.url})}return b};Graph.prototype.setFont=function(b,c){Graph.addFont(b,c);document.execCommand("fontname",!1,b);if(null!=c){var f=this.cellEditor.textarea.getElementsByTagName("font");c=
Graph.getFontUrl(b,c);for(var d=0;d<f.length;d++)f[d].getAttribute("face")==b&&f[d].getAttribute("data-font-src")!=c&&f[d].setAttribute("data-font-src",c)}};var y=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return y.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var b=
JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var c in b)this.globalVars[c]=b[c]}catch(O){null!=window.console&&console.log("Error in vars URL parameter: "+O)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var C=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var c=C.apply(this,arguments);null==c&&null!=this.globalVars&&(c=this.globalVars[b]);return c};Graph.prototype.getDefaultStylesheet=
-function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var H=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,c,f,d,e,l,m,g,k,p,q,t,n,v){var u=null,y=null,x=null;t||null==this.themes||"darkTheme"!=this.defaultThemeName||(u=this.stylesheet,y=this.shapeForegroundColor,x=this.shapeBackgroundColor,this.shapeForegroundColor=
+function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var H=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,c,f,d,e,l,m,g,k,p,q,t,n,v){var y=null,u=null,x=null;t||null==this.themes||"darkTheme"!=this.defaultThemeName||(y=this.stylesheet,u=this.shapeForegroundColor,x=this.shapeBackgroundColor,this.shapeForegroundColor=
"darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var z=H.apply(this,arguments),C=this.getCustomFonts();if(q&&0<C.length){var D=z.ownerDocument,E=null!=D.createElementNS?D.createElementNS(mxConstants.NS_SVG,"style"):D.createElement("style");null!=D.setAttributeNS?E.setAttributeNS("type","text/css"):E.setAttribute("type","text/css");for(var I=
-"",A="",F=0;F<C.length;F++){var G=C[F].name,L=C[F].url;Graph.isCssFontUrl(L)?I+="@import url("+L+");\n":A+='@font-face {\nfont-family: "'+G+'";\nsrc: url("'+L+'");\n}\n'}E.appendChild(D.createTextNode(I+A));z.getElementsByTagName("defs")[0].appendChild(E)}null!=u&&(this.shapeBackgroundColor=x,this.shapeForegroundColor=y,this.stylesheet=u,this.refresh());return z};var D=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=D.apply(this,arguments);if(this.mathEnabled){var c=
+"",A="",F=0;F<C.length;F++){var G=C[F].name,L=C[F].url;Graph.isCssFontUrl(L)?I+="@import url("+L+");\n":A+='@font-face {\nfont-family: "'+G+'";\nsrc: url("'+L+'");\n}\n'}E.appendChild(D.createTextNode(I+A));z.getElementsByTagName("defs")[0].appendChild(E)}null!=y&&(this.shapeBackgroundColor=x,this.shapeForegroundColor=u,this.stylesheet=y,this.refresh());return z};var D=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=D.apply(this,arguments);if(this.mathEnabled){var c=
b.drawText;b.drawText=function(b,f){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var d=b.text.getContentNode();if(null!=d){d=d.cloneNode(!0);if(d.getElementsByTagNameNS)for(var e=d.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=d.innerHTML&&(e=b.text.value,b.text.value=d.innerHTML,c.apply(this,arguments),b.text.value=e)}}else c.apply(this,
-arguments)}}return b};var E=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){E.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,b.text,b.secondLabel,b.control]};var F=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){F.apply(this,arguments);this.numberCounter=0};var K=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=
-function(b,c){var f=K.apply(this,arguments);c=null!=c?c:!0;var d=null!=f&&this.graph.model.isVertex(f.cell)?"1"==mxUtils.getValue(f.style,"enumerate",0):!1;c&&this.redrawNumberShape(f,d);return f};mxGraphView.prototype.redrawNumberShape=function(b,c){c&&this.graph.model.isVertex(b.cell)&&null!=b.shape&&null==b.secondLabel&&(b.secondLabel=new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),b.secondLabel.size=12,b.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,this.graph.cellRenderer.initializeLabel(b,
-b.secondLabel));if(null!=b&&null!=b.secondLabel)if(c){var f=mxUtils.getValue(b.style,"enumerateValue","");""==f&&(f=++this.numberCounter);var f='<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(f)+"</div>",d=this.graph.getView().getScale(),e=new mxRectangle(b.x+b.width-4*d,b.y+4*d,0,0);b.secondLabel.value=f;b.secondLabel.state=b;b.secondLabel.scale=d;b.secondLabel.bounds=e;b.secondLabel.redraw()}else b.secondLabel.destroy(),b.secondLabel=null};
-var J=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){J.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==
-this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};var I=Graph.prototype.refresh;Graph.prototype.refresh=function(){I.apply(this,arguments);this.refreshBackgroundImage()};
-Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var G=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){G.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};
-Graph.prototype.executeCustomActions=function(b,c){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var f=!1,d=0,e=0,l=mxUtils.bind(this,function(){f||(f=!0,this.model.beginUpdate())}),m=mxUtils.bind(this,function(){f&&(f=!1,this.model.endUpdate())}),
-g=mxUtils.bind(this,function(){0<d&&d--;0==d&&k()}),k=mxUtils.bind(this,function(){if(e<b.length){var f=this.stoppingCustomActions,p=b[e++],q=[];if(null!=p.open)if(m(),this.isCustomLink(p.open)){if(!this.customLinkClicked(p.open))return}else this.openLink(p.open);null==p.wait||f||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;g()}),d++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=p.wait?parseInt(p.wait):
-1E3),m());null!=p.opacity&&null!=p.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(p.opacity,!0)),p.opacity.value);null!=p.fadeIn&&(d++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeIn,!0)),0,1,g,f?0:p.fadeIn.delay));null!=p.fadeOut&&(d++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeOut,!0)),1,0,g,f?0:p.fadeOut.delay));null!=p.wipeIn&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeIn,!0),!0)));null!=
-p.wipeOut&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeOut,!0),!1)));null!=p.toggle&&(l(),this.toggleCells(this.getCellsForAction(p.toggle,!0)));if(null!=p.show){l();var t=this.getCellsForAction(p.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(t),1);this.setCellsVisible(t,!0)}null!=p.hide&&(l(),t=this.getCellsForAction(p.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(t),0),this.setCellsVisible(t,!1));null!=p.toggleStyle&&null!=p.toggleStyle.key&&(l(),this.toggleCellStyles(p.toggleStyle.key,
-null!=p.toggleStyle.defaultValue?p.toggleStyle.defaultValue:"0",this.getCellsForAction(p.toggleStyle,!0)));null!=p.style&&null!=p.style.key&&(l(),this.setCellStyles(p.style.key,p.style.value,this.getCellsForAction(p.style,!0)));t=[];null!=p.select&&this.isEnabled()&&(t=this.getCellsForAction(p.select),this.setSelectionCells(t));null!=p.highlight&&(t=this.getCellsForAction(p.highlight),this.highlightCells(t,p.highlight.color,p.highlight.duration,p.highlight.opacity));null!=p.scroll&&(t=this.getCellsForAction(p.scroll));
-null!=p.viewbox&&this.fitWindow(p.viewbox,p.viewbox.border);0<t.length&&this.scrollCellToVisible(t[0]);if(null!=p.tags){t=[];null!=p.tags.hidden&&(t=t.concat(p.tags.hidden));if(null!=p.tags.visible)for(var n=this.getAllTags(),v=0;v<n.length;v++)0>mxUtils.indexOf(p.tags.visible,n[v])&&0>mxUtils.indexOf(t,n[v])&&t.push(n[v]);this.hiddenTags=t;this.refresh()}0<q.length&&(d++,this.executeAnimations(q,g,f?1:p.steps,f?0:p.delay));0==d?k():m()}else this.stoppingCustomActions=this.executingCustomActions=
-!1,m(),null!=c&&c()});k()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,c){var f=this.getLinkForCell(c);null!=f&&"data:action/json,"==f.substring(0,17)&&this.setLinkForCell(c,this.updateCustomLink(b,f));if(this.isHtmlLabel(c)){var d=document.createElement("div");d.innerHTML=this.sanitizeHtml(this.getLabel(c));for(var e=d.getElementsByTagName("a"),l=!1,m=0;m<e.length;m++)f=e[m].getAttribute("href"),null!=f&&"data:action/json,"==f.substring(0,17)&&(e[m].setAttribute("href",this.updateCustomLink(b,
-f)),l=!0);l&&this.labelChanged(c,d.innerHTML)}};Graph.prototype.updateCustomLink=function(b,c){if("data:action/json,"==c.substring(0,17))try{var f=JSON.parse(c.substring(17));null!=f.actions&&(this.updateCustomLinkActions(b,f.actions),c="data:action/json,"+JSON.stringify(f))}catch(ea){}return c};Graph.prototype.updateCustomLinkActions=function(b,c){for(var f=0;f<c.length;f++){var d=c[f],e;for(e in d)this.updateCustomLinkAction(b,d[e],"cells"),this.updateCustomLinkAction(b,d[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=
-function(b,c,f){if(null!=c&&null!=c[f]){for(var d=[],e=0;e<c[f].length;e++)if("*"==c[f][e])d.push(c[f][e]);else{var l=b[c[f][e]];null!=l?""!=l&&d.push(l):d.push(c[f][e])}c[f]=d}};Graph.prototype.getCellsForAction=function(b,c){var f=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,c));if(null!=b.excludeCells){for(var d=[],e=0;e<f.length;e++)0>b.excludeCells.indexOf(f[e].id)&&d.push(f[e]);f=d}return f};Graph.prototype.getCellsById=function(b){var c=[];if(null!=b)for(var f=0;f<b.length;f++)if("*"==
-b[f])var d=this.model.getRoot(),c=c.concat(this.model.filterDescendants(function(b){return b!=d},d));else{var e=this.model.getCell(b[f]);null!=e&&c.push(e)}return c};var Q=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return Q.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var c=0;c<b.length;c++)if(0>
-mxUtils.indexOf(this.hiddenTags,b[c]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,c,f,d){var e=[];if(null!=b){c=null!=c?c:this.model.getDescendants(this.model.getRoot());for(var l=0,m={},g=0;g<b.length;g++)0<b[g].length&&(m[b[g]]=!0,l++);for(g=0;g<c.length;g++)if(f&&this.model.getParent(c[g])==this.model.root||this.model.isVertex(c[g])||this.model.isEdge(c[g])){var p=this.getTagsForCell(c[g]),k=!1;if(0<p.length&&(p=p.split(" "),p.length>=b.length)){for(var q=k=0;q<p.length&&k<l;q++)null!=
-m[p[q]]&&k++;k=k==l}k&&(1!=d||this.isCellVisible(c[g]))&&e.push(c[g])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var c=null,f=[],d=0;d<b.length;d++){var e=this.getTagsForCell(b[d]),f=[];if(0<e.length){for(var e=e.split(" "),l={},m=0;m<e.length;m++)if(null==c||null!=c[e[m]])l[e[m]]=!0,f.push(e[m]);c=l}else return[]}return f};Graph.prototype.getTagsForCells=function(b){for(var c=
-[],f={},d=0;d<b.length;d++){var e=this.getTagsForCell(b[d]);if(0<e.length)for(var e=e.split(" "),l=0;l<e.length;l++)null==f[e[l]]&&(f[e[l]]=!0,c.push(e[l]))}return c};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,c){if(0<b.length&&0<c.length){this.model.beginUpdate();try{for(var f=0;f<b.length;f++){for(var d=this.getTagsForCell(b[f]),e=d.split(" "),l=!1,m=0;m<c.length;m++){var g=mxUtils.trim(c[m]);""!=g&&0>mxUtils.indexOf(e,
-g)&&(d=0<d.length?d+" "+g:g,l=!0)}l&&this.setAttributeForCell(b[f],"tags",d)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,c){if(0<b.length&&0<c.length){this.model.beginUpdate();try{for(var f=0;f<b.length;f++){var d=this.getTagsForCell(b[f]);if(0<d.length){for(var e=d.split(" "),l=!1,m=0;m<c.length;m++){var g=mxUtils.indexOf(e,c[m]);0<=g&&(e.splice(g,1),l=!0)}l&&this.setAttributeForCell(b[f],"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=
-function(b){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],!this.model.isVisible(b[c]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,c){this.model.beginUpdate();try{for(var f=0;f<b.length;f++)this.model.setVisible(b[f],c)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(b,c,f,d){for(var e=0;e<b.length;e++)this.highlightCell(b[e],c,f,d)};Graph.prototype.highlightCell=function(b,c,f,d){c=null!=c?c:mxConstants.DEFAULT_VALID_COLOR;
-f=null!=f?f:1E3;b=this.view.getState(b);if(null!=b){var e=Math.max(5,mxUtils.getValue(b.style,mxConstants.STYLE_STROKEWIDTH,1)+4),l=new mxCellHighlight(this,c,e,!1);null!=d&&(l.opacity=d);l.highlight(b);window.setTimeout(function(){null!=l.shape&&(mxUtils.setPrefixedStyle(l.shape.node.style,"transition","all 1200ms ease-in-out"),l.shape.node.style.opacity=0);window.setTimeout(function(){l.destroy()},1200)},f)}};Graph.prototype.addSvgShadow=function(b,c,f,d){f=null!=f?f:!1;d=null!=d?d:!0;var e=b.ownerDocument,
-l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");l.setAttribute("id",this.shadowId);var m=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");m.setAttribute("in","SourceAlpha");m.setAttribute("stdDeviation",this.svgShadowBlur);m.setAttribute("result","blur");l.appendChild(m);m=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");m.setAttribute("in",
-"blur");m.setAttribute("dx",this.svgShadowSize);m.setAttribute("dy",this.svgShadowSize);m.setAttribute("result","offsetBlur");l.appendChild(m);m=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");m.setAttribute("flood-color",this.svgShadowColor);m.setAttribute("flood-opacity",this.svgShadowOpacity);m.setAttribute("result","offsetColor");l.appendChild(m);m=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");
-m.setAttribute("in","offsetColor");m.setAttribute("in2","offsetBlur");m.setAttribute("operator","in");m.setAttribute("result","offsetBlur");l.appendChild(m);m=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");m.setAttribute("in","SourceGraphic");m.setAttribute("in2","offsetBlur");l.appendChild(m);m=b.getElementsByTagName("defs");0==m.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=b.firstChild?
-b.insertBefore(e,b.firstChild):b.appendChild(e)):e=m[0];e.appendChild(l);f||(c=null!=c?c:b.getElementsByTagName("g")[0],null!=c&&(c.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(b.getAttribute("width")))&&d&&(b.setAttribute("width",parseInt(b.getAttribute("width"))+6),b.setAttribute("height",parseInt(b.getAttribute("height"))+6),c=b.getAttribute("viewBox"),null!=c&&0<c.length&&(c=c.split(" "),3<c.length&&(w=parseFloat(c[2])+6,h=parseFloat(c[3])+6,b.setAttribute("viewBox",c[0]+" "+
-c[1]+" "+w+" "+h))))));return l};Graph.prototype.setShadowVisible=function(b,c){mxClient.IS_SVG&&!mxClient.IS_SF&&(c=null!=c?c:!0,(this.shadowVisible=b)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),c&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var b=this.model.getChildCount(this.model.root),c,f=0;do c=this.model.getChildAt(this.model.root,
-f);while(f++<b&&"1"==mxUtils.getValue(this.getCellStyle(c),"locked","0"));null!=c&&this.setDefaultParent(c)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.bpmn2=
-[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.c4=[SHAPES_PATH+"/mxC4.js"];mxStencilRegistry.libraries.cisco19=[SHAPES_PATH+"/mxCisco19.js",STENCIL_PATH+"/cisco19.xml"];mxStencilRegistry.libraries.cisco_safe=[SHAPES_PATH+"/mxCiscoSafe.js",STENCIL_PATH+"/cisco_safe/architecture.xml",STENCIL_PATH+"/cisco_safe/business_icons.xml",STENCIL_PATH+"/cisco_safe/capability.xml",STENCIL_PATH+"/cisco_safe/design.xml",STENCIL_PATH+"/cisco_safe/iot_things_icons.xml",
-STENCIL_PATH+"/cisco_safe/people_places_things_icons.xml",STENCIL_PATH+"/cisco_safe/security_icons.xml",STENCIL_PATH+"/cisco_safe/technology_icons.xml",STENCIL_PATH+"/cisco_safe/threat.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.kubernetes=[SHAPES_PATH+"/mxKubernetes.js",STENCIL_PATH+"/kubernetes.xml"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];
-mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"];mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];
-mxStencilRegistry.libraries.ios7ui=[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/miscellaneous"]=
-[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/miscellaneous.xml"];mxStencilRegistry.libraries["electrical/signal_sources"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/signal_sources.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];
-mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]=[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];
-mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]=[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+
-"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.ibm=[SHAPES_PATH+"/mxIBM.js",STENCIL_PATH+"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=
-[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=
-[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=
-[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var c=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?c="mxgraph.er":"sysML"==b.substring(0,5)&&(c="mxgraph.sysml"));return c};var N=mxMarker.createMarker;mxMarker.createMarker=function(b,c,f,d,e,l,m,g,p,k){if(null!=f&&null==mxMarker.markers[f]){var q=this.getPackageForType(f);null!=q&&mxStencilRegistry.getStencil(q)}return N.apply(this,arguments)};PrintDialog.prototype.create=function(b,c){function f(){v.value=Math.max(1,
-Math.min(g,Math.max(parseInt(v.value),parseInt(n.value))));n.value=Math.max(1,Math.min(g,Math.min(parseInt(v.value),parseInt(n.value))))}function d(c){function f(c,f,l){var m=c.useCssTransforms,g=c.currentTranslate,k=c.currentScale,p=c.view.translate,q=c.view.scale;c.useCssTransforms&&(c.useCssTransforms=!1,c.currentTranslate=new mxPoint(0,0),c.currentScale=1,c.view.translate=new mxPoint(0,0),c.view.scale=1);var t=c.getGraphBounds(),n=0,v=0,u=N.get(),y=1/c.pageScale,C=z.checked;if(C)var y=parseInt(K.value),
-D=parseInt(B.value),y=Math.min(u.height*D/(t.height/c.view.scale),u.width*y/(t.width/c.view.scale));else y=parseInt(x.value)/(100*c.pageScale),isNaN(y)&&(d=1/c.pageScale,x.value="100 %");u=mxRectangle.fromRectangle(u);u.width=Math.ceil(u.width*d);u.height=Math.ceil(u.height*d);y*=d;!C&&c.pageVisible?(t=c.getPageLayout(),n-=t.x*u.width,v-=t.y*u.height):C=!0;if(null==f){f=PrintDialog.createPrintPreview(c,y,u,0,n,v,C);f.pageSelector=!1;f.mathEnabled=!1;n=b.getCurrentFile();null!=n&&(f.title=n.getTitle());
-var E=f.writeHead;f.writeHead=function(f){E.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)f.writeln('<style type="text/css">'),f.writeln(Editor.mathJaxWebkitCss),f.writeln("</style>");mxClient.IS_GC&&(f.writeln('<style type="text/css">'),f.writeln("@media print {"),f.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),f.writeln("}"),f.writeln("</style>"));null!=b.editor.fontCss&&(f.writeln('<style type="text/css">'),f.writeln(b.editor.fontCss),f.writeln("</style>"));for(var d=
-c.getCustomFonts(),e=0;e<d.length;e++){var l=d[e].name,m=d[e].url;Graph.isCssFontUrl(m)?f.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(m)+'" charset="UTF-8" type="text/css">'):(f.writeln('<style type="text/css">'),f.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(l)+'";\nsrc: url("'+mxUtils.htmlEntities(m)+'");\n}'),f.writeln("</style>"))}};if("undefined"!==typeof MathJax){var I=f.renderPage;f.renderPage=function(c,f,d,e,l,m){var g=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&
-!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var k=I.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:k.className="geDisableMathJax";return k}}n=null;v=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(n=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());f.open(null,null,l,!0);e.enableFlowAnimation=v;null!=n&&(e.stylesheet=n,e.refresh())}else{u=c.background;if(null==
-u||""==u||u==mxConstants.NONE)u="#ffffff";f.backgroundColor=u;f.autoOrigin=C;f.appendGraph(c,y,n,v,l,!0);l=c.getCustomFonts();if(null!=f.wnd)for(n=0;n<l.length;n++)v=l[n].name,C=l[n].url,Graph.isCssFontUrl(C)?f.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(C)+'" charset="UTF-8" type="text/css">'):(f.wnd.document.writeln('<style type="text/css">'),f.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(v)+'";\nsrc: url("'+mxUtils.htmlEntities(C)+'");\n}'),
-f.wnd.document.writeln("</style>"))}m&&(c.useCssTransforms=m,c.currentTranslate=g,c.currentScale=k,c.view.translate=p,c.view.scale=q);return f}var d=parseInt(L.value)/100;isNaN(d)&&(d=1,L.value="100 %");var d=.75*d,l=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(l=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var m=n.value,g=v.value,k=!q.checked,t=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,q.checked,m,g,z.checked,K.value,B.value,parseInt(x.value)/100,parseInt(L.value)/
-100,N.get());else{k&&(k=m==p&&g==p);if(!k&&null!=b.pages&&b.pages.length){var u=0,k=b.pages.length-1;q.checked||(u=parseInt(m)-1,k=parseInt(g)-1);for(var y=u;y<=k;y++){var C=b.pages[y],m=C==b.currentPage?e:null;if(null==m){var m=b.createTemporaryGraph(e.stylesheet),g=!0,u=!1,D=null,E=null;null==C.viewState&&null==C.root&&b.updatePageRoot(C);null!=C.viewState&&(g=C.viewState.pageVisible,u=C.viewState.mathEnabled,D=C.viewState.background,E=C.viewState.backgroundImage,m.extFonts=C.viewState.extFonts);
-m.background=D;m.backgroundImage=null!=E?new mxImage(E.src,E.width,E.height):null;m.pageVisible=g;m.mathEnabled=u;var I=m.getGlobalVariable;m.getGlobalVariable=function(c){return"page"==c?C.getName():"pagenumber"==c?y+1:"pagecount"==c?null!=b.pages?b.pages.length:1:I.apply(this,arguments)};document.body.appendChild(m.container);b.updatePageRoot(C);m.model.setRoot(C.root)}t=f(m,t,y!=k);m!=e&&m.container.parentNode.removeChild(m.container)}}else t=f(e);null==t?b.handleError({message:mxResources.get("errorUpdatingPreview")}):
-(t.mathEnabled&&(k=t.wnd.document,c&&(t.wnd.IMMEDIATE_PRINT=!0),k.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&c&&PrintDialog.printPreview(t));null!=l&&(e.stylesheet=l,e.refresh())}}var e=b.editor.graph,l=document.createElement("div"),m=document.createElement("h3");m.style.width="100%";m.style.textAlign="center";m.style.marginTop="0px";mxUtils.write(m,c||mxResources.get("print"));l.appendChild(m);var g=1,p=1,k=
-document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type","radio");q.setAttribute("name","pages-printdialog");k.appendChild(q);m=document.createElement("span");mxUtils.write(m,mxResources.get("printAllPages"));k.appendChild(m);mxUtils.br(k);var t=q.cloneNode(!0);q.setAttribute("checked","checked");
-t.setAttribute("value","range");k.appendChild(t);m=document.createElement("span");mxUtils.write(m,mxResources.get("pages")+":");k.appendChild(m);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","1");n.setAttribute("type","number");n.setAttribute("min","1");n.style.width="50px";k.appendChild(n);m=document.createElement("span");mxUtils.write(m,mxResources.get("to"));k.appendChild(m);var v=n.cloneNode(!0);k.appendChild(v);mxEvent.addListener(n,"focus",
-function(){t.checked=!0});mxEvent.addListener(v,"focus",function(){t.checked=!0});mxEvent.addListener(n,"change",f);mxEvent.addListener(v,"change",f);if(null!=b.pages&&(g=b.pages.length,null!=b.currentPage))for(m=0;m<b.pages.length;m++)if(b.currentPage==b.pages[m]){p=m+1;n.value=p;v.value=p;break}n.setAttribute("max",g);v.setAttribute("max",g);b.isPagesEnabled()?1<g&&(l.appendChild(k),t.checked=!0):t.checked=!0;var u=document.createElement("div");u.style.marginBottom="10px";var y=document.createElement("input");
-y.style.marginRight="8px";y.setAttribute("value","adjust");y.setAttribute("type","radio");y.setAttribute("name","printZoom");u.appendChild(y);m=document.createElement("span");mxUtils.write(m,mxResources.get("adjustTo"));u.appendChild(m);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width="50px";u.appendChild(x);mxEvent.addListener(x,"focus",function(){y.checked=!0});l.appendChild(u);var k=k.cloneNode(!1),z=y.cloneNode(!0);z.setAttribute("value",
-"fit");y.setAttribute("checked","checked");m=document.createElement("div");m.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";m.appendChild(z);k.appendChild(m);u=document.createElement("table");u.style.display="inline-block";var C=document.createElement("tbody"),D=document.createElement("tr"),E=D.cloneNode(!0),I=document.createElement("td"),A=I.cloneNode(!0),F=I.cloneNode(!0),G=I.cloneNode(!0),H=I.cloneNode(!0),J=I.cloneNode(!0);I.style.textAlign="right";G.style.textAlign=
-"right";mxUtils.write(I,mxResources.get("fitTo"));var K=document.createElement("input");K.style.cssText="margin:0 8px 0 8px;";K.setAttribute("value","1");K.setAttribute("min","1");K.setAttribute("type","number");K.style.width="40px";A.appendChild(K);m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsAcross"));F.appendChild(m);mxUtils.write(G,mxResources.get("fitToBy"));var B=K.cloneNode(!0);H.appendChild(B);mxEvent.addListener(K,"focus",function(){z.checked=!0});mxEvent.addListener(B,
-"focus",function(){z.checked=!0});m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsDown"));J.appendChild(m);D.appendChild(I);D.appendChild(A);D.appendChild(F);E.appendChild(G);E.appendChild(H);E.appendChild(J);C.appendChild(D);C.appendChild(E);u.appendChild(C);k.appendChild(u);l.appendChild(k);k=document.createElement("div");m=document.createElement("div");m.style.fontWeight="bold";m.style.marginBottom="12px";mxUtils.write(m,mxResources.get("paperSize"));k.appendChild(m);
-m=document.createElement("div");m.style.marginBottom="12px";var N=PageSetupDialog.addPageFormatPanel(m,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);k.appendChild(m);m=document.createElement("span");mxUtils.write(m,mxResources.get("pageScale"));k.appendChild(m);var L=document.createElement("input");L.style.cssText="margin:0 8px 0 8px;";L.setAttribute("value","100 %");L.style.width="60px";k.appendChild(L);l.appendChild(k);m=document.createElement("div");m.style.cssText=
-"text-align:right;margin:48px 0 0 0;";k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});k.className="geBtn";b.editor.cancelFirst&&m.appendChild(k);b.isOffline()||(u=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),u.className="geBtn",m.appendChild(u));PrintDialog.previewEnabled&&(u=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();d(!1)}),u.className="geBtn",m.appendChild(u));u=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?
-"print":"ok"),function(){b.hideDialog();d(!0)});u.className="geBtn gePrimaryBtn";m.appendChild(u);b.editor.cancelFirst||m.appendChild(k);l.appendChild(m);this.container=l};var M=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 b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&
-(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}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 M.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 Y=document.createElement("canvas"),W=new Image;W.onload=function(){try{Y.getContext("2d").drawImage(W,0,0);var b=Y.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=b&&6<b.length}catch(R){}};W.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(L){}})();
+arguments)}}return b};var E=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){E.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,b.text,b.secondLabel,b.control]};var F=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){F.apply(this,arguments);this.enumerationState=0};var K=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=
+function(b){null!=b.shape&&this.redrawEnumerationState(b);return K.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(b){b=mxUtils.getValue(b.style,"enumerateValue","");""==b&&(b=++this.enumerationState);return'<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(b)+"</div>"};mxGraphView.prototype.redrawEnumerationState=function(b){var c="1"==mxUtils.getValue(b.style,"enumerate",0);c&&null==b.secondLabel?(b.secondLabel=
+new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),b.secondLabel.size=12,b.secondLabel.state=b,b.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,this.graph.cellRenderer.initializeLabel(b,b.secondLabel)):c||null==b.secondLabel||(b.secondLabel.destroy(),b.secondLabel=null);c=b.secondLabel;if(null!=c){var f=b.view.scale,d=this.createEnumerationValue(b);b=this.graph.model.isVertex(b.cell)?new mxRectangle(b.x+b.width-4*f,b.y+4*f,0,0):mxRectangle.fromPoint(b.view.getPoint(b));
+c.bounds.equals(b)&&c.value==d&&c.scale==f||(c.bounds=b,c.value=d,c.scale=f,c.redraw())}};var J=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){J.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||
+this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};
+var I=Graph.prototype.refresh;Graph.prototype.refresh=function(){I.apply(this,arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var G=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){G.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==
+b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,c){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var f=!1,d=0,e=0,l=mxUtils.bind(this,function(){f||
+(f=!0,this.model.beginUpdate())}),m=mxUtils.bind(this,function(){f&&(f=!1,this.model.endUpdate())}),g=mxUtils.bind(this,function(){0<d&&d--;0==d&&k()}),k=mxUtils.bind(this,function(){if(e<b.length){var f=this.stoppingCustomActions,p=b[e++],q=[];if(null!=p.open)if(m(),this.isCustomLink(p.open)){if(!this.customLinkClicked(p.open))return}else this.openLink(p.open);null==p.wait||f||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;g()}),
+d++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=p.wait?parseInt(p.wait):1E3),m());null!=p.opacity&&null!=p.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(p.opacity,!0)),p.opacity.value);null!=p.fadeIn&&(d++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeIn,!0)),0,1,g,f?0:p.fadeIn.delay));null!=p.fadeOut&&(d++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeOut,!0)),1,0,g,f?0:p.fadeOut.delay));
+null!=p.wipeIn&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeIn,!0),!0)));null!=p.wipeOut&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeOut,!0),!1)));null!=p.toggle&&(l(),this.toggleCells(this.getCellsForAction(p.toggle,!0)));if(null!=p.show){l();var t=this.getCellsForAction(p.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(t),1);this.setCellsVisible(t,!0)}null!=p.hide&&(l(),t=this.getCellsForAction(p.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(t),
+0),this.setCellsVisible(t,!1));null!=p.toggleStyle&&null!=p.toggleStyle.key&&(l(),this.toggleCellStyles(p.toggleStyle.key,null!=p.toggleStyle.defaultValue?p.toggleStyle.defaultValue:"0",this.getCellsForAction(p.toggleStyle,!0)));null!=p.style&&null!=p.style.key&&(l(),this.setCellStyles(p.style.key,p.style.value,this.getCellsForAction(p.style,!0)));t=[];null!=p.select&&this.isEnabled()&&(t=this.getCellsForAction(p.select),this.setSelectionCells(t));null!=p.highlight&&(t=this.getCellsForAction(p.highlight),
+this.highlightCells(t,p.highlight.color,p.highlight.duration,p.highlight.opacity));null!=p.scroll&&(t=this.getCellsForAction(p.scroll));null!=p.viewbox&&this.fitWindow(p.viewbox,p.viewbox.border);0<t.length&&this.scrollCellToVisible(t[0]);if(null!=p.tags){t=[];null!=p.tags.hidden&&(t=t.concat(p.tags.hidden));if(null!=p.tags.visible)for(var n=this.getAllTags(),v=0;v<n.length;v++)0>mxUtils.indexOf(p.tags.visible,n[v])&&0>mxUtils.indexOf(t,n[v])&&t.push(n[v]);this.hiddenTags=t;this.refresh()}0<q.length&&
+(d++,this.executeAnimations(q,g,f?1:p.steps,f?0:p.delay));0==d?k():m()}else this.stoppingCustomActions=this.executingCustomActions=!1,m(),null!=c&&c()});k()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,c){var f=this.getLinkForCell(c);null!=f&&"data:action/json,"==f.substring(0,17)&&this.setLinkForCell(c,this.updateCustomLink(b,f));if(this.isHtmlLabel(c)){var d=document.createElement("div");d.innerHTML=this.sanitizeHtml(this.getLabel(c));for(var e=d.getElementsByTagName("a"),l=!1,m=0;m<
+e.length;m++)f=e[m].getAttribute("href"),null!=f&&"data:action/json,"==f.substring(0,17)&&(e[m].setAttribute("href",this.updateCustomLink(b,f)),l=!0);l&&this.labelChanged(c,d.innerHTML)}};Graph.prototype.updateCustomLink=function(b,c){if("data:action/json,"==c.substring(0,17))try{var f=JSON.parse(c.substring(17));null!=f.actions&&(this.updateCustomLinkActions(b,f.actions),c="data:action/json,"+JSON.stringify(f))}catch(ea){}return c};Graph.prototype.updateCustomLinkActions=function(b,c){for(var f=
+0;f<c.length;f++){var d=c[f],e;for(e in d)this.updateCustomLinkAction(b,d[e],"cells"),this.updateCustomLinkAction(b,d[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,c,f){if(null!=c&&null!=c[f]){for(var d=[],e=0;e<c[f].length;e++)if("*"==c[f][e])d.push(c[f][e]);else{var l=b[c[f][e]];null!=l?""!=l&&d.push(l):d.push(c[f][e])}c[f]=d}};Graph.prototype.getCellsForAction=function(b,c){var f=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,c));if(null!=b.excludeCells){for(var d=
+[],e=0;e<f.length;e++)0>b.excludeCells.indexOf(f[e].id)&&d.push(f[e]);f=d}return f};Graph.prototype.getCellsById=function(b){var c=[];if(null!=b)for(var f=0;f<b.length;f++)if("*"==b[f])var d=this.model.getRoot(),c=c.concat(this.model.filterDescendants(function(b){return b!=d},d));else{var e=this.model.getCell(b[f]);null!=e&&c.push(e)}return c};var Q=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return Q.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};
+Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var c=0;c<b.length;c++)if(0>mxUtils.indexOf(this.hiddenTags,b[c]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,c,f,d){var e=[];if(null!=b){c=null!=c?c:this.model.getDescendants(this.model.getRoot());for(var l=0,m={},g=0;g<b.length;g++)0<b[g].length&&(m[b[g]]=!0,l++);for(g=0;g<c.length;g++)if(f&&this.model.getParent(c[g])==
+this.model.root||this.model.isVertex(c[g])||this.model.isEdge(c[g])){var p=this.getTagsForCell(c[g]),k=!1;if(0<p.length&&(p=p.split(" "),p.length>=b.length)){for(var q=k=0;q<p.length&&k<l;q++)null!=m[p[q]]&&k++;k=k==l}k&&(1!=d||this.isCellVisible(c[g]))&&e.push(c[g])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var c=null,f=[],d=0;d<b.length;d++){var e=this.getTagsForCell(b[d]),
+f=[];if(0<e.length){for(var e=e.split(" "),l={},m=0;m<e.length;m++)if(null==c||null!=c[e[m]])l[e[m]]=!0,f.push(e[m]);c=l}else return[]}return f};Graph.prototype.getTagsForCells=function(b){for(var c=[],f={},d=0;d<b.length;d++){var e=this.getTagsForCell(b[d]);if(0<e.length)for(var e=e.split(" "),l=0;l<e.length;l++)null==f[e[l]]&&(f[e[l]]=!0,c.push(e[l]))}return c};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,c){if(0<
+b.length&&0<c.length){this.model.beginUpdate();try{for(var f=0;f<b.length;f++){for(var d=this.getTagsForCell(b[f]),e=d.split(" "),l=!1,m=0;m<c.length;m++){var g=mxUtils.trim(c[m]);""!=g&&0>mxUtils.indexOf(e,g)&&(d=0<d.length?d+" "+g:g,l=!0)}l&&this.setAttributeForCell(b[f],"tags",d)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,c){if(0<b.length&&0<c.length){this.model.beginUpdate();try{for(var f=0;f<b.length;f++){var d=this.getTagsForCell(b[f]);if(0<d.length){for(var e=
+d.split(" "),l=!1,m=0;m<c.length;m++){var g=mxUtils.indexOf(e,c[m]);0<=g&&(e.splice(g,1),l=!0)}l&&this.setAttributeForCell(b[f],"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=function(b){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],!this.model.isVisible(b[c]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,c){this.model.beginUpdate();try{for(var f=0;f<b.length;f++)this.model.setVisible(b[f],c)}finally{this.model.endUpdate()}};
+Graph.prototype.highlightCells=function(b,c,f,d){for(var e=0;e<b.length;e++)this.highlightCell(b[e],c,f,d)};Graph.prototype.highlightCell=function(b,c,f,d){c=null!=c?c:mxConstants.DEFAULT_VALID_COLOR;f=null!=f?f:1E3;b=this.view.getState(b);if(null!=b){var e=Math.max(5,mxUtils.getValue(b.style,mxConstants.STYLE_STROKEWIDTH,1)+4),l=new mxCellHighlight(this,c,e,!1);null!=d&&(l.opacity=d);l.highlight(b);window.setTimeout(function(){null!=l.shape&&(mxUtils.setPrefixedStyle(l.shape.node.style,"transition",
+"all 1200ms ease-in-out"),l.shape.node.style.opacity=0);window.setTimeout(function(){l.destroy()},1200)},f)}};Graph.prototype.addSvgShadow=function(b,c,f,d){f=null!=f?f:!1;d=null!=d?d:!0;var e=b.ownerDocument,l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");l.setAttribute("id",this.shadowId);var m=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");m.setAttribute("in","SourceAlpha");m.setAttribute("stdDeviation",
+this.svgShadowBlur);m.setAttribute("result","blur");l.appendChild(m);m=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");m.setAttribute("in","blur");m.setAttribute("dx",this.svgShadowSize);m.setAttribute("dy",this.svgShadowSize);m.setAttribute("result","offsetBlur");l.appendChild(m);m=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");m.setAttribute("flood-color",this.svgShadowColor);m.setAttribute("flood-opacity",
+this.svgShadowOpacity);m.setAttribute("result","offsetColor");l.appendChild(m);m=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");m.setAttribute("in","offsetColor");m.setAttribute("in2","offsetBlur");m.setAttribute("operator","in");m.setAttribute("result","offsetBlur");l.appendChild(m);m=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");m.setAttribute("in","SourceGraphic");m.setAttribute("in2",
+"offsetBlur");l.appendChild(m);m=b.getElementsByTagName("defs");0==m.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=b.firstChild?b.insertBefore(e,b.firstChild):b.appendChild(e)):e=m[0];e.appendChild(l);f||(c=null!=c?c:b.getElementsByTagName("g")[0],null!=c&&(c.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(b.getAttribute("width")))&&d&&(b.setAttribute("width",parseInt(b.getAttribute("width"))+6),b.setAttribute("height",
+parseInt(b.getAttribute("height"))+6),c=b.getAttribute("viewBox"),null!=c&&0<c.length&&(c=c.split(" "),3<c.length&&(w=parseFloat(c[2])+6,h=parseFloat(c[3])+6,b.setAttribute("viewBox",c[0]+" "+c[1]+" "+w+" "+h))))));return l};Graph.prototype.setShadowVisible=function(b,c){mxClient.IS_SVG&&!mxClient.IS_SF&&(c=null!=c?c:!0,(this.shadowVisible=b)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),c&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};
+Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var b=this.model.getChildCount(this.model.root),c,f=0;do c=this.model.getChildAt(this.model.root,f);while(f++<b&&"1"==mxUtils.getValue(this.getCellStyle(c),"locked","0"));null!=c&&this.setDefaultParent(c)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+
+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.bpmn2=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.c4=[SHAPES_PATH+"/mxC4.js"];mxStencilRegistry.libraries.cisco19=[SHAPES_PATH+"/mxCisco19.js",STENCIL_PATH+"/cisco19.xml"];mxStencilRegistry.libraries.cisco_safe=[SHAPES_PATH+"/mxCiscoSafe.js",STENCIL_PATH+"/cisco_safe/architecture.xml",
+STENCIL_PATH+"/cisco_safe/business_icons.xml",STENCIL_PATH+"/cisco_safe/capability.xml",STENCIL_PATH+"/cisco_safe/design.xml",STENCIL_PATH+"/cisco_safe/iot_things_icons.xml",STENCIL_PATH+"/cisco_safe/people_places_things_icons.xml",STENCIL_PATH+"/cisco_safe/security_icons.xml",STENCIL_PATH+"/cisco_safe/technology_icons.xml",STENCIL_PATH+"/cisco_safe/threat.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.kubernetes=
+[SHAPES_PATH+"/mxKubernetes.js",STENCIL_PATH+"/kubernetes.xml"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"];
+mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui=[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]=
+[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/miscellaneous"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/miscellaneous.xml"];mxStencilRegistry.libraries["electrical/signal_sources"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/signal_sources.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries.infographic=
+[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]=[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];
+mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]=[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",SHAPES_PATH+
+"/mxBasic.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.ibm=[SHAPES_PATH+"/mxIBM.js",STENCIL_PATH+"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=
+[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",
+STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+
+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var c=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?c="mxgraph.er":"sysML"==b.substring(0,5)&&(c="mxgraph.sysml"));return c};var N=mxMarker.createMarker;mxMarker.createMarker=function(b,c,f,d,e,l,m,g,p,k){if(null!=f&&null==mxMarker.markers[f]){var q=this.getPackageForType(f);null!=q&&
+mxStencilRegistry.getStencil(q)}return N.apply(this,arguments)};PrintDialog.prototype.create=function(b,c){function f(){v.value=Math.max(1,Math.min(g,Math.max(parseInt(v.value),parseInt(n.value))));n.value=Math.max(1,Math.min(g,Math.min(parseInt(v.value),parseInt(n.value))))}function d(c){function f(c,f,l){var m=c.useCssTransforms,g=c.currentTranslate,k=c.currentScale,p=c.view.translate,q=c.view.scale;c.useCssTransforms&&(c.useCssTransforms=!1,c.currentTranslate=new mxPoint(0,0),c.currentScale=1,
+c.view.translate=new mxPoint(0,0),c.view.scale=1);var t=c.getGraphBounds(),n=0,v=0,y=N.get(),u=1/c.pageScale,C=z.checked;if(C)var u=parseInt(K.value),D=parseInt(B.value),u=Math.min(y.height*D/(t.height/c.view.scale),y.width*u/(t.width/c.view.scale));else u=parseInt(x.value)/(100*c.pageScale),isNaN(u)&&(d=1/c.pageScale,x.value="100 %");y=mxRectangle.fromRectangle(y);y.width=Math.ceil(y.width*d);y.height=Math.ceil(y.height*d);u*=d;!C&&c.pageVisible?(t=c.getPageLayout(),n-=t.x*y.width,v-=t.y*y.height):
+C=!0;if(null==f){f=PrintDialog.createPrintPreview(c,u,y,0,n,v,C);f.pageSelector=!1;f.mathEnabled=!1;n=b.getCurrentFile();null!=n&&(f.title=n.getTitle());var E=f.writeHead;f.writeHead=function(f){E.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)f.writeln('<style type="text/css">'),f.writeln(Editor.mathJaxWebkitCss),f.writeln("</style>");mxClient.IS_GC&&(f.writeln('<style type="text/css">'),f.writeln("@media print {"),f.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),f.writeln("}"),
+f.writeln("</style>"));null!=b.editor.fontCss&&(f.writeln('<style type="text/css">'),f.writeln(b.editor.fontCss),f.writeln("</style>"));for(var d=c.getCustomFonts(),e=0;e<d.length;e++){var l=d[e].name,m=d[e].url;Graph.isCssFontUrl(m)?f.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(m)+'" charset="UTF-8" type="text/css">'):(f.writeln('<style type="text/css">'),f.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(l)+'";\nsrc: url("'+mxUtils.htmlEntities(m)+'");\n}'),f.writeln("</style>"))}};
+if("undefined"!==typeof MathJax){var I=f.renderPage;f.renderPage=function(c,f,d,e,l,m){var g=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var k=I.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:k.className="geDisableMathJax";return k}}n=null;v=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(n=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),
+e.refresh());f.open(null,null,l,!0);e.enableFlowAnimation=v;null!=n&&(e.stylesheet=n,e.refresh())}else{y=c.background;if(null==y||""==y||y==mxConstants.NONE)y="#ffffff";f.backgroundColor=y;f.autoOrigin=C;f.appendGraph(c,u,n,v,l,!0);l=c.getCustomFonts();if(null!=f.wnd)for(n=0;n<l.length;n++)v=l[n].name,C=l[n].url,Graph.isCssFontUrl(C)?f.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(C)+'" charset="UTF-8" type="text/css">'):(f.wnd.document.writeln('<style type="text/css">'),
+f.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(v)+'";\nsrc: url("'+mxUtils.htmlEntities(C)+'");\n}'),f.wnd.document.writeln("</style>"))}m&&(c.useCssTransforms=m,c.currentTranslate=g,c.currentScale=k,c.view.translate=p,c.view.scale=q);return f}var d=parseInt(L.value)/100;isNaN(d)&&(d=1,L.value="100 %");var d=.75*d,l=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(l=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var m=n.value,g=v.value,k=!q.checked,
+t=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,q.checked,m,g,z.checked,K.value,B.value,parseInt(x.value)/100,parseInt(L.value)/100,N.get());else{k&&(k=m==p&&g==p);if(!k&&null!=b.pages&&b.pages.length){var y=0,k=b.pages.length-1;q.checked||(y=parseInt(m)-1,k=parseInt(g)-1);for(var u=y;u<=k;u++){var C=b.pages[u],m=C==b.currentPage?e:null;if(null==m){var m=b.createTemporaryGraph(e.stylesheet),g=!0,y=!1,D=null,E=null;null==C.viewState&&null==C.root&&b.updatePageRoot(C);null!=C.viewState&&
+(g=C.viewState.pageVisible,y=C.viewState.mathEnabled,D=C.viewState.background,E=C.viewState.backgroundImage,m.extFonts=C.viewState.extFonts);m.background=D;m.backgroundImage=null!=E?new mxImage(E.src,E.width,E.height):null;m.pageVisible=g;m.mathEnabled=y;var I=m.getGlobalVariable;m.getGlobalVariable=function(c){return"page"==c?C.getName():"pagenumber"==c?u+1:"pagecount"==c?null!=b.pages?b.pages.length:1:I.apply(this,arguments)};document.body.appendChild(m.container);b.updatePageRoot(C);m.model.setRoot(C.root)}t=
+f(m,t,u!=k);m!=e&&m.container.parentNode.removeChild(m.container)}}else t=f(e);null==t?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(k=t.wnd.document,c&&(t.wnd.IMMEDIATE_PRINT=!0),k.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&c&&PrintDialog.printPreview(t));null!=l&&(e.stylesheet=l,e.refresh())}}var e=b.editor.graph,l=document.createElement("div"),m=document.createElement("h3");
+m.style.width="100%";m.style.textAlign="center";m.style.marginTop="0px";mxUtils.write(m,c||mxResources.get("print"));l.appendChild(m);var g=1,p=1,k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type","radio");q.setAttribute("name","pages-printdialog");k.appendChild(q);m=document.createElement("span");
+mxUtils.write(m,mxResources.get("printAllPages"));k.appendChild(m);mxUtils.br(k);var t=q.cloneNode(!0);q.setAttribute("checked","checked");t.setAttribute("value","range");k.appendChild(t);m=document.createElement("span");mxUtils.write(m,mxResources.get("pages")+":");k.appendChild(m);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","1");n.setAttribute("type","number");n.setAttribute("min","1");n.style.width="50px";k.appendChild(n);m=document.createElement("span");
+mxUtils.write(m,mxResources.get("to"));k.appendChild(m);var v=n.cloneNode(!0);k.appendChild(v);mxEvent.addListener(n,"focus",function(){t.checked=!0});mxEvent.addListener(v,"focus",function(){t.checked=!0});mxEvent.addListener(n,"change",f);mxEvent.addListener(v,"change",f);if(null!=b.pages&&(g=b.pages.length,null!=b.currentPage))for(m=0;m<b.pages.length;m++)if(b.currentPage==b.pages[m]){p=m+1;n.value=p;v.value=p;break}n.setAttribute("max",g);v.setAttribute("max",g);b.isPagesEnabled()?1<g&&(l.appendChild(k),
+t.checked=!0):t.checked=!0;var y=document.createElement("div");y.style.marginBottom="10px";var u=document.createElement("input");u.style.marginRight="8px";u.setAttribute("value","adjust");u.setAttribute("type","radio");u.setAttribute("name","printZoom");y.appendChild(u);m=document.createElement("span");mxUtils.write(m,mxResources.get("adjustTo"));y.appendChild(m);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width="50px";y.appendChild(x);
+mxEvent.addListener(x,"focus",function(){u.checked=!0});l.appendChild(y);var k=k.cloneNode(!1),z=u.cloneNode(!0);z.setAttribute("value","fit");u.setAttribute("checked","checked");m=document.createElement("div");m.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";m.appendChild(z);k.appendChild(m);y=document.createElement("table");y.style.display="inline-block";var C=document.createElement("tbody"),D=document.createElement("tr"),E=D.cloneNode(!0),I=document.createElement("td"),
+A=I.cloneNode(!0),F=I.cloneNode(!0),G=I.cloneNode(!0),H=I.cloneNode(!0),J=I.cloneNode(!0);I.style.textAlign="right";G.style.textAlign="right";mxUtils.write(I,mxResources.get("fitTo"));var K=document.createElement("input");K.style.cssText="margin:0 8px 0 8px;";K.setAttribute("value","1");K.setAttribute("min","1");K.setAttribute("type","number");K.style.width="40px";A.appendChild(K);m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsAcross"));F.appendChild(m);mxUtils.write(G,
+mxResources.get("fitToBy"));var B=K.cloneNode(!0);H.appendChild(B);mxEvent.addListener(K,"focus",function(){z.checked=!0});mxEvent.addListener(B,"focus",function(){z.checked=!0});m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsDown"));J.appendChild(m);D.appendChild(I);D.appendChild(A);D.appendChild(F);E.appendChild(G);E.appendChild(H);E.appendChild(J);C.appendChild(D);C.appendChild(E);y.appendChild(C);k.appendChild(y);l.appendChild(k);k=document.createElement("div");m=
+document.createElement("div");m.style.fontWeight="bold";m.style.marginBottom="12px";mxUtils.write(m,mxResources.get("paperSize"));k.appendChild(m);m=document.createElement("div");m.style.marginBottom="12px";var N=PageSetupDialog.addPageFormatPanel(m,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);k.appendChild(m);m=document.createElement("span");mxUtils.write(m,mxResources.get("pageScale"));k.appendChild(m);var L=document.createElement("input");L.style.cssText="margin:0 8px 0 8px;";
+L.setAttribute("value","100 %");L.style.width="60px";k.appendChild(L);l.appendChild(k);m=document.createElement("div");m.style.cssText="text-align:right;margin:48px 0 0 0;";k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});k.className="geBtn";b.editor.cancelFirst&&m.appendChild(k);b.isOffline()||(y=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),y.className="geBtn",m.appendChild(y));PrintDialog.previewEnabled&&(y=
+mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();d(!1)}),y.className="geBtn",m.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();d(!0)});y.className="geBtn gePrimaryBtn";m.appendChild(y);b.editor.cancelFirst||m.appendChild(k);l.appendChild(m);this.container=l};var M=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 b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}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 M.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 Y=document.createElement("canvas"),W=new Image;W.onload=function(){try{Y.getContext("2d").drawImage(W,0,0);var b=Y.toDataURL("image/png");Editor.prototype.useCanvasForExport=
+null!=b&&6<b.length}catch(R){}};W.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(L){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,d,c){c.ui=b.ui;return d};b.afterDecode=function(b,d,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(b,d,c){c.ui=b.ui;return d};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.2.7";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(b,d,c){c.ui=b.ui;return d};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.3.0";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="1"==urlParams.dev?"/cache":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.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(b,c,d,e,g,k,n){k=null!=k?k:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -10863,101 +10868,101 @@ null!=k&&k.translate(-f.x,-f.y)}g.appendChild(this.sidebar.createVertexTemplateF
mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=y.getSelectionCells(),f=y.view.getBounds(c),d=y.view.scale;f.x/=d;f.y/=d;f.width/=d;f.height/=d;f.x-=y.view.translate.x;f.y-=y.view.translate.y;E(c,f)}mxEvent.consume(b)});mxEvent.addGestureListeners(g,function(){},mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.panningManager&&null!=y.graphHandler.first&&(y.graphHandler.suspend(),null!=y.graphHandler.hint&&(y.graphHandler.hint.style.visibility="hidden"),g.style.backgroundColor=
"#f1f3f4",g.style.cursor="copy",y.panningManager.stop(),y.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.panningManager&&null!=y.graphHandler&&(g.style.backgroundColor="",g.style.cursor="default",this.sidebar.showTooltips=!0,y.panningManager.stop(),y.graphHandler.reset(),y.isMouseDown=!1,y.autoScroll=!0,F(b),mxEvent.consume(b))}));mxEvent.addListener(g,"mouseleave",mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.graphHandler.first&&(y.graphHandler.resume(),
null!=y.graphHandler.hint&&(y.graphHandler.hint.style.visibility="visible"),g.style.backgroundColor="",g.style.cursor="",y.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(g,"dragover",mxUtils.bind(this,function(b){g.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";g.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(g,"drop",mxUtils.bind(this,function(b){g.style.cursor="";g.style.backgroundColor="";0<b.dataTransfer.files.length&&
-this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(f,d,e,k,p,n,t,q,v){if(null!=f&&"image/"==d.substring(0,6))f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(f),f=[new mxCell("",new mxGeometry(0,0,p,n),f)],f[0].vertex=!0,E(f,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),
-l=null);else{var y=!1,u=mxUtils.bind(this,function(f,d){if(null!=f&&"application/pdf"==d){var e=Editor.extractGraphModelFromPdf(f);null!=e&&0<e.length&&(f=e)}if(null!=f)if(e=mxUtils.parseXml(f),"mxlibrary"==e.documentElement.nodeName)try{var k=JSON.parse(mxUtils.getTextContent(e.documentElement));m(k,g);c=c.concat(k);D(b);this.spinner.stop();y=!0}catch(qa){}else if("mxfile"==e.documentElement.nodeName)try{for(var p=e.documentElement.getElementsByTagName("diagram"),k=0;k<p.length;k++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[k])),
-t=this.editor.graph.getBoundingBoxFromGeometry(n);E(n,new mxRectangle(0,0,t.width,t.height),b)}y=!0}catch(qa){null!=window.console&&console.log("error in drop handler:",qa)}y||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),l=null)});null!=v&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(v,function(b){u(b,"text/xml")},null,t):!this.isOffline()&&
-(new XMLHttpRequest).upload&&this.isRemoteFileFormat(f,t)&&null!=v?this.parseFile(v,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?u(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):u(f,d)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(g,"dragleave",function(b){g.style.cursor="";g.style.backgroundColor="";b.stopPropagation();
+this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(f,d,e,k,p,n,t,q,y){if(null!=f&&"image/"==d.substring(0,6))f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(f),f=[new mxCell("",new mxGeometry(0,0,p,n),f)],f[0].vertex=!0,E(f,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),
+l=null);else{var v=!1,u=mxUtils.bind(this,function(f,d){if(null!=f&&"application/pdf"==d){var e=Editor.extractGraphModelFromPdf(f);null!=e&&0<e.length&&(f=e)}if(null!=f)if(e=mxUtils.parseXml(f),"mxlibrary"==e.documentElement.nodeName)try{var k=JSON.parse(mxUtils.getTextContent(e.documentElement));m(k,g);c=c.concat(k);D(b);this.spinner.stop();v=!0}catch(qa){}else if("mxfile"==e.documentElement.nodeName)try{for(var p=e.documentElement.getElementsByTagName("diagram"),k=0;k<p.length;k++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[k])),
+t=this.editor.graph.getBoundingBoxFromGeometry(n);E(n,new mxRectangle(0,0,t.width,t.height),b)}v=!0}catch(qa){null!=window.console&&console.log("error in drop handler:",qa)}v||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),l=null)});null!=y&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(y,function(b){u(b,"text/xml")},null,t):!this.isOffline()&&
+(new XMLHttpRequest).upload&&this.isRemoteFileFormat(f,t)&&null!=y?this.parseFile(y,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?u(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):u(f,d)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(g,"dragleave",function(b){g.style.cursor="";g.style.backgroundColor="";b.stopPropagation();
b.preventDefault()}));n=n.cloneNode(!1);n.setAttribute("src",Editor.editImage);n.setAttribute("title",mxResources.get("edit"));p.insertBefore(n,p.firstChild);mxEvent.addListener(n,"click",H);mxEvent.addListener(g,"dblclick",function(b){mxEvent.getSource(b)==g&&H(b)});e=n.cloneNode(!1);e.setAttribute("src",Editor.plusImage);e.setAttribute("title",mxResources.get("add"));p.insertBefore(e,p.firstChild);mxEvent.addListener(e,"click",F);this.isOffline()||".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||
(e=document.createElement("span"),e.setAttribute("title",mxResources.get("help")),e.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(e,"?"),mxEvent.addGestureListeners(e,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),p.insertBefore(e,p.firstChild))}k.appendChild(p);k.style.paddingRight=18*p.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(b,c){for(var f=0;f<b.length;f++){var d=b[f],
e=d.data;if(null!=e){var e=this.convertDataUri(e),l="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(l+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(l+"image="+e,d.w,d.h,"",d.title||"",!1,null,!0))}else null!=d.xml&&(e=this.stringToCells(Graph.decompress(d.xml)),0<e.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(e,d.w,d.h,d.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(b){return null!=b?b[mxLanguage]||
b.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=
41,EditorUi.prototype.toolbarHeight=38):Editor.isDarkMode()&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor=Editor.darkColor,Format.inactiveTabBackgroundColor="black",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.shapeBackgroundColor=Editor.darkColor,Graph.prototype.shapeForegroundColor=Editor.lightColor,Graph.prototype.defaultPageBackgroundColor=Editor.darkColor,Graph.prototype.defaultPageBorderColor="#505759",BaseFormatPanel.prototype.buttonBackgroundColor=
-Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource="https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter";Editor.sketchFonts=[{fontFamily:Editor.sketchFontFamily,fontUrl:decodeURIComponent(Editor.sketchFontSource)},{fontFamily:"Rock Salt",fontUrl:"https://fonts.googleapis.com/css?family=Rock+Salt"},
-{fontFamily:"Permanent Marker",fontUrl:"https://fonts.googleapis.com/css?family=Permanent+Marker"}];"1"==urlParams.sketch&&("undefined"!==typeof Menus&&(Menus.prototype.defaultFonts=Menus.prototype.defaultFonts.concat(Editor.sketchFonts)),Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle={edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=
-".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(b,c,d,e,g,k,n){b=new ImageDialog(this,b,c,d,e,g,k,n);this.showDialog(b.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=
-function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,c){if(!c){var f=new ChangePageSetup(this,null,b);f.ignoreColor=!0;this.editor.graph.model.execute(f)}});var f=new BackgroundImageDialog(this,b,c);this.showDialog(f.container,360,200,!0,!0);f.init()};EditorUi.prototype.showLibraryDialog=function(b,c,d,e,g){b=new LibraryDialog(this,b,c,d,e,g);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};
-var d=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var c=d.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&c.refresh()}));return c};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";
-c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var d=c.getElementsByTagName("span")[0];d.style.fontSize="18px";d.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};
-EditorUi.prototype.handleError=function(b,c,d,e,g,k,n){var f=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},l=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{n?null!=window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(C){}if(null!=l||null!=c){n=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=
-mxResources.get("ok"),p=null;c=null!=c?c:mxResources.get("error");if(null!=l){null!=l.retry&&(m=mxResources.get("cancel"),p=function(){f();l.retry()});if(404==l.code||404==l.status||403==l.code){n=403==l.code?null!=l.message?mxUtils.htmlEntities(l.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=g?g:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var t=null!=
-g?null:null!=k?k:window.location.hash;if(null!=t&&("#G"==t.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==t.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==l.code||404==l.status)){t="#U"==t.substring(0,2)?t.substring(45,t.lastIndexOf("%26ex")):t.substring(2);this.showError(c,n,mxResources.get("openInNewWindow"),
-mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+t);this.handleError(b,c,d,e,g)}),p,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){e.innerHTML="";for(var b=0;b<c.length;b++){var f=document.createElement("option");mxUtils.write(f,c[b].displayName);f.value=b;e.appendChild(f);f=document.createElement("option");f.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(f,"<"+c[b].email+">");f.setAttribute("disabled","disabled");e.appendChild(f)}f=
-document.createElement("option");mxUtils.write(f,mxResources.get("addAccount"));f.value=c.length;e.appendChild(f)}var c=this.drive.getUsersList(),f=document.createElement("div"),d=document.createElement("span");d.style.marginTop="6px";mxUtils.write(d,mxResources.get("changeUser")+": ");f.appendChild(d);var e=document.createElement("select");e.style.width="200px";b();mxEvent.addListener(e,"change",mxUtils.bind(this,function(){var f=e.value,d=c.length!=f;d&&this.drive.setUser(c[f]);this.drive.authorize(d,
-mxUtils.bind(this,function(){d||(c=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));f.appendChild(e);f=new CustomDialog(this,f,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(f.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=d&&d()}),480,150);return}}null!=l.message?n=""==l.message&&null!=l.name?mxUtils.htmlEntities(l.name):mxUtils.htmlEntities(l.message):
-null!=l.response&&null!=l.response.error?n=mxUtils.htmlEntities(l.response.error):"undefined"!==typeof window.App&&(l.code==App.ERROR_TIMEOUT?n=mxUtils.htmlEntities(mxResources.get("timeout")):l.code==App.ERROR_BUSY?n=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof l&&0<l.length&&(n=mxUtils.htmlEntities(l)))}var q=k=null;null!=l&&null!=l.helpLink?(k=mxResources.get("help"),q=mxUtils.bind(this,function(){return this.editor.graph.openLink(l.helpLink)})):null!=l&&null!=l.ownerEmail&&
-(k=mxResources.get("contactOwner"),n+=mxUtils.htmlEntities(" ("+k+": "+l.ownerEmail+")"),q=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(l.ownerEmail))}));this.showError(c,n,m,d,p,null,null,k,q,null,null,null,e?d:null)}else null!=d&&d()};EditorUi.prototype.alert=function(b,c,d){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,d||340,100,!0,!1);b.init()};EditorUi.prototype.confirm=function(b,c,d,e,g,k){var f=null!=this.spinner&&null!=
-this.spinner.pause?this.spinner.pause():function(){},l=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){f();null!=c&&c()},function(){f();null!=d&&d()},e,g,null,null,null,null,l);this.showDialog(b.container,340,46+l,!0,k);b.init()};EditorUi.prototype.showBanner=function(b,c,d,e){var f=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+b])){var l=document.createElement("div");l.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+
-mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(l.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(l.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(l.style,"transition","all 1s ease");l.className="geBtn gePrimaryBtn";f=document.createElement("img");f.setAttribute("src",IMAGE_PATH+"/logo.png");f.setAttribute("border","0");f.setAttribute("align","absmiddle");f.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";l.appendChild(f);
-f=document.createElement("img");f.setAttribute("src",Dialog.prototype.closeImage);f.setAttribute("title",mxResources.get(e?"doNotShowAgain":"close"));f.setAttribute("border","0");f.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";l.appendChild(f);mxUtils.write(l,c);document.body.appendChild(l);this.bannerShowing=!0;c=document.createElement("div");c.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var m=document.createElement("input");
-m.setAttribute("type","checkbox");m.setAttribute("id","geDoNotShowAgainCheckbox");m.style.marginRight="6px";if(!e){c.appendChild(m);var g=document.createElement("label");g.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(g,mxResources.get("doNotShowAgain"));c.appendChild(g);l.style.paddingBottom="30px";l.appendChild(c)}var k=mxUtils.bind(this,function(){null!=l.parentNode&&(l.parentNode.removeChild(l),this.bannerShowing=!1,m.checked||e)&&(this["hideBanner"+b]=!0,isLocalStorage&&null!=
-mxSettings.settings&&(mxSettings.settings["close"+b]=Date.now(),mxSettings.save()))});mxEvent.addListener(f,"click",mxUtils.bind(this,function(b){mxEvent.consume(b);k()}));var p=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(l.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){k()}),1E3)});mxEvent.addListener(l,"click",mxUtils.bind(this,function(b){var c=mxEvent.getSource(b);c!=m&&c!=g?(null!=d&&d(),k(),mxEvent.consume(b)):p()}));window.setTimeout(mxUtils.bind(this,
-function(){mxUtils.setPrefixedStyle(l.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(p,3E4);f=!0}return f};EditorUi.prototype.setCurrentFile=function(b){null!=b&&(b.opened=new Date);this.currentFile=b};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(b,c,d,e){b=b.toDataURL("image/"+d);if(null!=b&&6<b.length)null!=c&&(b=Editor.writeGraphModelToPng(b,
-"tEXt","mxfile",encodeURIComponent(c))),0<e&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",e));else throw{message:mxResources.get("unknownError")};return b};EditorUi.prototype.saveCanvas=function(b,c,d,e,g){var f="jpeg"==d?"jpg":d;e=this.getBaseFilename(e)+(null!=c?".drawio":"")+"."+f;b=this.createImageDataUri(b,c,d,g);this.saveData(e,f,b.substring(b.lastIndexOf(",")+1),"image/"+d,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&
-"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var f=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));f.textarea.style.width="600px";f.textarea.style.height="380px";this.showDialog(f.container,620,460,!0,!0,null,null,null,null,!0);f.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,d,e,
-g,k){"text/xml"!=d||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=k?k:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=e?this.base64ToBlob(b,d):new Blob([b],{type:d}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(b,!0):(d.document.write(b),d.document.close(),d.document.execCommand("SaveAs",!0,c),d.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||
-null==d||"image/"!=d.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,d,e);else{var f=document.createElement("a");k=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof f.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);k=65==(l?parseInt(l[2],10):!1)?!1:k}if(k||this.isOffline()){f.href=URL.createObjectURL(e?this.base64ToBlob(b,d):new Blob([b],{type:d}));k?f.download=c:f.setAttribute("target",
-"_blank");document.body.appendChild(f);try{window.setTimeout(function(){URL.revokeObjectURL(f.href)},2E4),f.click(),f.parentNode.removeChild(f)}catch(x){}}else this.createEchoRequest(b,c,d,e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,d,e,g,k){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,b+(null!=d?"&mime="+d:"")+(null!=g?"&format="+g:"")+(null!=k?"&base64="+k:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=
-function(b,c){c=c||"";for(var f=atob(b),d=f.length,e=Math.ceil(d/1024),l=Array(e),g=0;g<e;++g){for(var k=1024*g,n=Math.min(k+1024,d),z=Array(n-k),A=0;k<n;++A,++k)z[A]=f[k].charCodeAt(0);l[g]=new Uint8Array(z)}return new Blob(l,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,d,e,g,k,n,u){k=null!=k?k:!1;n=null!=n?n:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(k);isLocalStorage&&g++;var f=4>=g?2:6<g?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(c,f){try{if("_blank"==
-f)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(b,d,e);else if(null!=d&&"text/html"==d.substring(0,9)){var l=new EmbedDialog(this,b);this.showDialog(l.container,450,240,!0,!0);l.init()}else{var g=window.open("about:blank");null==g?mxUtils.popup(b,!0):(g.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),g.document.close())}else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(b,c,d,e,null,u):null!=c&&0<c.length&&this.pickFolder(f,mxUtils.bind(this,function(l){try{this.exportFile(b,
-c,d,e,f,l)}catch(H){this.handleError(H)}}))}catch(C){this.handleError(C)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,k,n,null,1<g,f,b,d,e);k=this.isServices(g)?g>f?390:270:160;this.showDialog(c.container,420,k,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(b,c,d){var f=window.open("about:blank");null==f||null==f.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?f.document.write("<html>"+
-b+"</html>"):(b=d?b:btoa(unescape(encodeURIComponent(b))),f.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):f.document.write("<html><pre>"+mxUtils.htmlEntities(b,!1)+"</pre></html>"),f.document.close())};var c=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};
-EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var f=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",
-this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height="auto",this.tagsComponent.div.style.position="fixed",this.tagsComponent.div.style.fontFamily=Editor.defaultHtmlFont,mxClient.IS_IE||mxClient.IS_IE11?(this.tagsComponent.div.style.backgroundColor="#ffffff",this.tagsComponent.div.style.border="2px solid black",this.tagsComponent.div.style.color=
-"#000000"):(this.tagsComponent.div.style.backgroundColor="#000000",this.tagsComponent.div.style.color="#ffffff",mxUtils.setOpacity(this.tagsComponent.div,80)));if(null!=this.tagsDialog)this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null;else{this.tagsDialog=this.tagsComponent.div;mxEvent.addListener(this.tagsDialog,"mouseleave",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));var c=f.getBoundingClientRect();
-this.tagsDialog.style.left=c.left+"px";this.tagsDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=c.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(b)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,
-mxUtils.bind(this,function(){var b=this.editor.graph.getAllTags();f.style.display=0<b.length?"":"none"}))}c.apply(this,arguments);this.editor.addListener("tagsDialogShown",mxUtils.bind(this,function(){null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));this.editor.addListener("layersDialogShown",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));this.editor.addListener("pageSelected",
-mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));mxEvent.addListener(this.editor.graph.container,"click",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),
-this.layersDialog=null)}));if(this.isExportToCanvas()&&this.isChromelessImageExportEnabled()){this.exportDialog=null;var d=b(mxUtils.bind(this,function(b){var c=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",c);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)c.apply(this);else{this.exportDialog=document.createElement("div");var f=d.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,
-"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily=Editor.defaultHtmlFont;this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=f.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
-this.chromelessToolbar.offsetHeight+4+"px";f=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=f.zIndex;var e=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});e.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(b){e.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var f=this.createImageDataUri(b,
-null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));b.setAttribute("border","0");b.setAttribute("src",f);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.openInNewWindow(f.substring(f.indexOf(",")+1),"image/png",!0);c.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,
-function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",c);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,d,e,g){this.isLocalFileSave()?this.saveLocalFile(d,b,e,g,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,f){return this.createEchoRequest(d,b,e,g,c,f)}),d,g,e)};EditorUi.prototype.saveRequest=
-function(b,c,d,e,g,k,n){n=null!=n?n:!mxClient.IS_IOS||!navigator.standalone;var f=this.getServiceCount(!1);isLocalStorage&&f++;var l=4>=f?2:6<f?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,f){if("_blank"==f||null!=b&&0<b.length){var l=d("_blank"==f?null:b,f==App.MODE_DEVICE||"download"==f||null==f||"_blank"==f?"0":"1");null!=l&&(f==App.MODE_DEVICE||"download"==f||"_blank"==f?l.simulate(document,"_blank"):this.pickFolder(f,mxUtils.bind(this,function(d){k=null!=k?k:"pdf"==c?"application/pdf":
-"image/"+c;if(null!=e)try{this.exportFile(e,b,k,!0,f,d)}catch(C){this.handleError(C)}else this.spinner.spin(document.body,mxResources.get("saving"))&&l.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=l.getStatus()&&299>=l.getStatus())try{this.exportFile(l.getText(),b,k,!0,f,d)}catch(C){this.handleError(C)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),
-mxResources.get("saveAs"),mxResources.get("download"),!1,!1,n,null,1<f,l,e,k,g);f=this.isServices(f)?4<f?390:270:160;this.showDialog(b.container,420,f,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,d,e,g,k){};EditorUi.prototype.pickFolder=function(b,c,d){c(null)};EditorUi.prototype.exportSvg=function(b,c,d,e,g,k,n,u,x,z,A,B,y,C){if(this.spinner.spin(document.body,
-mxResources.get("export")))try{var f=this.editor.graph.isSelectionEmpty();d=null!=d?d:f;var l=c?null:this.editor.graph.background;l==mxConstants.NONE&&(l=null);null==l&&0==c&&(l=A?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var m=this.editor.graph.getSvg(l,b,n,u,null,d,null,null,"blank"==z?"_blank":"self"==z?"_top":null,null,!0,A,B);e&&this.editor.graph.addSvgShadow(m);var p=this.getBaseFilename()+(g?".drawio":"")+".svg";C=null!=C?C:mxUtils.bind(this,function(b){this.isLocalFileSave()||
-b.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var t=mxUtils.bind(this,function(b){this.spinner.stop();g&&b.setAttribute("content",this.getFileData(!0,null,null,null,d,x,null,null,null,!1));C(Graph.xmlDeclaration+"\n"+(g?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(m);
-var q=mxUtils.bind(this,function(b){k?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,t,this.thumbImageCache)):t(b)});y?this.embedFonts(m,q):(this.editor.addFontCss(m),q(m))}catch(I){this.handleError(I)}};EditorUi.prototype.addRadiobox=function(b,c,d,e,g,k,n){return this.addCheckbox(b,d,e,g,k,n,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,d,e,g,k,n,u){k=null!=k?k:!0;var f=document.createElement("input");f.style.marginRight="8px";f.style.marginTop="16px";f.setAttribute("type",
-n?"radio":"checkbox");n="geCheckbox-"+Editor.guid();f.id=n;null!=u&&f.setAttribute("name",u);d&&(f.setAttribute("checked","checked"),f.defaultChecked=!0);e&&f.setAttribute("disabled","disabled");k&&(b.appendChild(f),d=document.createElement("label"),mxUtils.write(d,c),d.setAttribute("for",n),b.appendChild(d),g||mxUtils.br(b));return f};EditorUi.prototype.addEditButton=function(b,c){var f=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);f.style.marginLeft="24px";var d=this.getCurrentFile(),
-e="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER&&(e=window.location.href);var l=document.createElement("select");l.style.maxWidth="200px";l.style.width="auto";l.style.marginLeft="8px";l.style.marginRight="10px";l.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));l.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d,mxResources.get("custom")+"...");
-l.appendChild(d);b.appendChild(l);mxEvent.addListener(l,"change",mxUtils.bind(this,function(){if("custom"==l.value){var b=new FilenameDialog(this,e,mxResources.get("ok"),function(b){null!=b?e=b:l.value="blank"},mxResources.get("url"),null,null,null,null,function(){l.value="blank"});this.showDialog(b.container,300,80,!0,!1);b.init()}}));mxEvent.addListener(f,"change",mxUtils.bind(this,function(){f.checked&&(null==c||c.checked)?l.removeAttribute("disabled"):l.setAttribute("disabled","disabled")}));
-mxUtils.br(b);return{getLink:function(){return f.checked?"blank"===l.value?"_blank":e:null},getEditInput:function(){return f},getEditSelect:function(){return l}}};EditorUi.prototype.addLinkSection=function(b,c){function f(){var b=document.createElement("div");b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=l&&l!=mxConstants.NONE?(b.style.border="1px solid black",b.style.backgroundColor=l):(b.style.backgroundPosition="center center",b.style.backgroundRepeat="no-repeat",
-b.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");g.innerHTML="";g.appendChild(b)}mxUtils.write(b,mxResources.get("links")+":");var d=document.createElement("select");d.style.width="100px";d.style.padding="0px";d.style.marginLeft="8px";d.style.marginRight="10px";d.className="geBtn";var e=document.createElement("option");e.setAttribute("value","auto");mxUtils.write(e,mxResources.get("automatic"));d.appendChild(e);e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,
-mxResources.get("openInNewWindow"));d.appendChild(e);e=document.createElement("option");e.setAttribute("value","self");mxUtils.write(e,mxResources.get("openInThisWindow"));d.appendChild(e);c&&(e=document.createElement("option"),e.setAttribute("value","frame"),mxUtils.write(e,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(e));b.appendChild(d);mxUtils.write(b,mxResources.get("borderColor")+":");var l="#0000ff",g=null,g=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(l||
-"none",function(b){l=b;f()});mxEvent.consume(b)}));f();g.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";g.style.marginLeft="4px";g.style.height="22px";g.style.width="22px";g.style.position="relative";g.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";g.className="geColorBtn";b.appendChild(g);mxUtils.br(b);return{getColor:function(){return l},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createUrlParameters=function(b,c,d,e,g,k,
-n){n=null!=n?n:[];e&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||n.push("lightbox=1"),"auto"!=b&&n.push("target="+b),null!=c&&c!=mxConstants.NONE&&n.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=g&&0<g.length&&n.push("edit="+encodeURIComponent(g)),k&&n.push("layers=1"),this.editor.graph.foldingEnabled&&n.push("nav=1"));d&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&n.push("page-id="+this.currentPage.getId());return n};EditorUi.prototype.createLink=
-function(b,c,d,e,g,k,n,u,x,z){x=this.createUrlParameters(b,c,d,e,g,k,x);b=this.getCurrentFile();c=!0;null!=n?d="#U"+encodeURIComponent(n):(b=this.getCurrentFile(),u||null==b||b.constructor!=window.DriveFile?d="#R"+encodeURIComponent(d?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(d="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=this.defaultFilename&&x.push("title="+encodeURIComponent(b.getTitle()));z&&
-1<d.length&&(x.push("open="+d.substring(1)),d="");return(e&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<x.length?"?"+x.join("&"):"")+d};EditorUi.prototype.createHtml=function(b,c,d,e,g,k,n,u,x,z,A,B){this.getBasenames();var f={};""!=g&&g!=mxConstants.NONE&&(f.highlight=g);"auto"!==e&&(f.target=e);z||(f.lightbox=!1);f.nav=this.editor.graph.foldingEnabled;
-d=parseInt(d);isNaN(d)||100==d||(f.zoom=d/100);d=[];n&&(d.push("pages"),f.resize=!0,null!=this.pages&&null!=this.currentPage&&(f.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(d.push("zoom"),f.resize=!0);u&&d.push("layers");x&&d.push("tags");0<d.length&&(z&&d.push("lightbox"),f.toolbar=d.join(" "));null!=A&&0<A.length&&(f.edit=A);null!=b?f.url=b:f.xml=this.getFileData(!0,null,null,null,null,!n);c='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=d?"border:1px solid transparent;":
-"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(f))+'"></div>';b=null!=b?"&fetch="+encodeURIComponent(b):"";B(c,'<script type="text/javascript" src="'+(0<b.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,
-c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,mxResources.get("html"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(l);var g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var m=document.createElement("input");m.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";m.setAttribute("value",
-"url");m.setAttribute("type","radio");m.setAttribute("name","type-embedhtmldialog");l=m.cloneNode(!0);l.setAttribute("value","copy");g.appendChild(l);var k=document.createElement("span");mxUtils.write(k,mxResources.get("includeCopyOfMyDiagram"));g.appendChild(k);mxUtils.br(g);g.appendChild(m);k=document.createElement("span");mxUtils.write(k,mxResources.get("publicDiagramUrl"));g.appendChild(k);var p=this.getCurrentFile();null==d&&null!=p&&p.constructor==window.DriveFile&&(k=document.createElement("a"),
-k.style.paddingLeft="12px",k.style.color="gray",k.style.cursor="pointer",mxUtils.write(k,mxResources.get("share")),g.appendChild(k),mxEvent.addListener(k,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(p.getId())})));l.setAttribute("checked","checked");null==d&&m.setAttribute("disabled","disabled");f.appendChild(g);var n=this.addLinkSection(f),B=this.addCheckbox(f,mxResources.get("zoom"),!0,null,!0);mxUtils.write(f,":");var y=document.createElement("input");y.setAttribute("type",
-"text");y.style.marginRight="16px";y.style.width="60px";y.style.marginLeft="4px";y.style.marginRight="12px";y.value="100%";f.appendChild(y);var C=this.addCheckbox(f,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,H=H=this.addCheckbox(f,mxResources.get("allPages"),g,!g),D=this.addCheckbox(f,mxResources.get("layers"),!0),E=this.addCheckbox(f,mxResources.get("tags"),!0),F=this.addCheckbox(f,mxResources.get("lightbox"),!0),K=this.addEditButton(f,F),J=K.getEditInput();J.style.marginBottom=
-"16px";mxEvent.addListener(F,"change",function(){F.checked?J.removeAttribute("disabled"):J.setAttribute("disabled","disabled");J.checked&&F.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,f,mxUtils.bind(this,function(){e(m.checked?d:null,B.checked,y.value,n.getTarget(),n.getColor(),C.checked,H.checked,D.checked,E.checked,F.checked,K.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);l.focus()};EditorUi.prototype.showPublishLinkDialog=
-function(b,c,d,e,g,k,n,u){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,b||mxResources.get("link"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(l);var m=this.getCurrentFile();b=0;if(null==m||m.constructor!=window.DriveFile||c)n=null!=n?n:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;n=null!=n?n:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";
-l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var p=document.createElement("div");p.style.whiteSpace="normal";mxUtils.write(p,mxResources.get("linkAccountRequired"));l.appendChild(p);p=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(m.getId())}));p.style.marginTop="12px";p.className="geBtn";l.appendChild(p);f.appendChild(l);p=document.createElement("a");
-p.style.paddingLeft="12px";p.style.color="gray";p.style.fontSize="11px";p.style.cursor="pointer";mxUtils.write(p,mxResources.get("check"));l.appendChild(p);mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,
-300,80,!0,!1);b.init()}))}))}var t=null,q=null;if(null!=d||null!=e)b+=30,mxUtils.write(f,mxResources.get("width")+":"),t=document.createElement("input"),t.setAttribute("type","text"),t.style.marginRight="16px",t.style.width="50px",t.style.marginLeft="6px",t.style.marginRight="16px",t.style.marginBottom="10px",t.value="100%",f.appendChild(t),mxUtils.write(f,mxResources.get("height")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.width="50px",q.style.marginLeft="6px",q.style.marginBottom=
-"10px",q.value=e+"px",f.appendChild(q),mxUtils.br(f);var v=this.addLinkSection(f,k);d=null!=this.pages&&1<this.pages.length;var D=null;if(null==m||m.constructor!=window.DriveFile||c)D=this.addCheckbox(f,mxResources.get("allPages"),d,!d);var E=this.addCheckbox(f,mxResources.get("lightbox"),!0,null,null,!k),F=this.addEditButton(f,E),K=F.getEditInput();k&&(K.style.marginLeft=E.style.marginLeft,E.style.display="none",b-=20);var J=this.addCheckbox(f,mxResources.get("layers"),!0);J.style.marginLeft=K.style.marginLeft;
-J.style.marginTop="8px";var I=this.addCheckbox(f,mxResources.get("tags"),!0);I.style.marginLeft=K.style.marginLeft;I.style.marginBottom="16px";I.style.marginTop="16px";mxEvent.addListener(E,"change",function(){E.checked?(J.removeAttribute("disabled"),K.removeAttribute("disabled")):(J.setAttribute("disabled","disabled"),K.setAttribute("disabled","disabled"));K.checked&&E.checked?F.getEditSelect().removeAttribute("disabled"):F.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,
-f,mxUtils.bind(this,function(){g(v.getTarget(),v.getColor(),null==D?!0:D.checked,E.checked,F.getLink(),J.checked,null!=t?t.value:null,null!=q?q.value:null,I.checked)}),null,mxResources.get("create"),n,u);this.showDialog(c.container,340,300+b,!0,!0);null!=t?(t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null)):v.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace=
-"nowrap";var l=document.createElement("h3");mxUtils.write(l,mxResources.get("image"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(g?"10":"4")+"px";f.appendChild(l);if(g){mxUtils.write(f,mxResources.get("zoom")+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.style.marginRight="12px";m.value=this.lastExportZoom||"100%";f.appendChild(m);mxUtils.write(f,mxResources.get("borderWidth")+
-":");var k=document.createElement("input");k.setAttribute("type","text");k.style.marginRight="16px";k.style.width="60px";k.style.marginLeft="4px";k.value=this.lastExportBorder||"0";f.appendChild(k);mxUtils.br(f)}var p=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=e?null:this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),l=this.editor.graph,q=e?null:this.addCheckbox(f,mxResources.get("transparentBackground"),l.background==
-mxConstants.NONE||null==l.background);null!=q&&(q.style.marginBottom="16px");b=new CustomDialog(this,f,mxUtils.bind(this,function(){var b=parseInt(m.value)/100||1,c=parseInt(k.value)||0;d(!p.checked,null!=n?n.checked:!1,null!=q?q.checked:!1,b,c)}),null,b,c);this.showDialog(b.container,300,(g?25:0)+(e?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,d,e,g,k,n,u,x){n=null!=n?n:Editor.defaultIncludeDiagram;var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=this.editor.graph,
-m="jpeg"==u?220:300,p=document.createElement("h3");mxUtils.write(p,b);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";f.appendChild(p);mxUtils.write(f,mxResources.get("zoom")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight="12px";t.value=this.lastExportZoom||"100%";f.appendChild(t);mxUtils.write(f,mxResources.get("borderWidth")+":");var q=document.createElement("input");
-q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.value=this.lastExportBorder||"0";f.appendChild(q);mxUtils.br(f);var v=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,l.isSelectionEmpty()),E=document.createElement("input");E.style.marginTop="16px";E.style.marginRight="8px";E.style.marginLeft="24px";E.setAttribute("disabled","disabled");E.setAttribute("type","checkbox");var F=document.createElement("select");F.style.marginTop="16px";F.style.marginLeft=
-"8px";b=["selectionOnly","diagram","page"];for(var K={},p=0;p<b.length;p++)if(!l.isSelectionEmpty()||"selectionOnly"!=b[p]){var J=document.createElement("option");mxUtils.write(J,mxResources.get(b[p]));J.setAttribute("value",b[p]);F.appendChild(J);K[b[p]]=J}x?(mxUtils.write(f,mxResources.get("size")+":"),f.appendChild(F),mxUtils.br(f),m+=26,mxEvent.addListener(F,"change",function(){"selectionOnly"==F.value&&(v.checked=!0)})):k&&(f.appendChild(E),mxUtils.write(f,mxResources.get("crop")),mxUtils.br(f),
-m+=30,mxEvent.addListener(v,"change",function(){v.checked?E.removeAttribute("disabled"):E.setAttribute("disabled","disabled")}));l.isSelectionEmpty()?x&&(v.style.display="none",v.nextSibling.style.display="none",v.nextSibling.nextSibling.style.display="none",m-=30):(F.value="diagram",E.setAttribute("checked","checked"),E.defaultChecked=!0,mxEvent.addListener(v,"change",function(){F.value=v.checked?"selectionOnly":"diagram"}));var I=this.addCheckbox(f,mxResources.get("transparentBackground"),!1,null,
-null,"jpeg"!=u),G=null;Editor.isDarkMode()&&(G=this.addCheckbox(f,mxResources.get("dark"),!0),m+=26);var Q=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible),N=null;if("png"==u||"jpeg"==u)N=this.addCheckbox(f,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),m+=30;var M=this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),n,null,null,"jpeg"!=u);M.style.marginBottom="16px";var Y=document.createElement("input");Y.style.marginBottom="16px";Y.style.marginRight=
-"8px";Y.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||Y.setAttribute("disabled","disabled");var W=document.createElement("select");W.style.maxWidth="260px";W.style.marginLeft="8px";W.style.marginRight="10px";W.style.marginBottom="16px";W.className="geBtn";k=document.createElement("option");k.setAttribute("value","none");mxUtils.write(k,mxResources.get("noChange"));W.appendChild(k);k=document.createElement("option");k.setAttribute("value","embedFonts");mxUtils.write(k,mxResources.get("embedFonts"));
-W.appendChild(k);k=document.createElement("option");k.setAttribute("value","lblToSvg");mxUtils.write(k,mxResources.get("lblToSvg"));W.appendChild(k);this.isOffline()&&k.setAttribute("disabled","disabled");mxEvent.addListener(W,"change",mxUtils.bind(this,function(){"lblToSvg"==W.value?(Y.checked=!0,Y.setAttribute("disabled","disabled"),K.page.style.display="none","page"==F.value&&(F.value="diagram"),Q.checked=!1,Q.setAttribute("disabled","disabled"),R.style.display="inline-block",L.style.display="none"):
-"disabled"==Y.getAttribute("disabled")&&(Y.checked=!1,Y.removeAttribute("disabled"),Q.removeAttribute("disabled"),K.page.style.display="",R.style.display="none",L.style.display="")}));c&&(f.appendChild(Y),mxUtils.write(f,mxResources.get("embedImages")),mxUtils.br(f),mxUtils.write(f,mxResources.get("txtSettings")+":"),f.appendChild(W),mxUtils.br(f),m+=60);var L=document.createElement("select");L.style.maxWidth="260px";L.style.marginLeft="8px";L.style.marginRight="10px";L.className="geBtn";c=document.createElement("option");
-c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));L.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));L.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));L.appendChild(c);var R=document.createElement("div");mxUtils.write(R,mxResources.get("LinksLost"));R.style.margin="7px";R.style.display="none";"svg"==u&&
-(mxUtils.write(f,mxResources.get("links")+":"),f.appendChild(L),f.appendChild(R),mxUtils.br(f),mxUtils.br(f),m+=50);d=new CustomDialog(this,f,mxUtils.bind(this,function(){this.lastExportBorder=q.value;this.lastExportZoom=t.value;g(t.value,I.checked,!v.checked,Q.checked,M.checked,Y.checked,q.value,E.checked,!1,L.value,null!=N?N.checked:null,null!=G?G.checked:null,F.value,"embedFonts"==W.value,"lblToSvg"==W.value)}),null,d,e);this.showDialog(d.container,340,m,!0,!0,null,null,null,null,!0);t.focus();
-mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=this.editor.graph;if(null!=c){var m=document.createElement("h3");mxUtils.write(m,c);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(m)}var k=this.addCheckbox(f,mxResources.get("fit"),!0),p=this.addCheckbox(f,mxResources.get("shadow"),
-l.shadowVisible&&e,!e),n=this.addCheckbox(f,d),q=this.addCheckbox(f,mxResources.get("lightbox"),!0),y=this.addEditButton(f,q),C=y.getEditInput(),H=1<l.model.getChildCount(l.model.getRoot()),D=this.addCheckbox(f,mxResources.get("layers"),H,!H);D.style.marginLeft=C.style.marginLeft;D.style.marginBottom="12px";D.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(H&&D.removeAttribute("disabled"),C.removeAttribute("disabled")):(D.setAttribute("disabled","disabled"),C.setAttribute("disabled",
-"disabled"));C.checked&&q.checked?y.getEditSelect().removeAttribute("disabled"):y.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,f,mxUtils.bind(this,function(){b(k.checked,p.checked,n.checked,q.checked,y.getLink(),D.checked)}),null,mxResources.get("embed"),g);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,d,e,g,k,n,u){function f(c){var f=" ",p="";e&&(f=" 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('"+
+Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource=encodeURIComponent(STYLE_PATH+"/fonts/ArchitectsDaughter-Regular.ttf");Editor.sketchFonts=[{fontFamily:Editor.sketchFontFamily,fontUrl:decodeURIComponent(Editor.sketchFontSource)}];"1"==urlParams.sketch&&("undefined"!==typeof Menus&&(Menus.prototype.defaultFonts=Menus.prototype.defaultFonts.concat(Editor.sketchFonts)),
+Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle={edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=
+new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(b,c,d,e,g,k,n){b=new ImageDialog(this,b,c,d,e,g,k,n);this.showDialog(b.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,c){if(!c){var f=new ChangePageSetup(this,null,b);f.ignoreColor=!0;this.editor.graph.model.execute(f)}});var f=new BackgroundImageDialog(this,b,c);this.showDialog(f.container,
+360,200,!0,!0);f.init()};EditorUi.prototype.showLibraryDialog=function(b,c,d,e,g){b=new LibraryDialog(this,b,c,d,e,g);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var d=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var c=d.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&
+c.refresh()}));return c};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var d=c.getElementsByTagName("span")[0];d.style.fontSize="18px";d.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+
+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,d,e,g,k,n){var f=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},l=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{n?null!=
+window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(C){}if(null!=l||null!=c){n=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=mxResources.get("ok"),p=null;c=null!=c?c:mxResources.get("error");if(null!=l){null!=l.retry&&(m=mxResources.get("cancel"),p=function(){f();l.retry()});if(404==l.code||404==l.status||403==l.code){n=403==l.code?null!=l.message?mxUtils.htmlEntities(l.message):
+mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=g?g:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var t=null!=g?null:null!=k?k:window.location.hash;if(null!=t&&("#G"==t.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==t.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||
+null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==l.code||404==l.status)){t="#U"==t.substring(0,2)?t.substring(45,t.lastIndexOf("%26ex")):t.substring(2);this.showError(c,n,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+t);this.handleError(b,c,d,e,g)}),p,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){e.innerHTML="";for(var b=0;b<c.length;b++){var f=document.createElement("option");
+mxUtils.write(f,c[b].displayName);f.value=b;e.appendChild(f);f=document.createElement("option");f.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(f,"<"+c[b].email+">");f.setAttribute("disabled","disabled");e.appendChild(f)}f=document.createElement("option");mxUtils.write(f,mxResources.get("addAccount"));f.value=c.length;e.appendChild(f)}var c=this.drive.getUsersList(),f=document.createElement("div"),d=document.createElement("span");d.style.marginTop="6px";mxUtils.write(d,mxResources.get("changeUser")+
+": ");f.appendChild(d);var e=document.createElement("select");e.style.width="200px";b();mxEvent.addListener(e,"change",mxUtils.bind(this,function(){var f=e.value,d=c.length!=f;d&&this.drive.setUser(c[f]);this.drive.authorize(d,mxUtils.bind(this,function(){d||(c=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));f.appendChild(e);f=new CustomDialog(this,f,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(f.container,
+300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=d&&d()}),480,150);return}}null!=l.message?n=""==l.message&&null!=l.name?mxUtils.htmlEntities(l.name):mxUtils.htmlEntities(l.message):null!=l.response&&null!=l.response.error?n=mxUtils.htmlEntities(l.response.error):"undefined"!==typeof window.App&&(l.code==App.ERROR_TIMEOUT?n=mxUtils.htmlEntities(mxResources.get("timeout")):l.code==App.ERROR_BUSY?n=mxUtils.htmlEntities(mxResources.get("busy")):"string"===
+typeof l&&0<l.length&&(n=mxUtils.htmlEntities(l)))}var q=k=null;null!=l&&null!=l.helpLink?(k=mxResources.get("help"),q=mxUtils.bind(this,function(){return this.editor.graph.openLink(l.helpLink)})):null!=l&&null!=l.ownerEmail&&(k=mxResources.get("contactOwner"),n+=mxUtils.htmlEntities(" ("+k+": "+l.ownerEmail+")"),q=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(l.ownerEmail))}));this.showError(c,n,m,d,p,null,null,k,q,null,null,null,e?d:null)}else null!=d&&d()};EditorUi.prototype.alert=
+function(b,c,d){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,d||340,100,!0,!1);b.init()};EditorUi.prototype.confirm=function(b,c,d,e,g,k){var f=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},l=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){f();null!=c&&c()},function(){f();null!=d&&d()},e,g,null,null,null,null,l);this.showDialog(b.container,340,46+l,!0,k);b.init()};EditorUi.prototype.showBanner=function(b,
+c,d,e){var f=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+b])){var l=document.createElement("div");l.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(l.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(l.style,"transform",
+"translate(-50%,120%)");mxUtils.setPrefixedStyle(l.style,"transition","all 1s ease");l.className="geBtn gePrimaryBtn";f=document.createElement("img");f.setAttribute("src",IMAGE_PATH+"/logo.png");f.setAttribute("border","0");f.setAttribute("align","absmiddle");f.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";l.appendChild(f);f=document.createElement("img");f.setAttribute("src",Dialog.prototype.closeImage);f.setAttribute("title",mxResources.get(e?"doNotShowAgain":
+"close"));f.setAttribute("border","0");f.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";l.appendChild(f);mxUtils.write(l,c);document.body.appendChild(l);this.bannerShowing=!0;c=document.createElement("div");c.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var m=document.createElement("input");m.setAttribute("type","checkbox");m.setAttribute("id","geDoNotShowAgainCheckbox");m.style.marginRight="6px";if(!e){c.appendChild(m);
+var g=document.createElement("label");g.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(g,mxResources.get("doNotShowAgain"));c.appendChild(g);l.style.paddingBottom="30px";l.appendChild(c)}var k=mxUtils.bind(this,function(){null!=l.parentNode&&(l.parentNode.removeChild(l),this.bannerShowing=!1,m.checked||e)&&(this["hideBanner"+b]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+b]=Date.now(),mxSettings.save()))});mxEvent.addListener(f,"click",mxUtils.bind(this,
+function(b){mxEvent.consume(b);k()}));var p=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(l.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){k()}),1E3)});mxEvent.addListener(l,"click",mxUtils.bind(this,function(b){var c=mxEvent.getSource(b);c!=m&&c!=g?(null!=d&&d(),k(),mxEvent.consume(b)):p()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(l.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(p,3E4);f=!0}return f};
+EditorUi.prototype.setCurrentFile=function(b){null!=b&&(b.opened=new Date);this.currentFile=b};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(b,c,d,e){b=b.toDataURL("image/"+d);if(null!=b&&6<b.length)null!=c&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(c))),0<e&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",e));else throw{message:mxResources.get("unknownError")};
+return b};EditorUi.prototype.saveCanvas=function(b,c,d,e,g){var f="jpeg"==d?"jpg":d;e=this.getBaseFilename(e)+(null!=c?".drawio":"")+"."+f;b=this.createImageDataUri(b,c,d,g);this.saveData(e,f,b.substring(b.lastIndexOf(",")+1),"image/"+d,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||
+mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var f=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));this.showDialog(f.container,620,460,!0,!0,null,null,null,null,!0);f.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,d,e,g,k){"text/xml"!=d||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=k?k:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=e?this.base64ToBlob(b,
+d):new Blob([b],{type:d}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(b,!0):(d.document.write(b),d.document.close(),d.document.execCommand("SaveAs",!0,c),d.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==d||"image/"!=d.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,d,e);else{var f=document.createElement("a");k=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&
+"undefined"!==typeof f.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);k=65==(l?parseInt(l[2],10):!1)?!1:k}if(k||this.isOffline()){f.href=URL.createObjectURL(e?this.base64ToBlob(b,d):new Blob([b],{type:d}));k?f.download=c:f.setAttribute("target","_blank");document.body.appendChild(f);try{window.setTimeout(function(){URL.revokeObjectURL(f.href)},2E4),f.click(),f.parentNode.removeChild(f)}catch(x){}}else this.createEchoRequest(b,c,d,
+e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,d,e,g,k){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,b+(null!=d?"&mime="+d:"")+(null!=g?"&format="+g:"")+(null!=k?"&base64="+k:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var f=atob(b),d=f.length,e=Math.ceil(d/1024),l=Array(e),g=0;g<e;++g){for(var k=1024*g,n=Math.min(k+1024,d),z=Array(n-k),A=0;k<n;++A,++k)z[A]=
+f[k].charCodeAt(0);l[g]=new Uint8Array(z)}return new Blob(l,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,d,e,g,k,n,u){k=null!=k?k:!1;n=null!=n?n:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(k);isLocalStorage&&g++;var f=4>=g?2:6<g?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(c,f){try{if("_blank"==f)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(b,d,e);else if(null!=d&&"text/html"==d.substring(0,9)){var l=new EmbedDialog(this,b);this.showDialog(l.container,
+450,240,!0,!0);l.init()}else{var g=window.open("about:blank");null==g?mxUtils.popup(b,!0):(g.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),g.document.close())}else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(b,c,d,e,null,u):null!=c&&0<c.length&&this.pickFolder(f,mxUtils.bind(this,function(l){try{this.exportFile(b,c,d,e,f,l)}catch(H){this.handleError(H)}}))}catch(C){this.handleError(C)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
+!1,k,n,null,1<g,f,b,d,e);k=this.isServices(g)?g>f?390:280:160;this.showDialog(c.container,420,k,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(b,c,d){var f=window.open("about:blank");null==f||null==f.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?f.document.write("<html>"+b+"</html>"):(b=d?b:btoa(unescape(encodeURIComponent(b))),f.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):f.document.write("<html><pre>"+
+mxUtils.htmlEntities(b,!1)+"</pre></html>"),f.document.close())};var c=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var f=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&
+(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height=
+"auto",this.tagsComponent.div.style.position="fixed",this.tagsComponent.div.style.fontFamily=Editor.defaultHtmlFont,mxClient.IS_IE||mxClient.IS_IE11?(this.tagsComponent.div.style.backgroundColor="#ffffff",this.tagsComponent.div.style.border="2px solid black",this.tagsComponent.div.style.color="#000000"):(this.tagsComponent.div.style.backgroundColor="#000000",this.tagsComponent.div.style.color="#ffffff",mxUtils.setOpacity(this.tagsComponent.div,80)));if(null!=this.tagsDialog)this.tagsDialog.parentNode.removeChild(this.tagsDialog),
+this.tagsDialog=null;else{this.tagsDialog=this.tagsComponent.div;mxEvent.addListener(this.tagsDialog,"mouseleave",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));var c=f.getBoundingClientRect();this.tagsDialog.style.left=c.left+"px";this.tagsDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=
+c.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(b)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var b=this.editor.graph.getAllTags();f.style.display=0<b.length?"":"none"}))}c.apply(this,arguments);this.editor.addListener("tagsDialogShown",mxUtils.bind(this,function(){null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),
+this.layersDialog=null)}));this.editor.addListener("layersDialogShown",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));this.editor.addListener("pageSelected",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));mxEvent.addListener(this.editor.graph.container,
+"click",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));if(this.isExportToCanvas()&&this.isChromelessImageExportEnabled()){this.exportDialog=null;var d=b(mxUtils.bind(this,function(b){var c=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",c);null!=this.exportDialog&&
+(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)c.apply(this);else{this.exportDialog=document.createElement("div");var f=d.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily=Editor.defaultHtmlFont;this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width=
+"50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=f.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";f=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=f.zIndex;var e=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",
+speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});e.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(b){e.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var f=this.createImageDataUri(b,null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));
+b.setAttribute("border","0");b.setAttribute("src",f);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.openInNewWindow(f.substring(f.indexOf(",")+1),"image/png",!0);c.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",c);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),
+Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,d,e,g){this.isLocalFileSave()?this.saveLocalFile(d,b,e,g,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,f){return this.createEchoRequest(d,b,e,g,c,f)}),d,g,e)};EditorUi.prototype.saveRequest=function(b,c,d,e,g,k,n){n=null!=n?n:!mxClient.IS_IOS||!navigator.standalone;var f=this.getServiceCount(!1);isLocalStorage&&f++;var l=4>=f?2:6<f?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,f){if("_blank"==
+f||null!=b&&0<b.length){var l=d("_blank"==f?null:b,f==App.MODE_DEVICE||"download"==f||null==f||"_blank"==f?"0":"1");null!=l&&(f==App.MODE_DEVICE||"download"==f||"_blank"==f?l.simulate(document,"_blank"):this.pickFolder(f,mxUtils.bind(this,function(d){k=null!=k?k:"pdf"==c?"application/pdf":"image/"+c;if(null!=e)try{this.exportFile(e,b,k,!0,f,d)}catch(C){this.handleError(C)}else this.spinner.spin(document.body,mxResources.get("saving"))&&l.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=
+l.getStatus()&&299>=l.getStatus())try{this.exportFile(l.getText(),b,k,!0,f,d)}catch(C){this.handleError(C)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,n,null,1<f,l,e,k,g);f=this.isServices(f)?4<f?390:280:160;this.showDialog(b.container,420,f,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=
+b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,d,e,g,k){};EditorUi.prototype.pickFolder=function(b,c,d){c(null)};EditorUi.prototype.exportSvg=function(b,c,d,e,g,k,n,u,x,z,A,B,y,C){if(this.spinner.spin(document.body,mxResources.get("export")))try{var f=this.editor.graph.isSelectionEmpty();d=null!=d?d:f;var l=c?null:this.editor.graph.background;l==mxConstants.NONE&&(l=null);null==l&&0==c&&(l=A?this.editor.graph.defaultPageBackgroundColor:
+"#ffffff");var m=this.editor.graph.getSvg(l,b,n,u,null,d,null,null,"blank"==z?"_blank":"self"==z?"_top":null,null,!0,A,B);e&&this.editor.graph.addSvgShadow(m);var p=this.getBaseFilename()+(g?".drawio":"")+".svg";C=null!=C?C:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var t=mxUtils.bind(this,
+function(b){this.spinner.stop();g&&b.setAttribute("content",this.getFileData(!0,null,null,null,d,x,null,null,null,!1));C(Graph.xmlDeclaration+"\n"+(g?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(m);var q=mxUtils.bind(this,function(b){k?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,t,this.thumbImageCache)):t(b)});y?this.embedFonts(m,q):(this.editor.addFontCss(m),q(m))}catch(I){this.handleError(I)}};
+EditorUi.prototype.addRadiobox=function(b,c,d,e,g,k,n){return this.addCheckbox(b,d,e,g,k,n,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,d,e,g,k,n,u){k=null!=k?k:!0;var f=document.createElement("input");f.style.marginRight="8px";f.style.marginTop="16px";f.setAttribute("type",n?"radio":"checkbox");n="geCheckbox-"+Editor.guid();f.id=n;null!=u&&f.setAttribute("name",u);d&&(f.setAttribute("checked","checked"),f.defaultChecked=!0);e&&f.setAttribute("disabled","disabled");k&&(b.appendChild(f),d=document.createElement("label"),
+mxUtils.write(d,c),d.setAttribute("for",n),b.appendChild(d),g||mxUtils.br(b));return f};EditorUi.prototype.addEditButton=function(b,c){var f=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);f.style.marginLeft="24px";var d=this.getCurrentFile(),e="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER&&(e=window.location.href);var l=document.createElement("select");l.style.maxWidth="200px";l.style.width="auto";l.style.marginLeft="8px";l.style.marginRight="10px";l.className=
+"geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));l.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d,mxResources.get("custom")+"...");l.appendChild(d);b.appendChild(l);mxEvent.addListener(l,"change",mxUtils.bind(this,function(){if("custom"==l.value){var b=new FilenameDialog(this,e,mxResources.get("ok"),function(b){null!=b?e=b:l.value="blank"},mxResources.get("url"),null,null,null,
+null,function(){l.value="blank"});this.showDialog(b.container,300,80,!0,!1);b.init()}}));mxEvent.addListener(f,"change",mxUtils.bind(this,function(){f.checked&&(null==c||c.checked)?l.removeAttribute("disabled"):l.setAttribute("disabled","disabled")}));mxUtils.br(b);return{getLink:function(){return f.checked?"blank"===l.value?"_blank":e:null},getEditInput:function(){return f},getEditSelect:function(){return l}}};EditorUi.prototype.addLinkSection=function(b,c){function f(){var b=document.createElement("div");
+b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=l&&l!=mxConstants.NONE?(b.style.border="1px solid black",b.style.backgroundColor=l):(b.style.backgroundPosition="center center",b.style.backgroundRepeat="no-repeat",b.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");g.innerHTML="";g.appendChild(b)}mxUtils.write(b,mxResources.get("links")+":");var d=document.createElement("select");d.style.width="100px";d.style.padding="0px";d.style.marginLeft="8px";d.style.marginRight=
+"10px";d.className="geBtn";var e=document.createElement("option");e.setAttribute("value","auto");mxUtils.write(e,mxResources.get("automatic"));d.appendChild(e);e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("openInNewWindow"));d.appendChild(e);e=document.createElement("option");e.setAttribute("value","self");mxUtils.write(e,mxResources.get("openInThisWindow"));d.appendChild(e);c&&(e=document.createElement("option"),e.setAttribute("value","frame"),
+mxUtils.write(e,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(e));b.appendChild(d);mxUtils.write(b,mxResources.get("borderColor")+":");var l="#0000ff",g=null,g=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(l||"none",function(b){l=b;f()});mxEvent.consume(b)}));f();g.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";g.style.marginLeft="4px";g.style.height="22px";g.style.width="22px";g.style.position="relative";g.style.top=mxClient.IS_IE||mxClient.IS_IE11||
+mxClient.IS_EDGE?"6px":"1px";g.className="geColorBtn";b.appendChild(g);mxUtils.br(b);return{getColor:function(){return l},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createUrlParameters=function(b,c,d,e,g,k,n){n=null!=n?n:[];e&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||n.push("lightbox=1"),"auto"!=b&&n.push("target="+b),null!=c&&c!=mxConstants.NONE&&n.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=g&&0<g.length&&
+n.push("edit="+encodeURIComponent(g)),k&&n.push("layers=1"),this.editor.graph.foldingEnabled&&n.push("nav=1"));d&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&n.push("page-id="+this.currentPage.getId());return n};EditorUi.prototype.createLink=function(b,c,d,e,g,k,n,u,x,z){x=this.createUrlParameters(b,c,d,e,g,k,x);b=this.getCurrentFile();c=!0;null!=n?d="#U"+encodeURIComponent(n):(b=this.getCurrentFile(),u||null==b||b.constructor!=window.DriveFile?d="#R"+encodeURIComponent(d?
+this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(d="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=this.defaultFilename&&x.push("title="+encodeURIComponent(b.getTitle()));z&&1<d.length&&(x.push("open="+d.substring(1)),d="");return(e&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+
+"/"+(0<x.length?"?"+x.join("&"):"")+d};EditorUi.prototype.createHtml=function(b,c,d,e,g,k,n,u,x,z,A,B){this.getBasenames();var f={};""!=g&&g!=mxConstants.NONE&&(f.highlight=g);"auto"!==e&&(f.target=e);z||(f.lightbox=!1);f.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(f.zoom=d/100);d=[];n&&(d.push("pages"),f.resize=!0,null!=this.pages&&null!=this.currentPage&&(f.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(d.push("zoom"),f.resize=!0);u&&d.push("layers");x&&d.push("tags");
+0<d.length&&(z&&d.push("lightbox"),f.toolbar=d.join(" "));null!=A&&0<A.length&&(f.edit=A);null!=b?f.url=b:f.xml=this.getFileData(!0,null,null,null,null,!n);c='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=d?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(f))+'"></div>';b=null!=b?"&fetch="+encodeURIComponent(b):"";B(c,'<script type="text/javascript" src="'+(0<b.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+
+"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,mxResources.get("html"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(l);var g=document.createElement("div");
+g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var m=document.createElement("input");m.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";m.setAttribute("value","url");m.setAttribute("type","radio");m.setAttribute("name","type-embedhtmldialog");l=m.cloneNode(!0);l.setAttribute("value","copy");g.appendChild(l);var k=document.createElement("span");mxUtils.write(k,mxResources.get("includeCopyOfMyDiagram"));g.appendChild(k);mxUtils.br(g);g.appendChild(m);
+k=document.createElement("span");mxUtils.write(k,mxResources.get("publicDiagramUrl"));g.appendChild(k);var p=this.getCurrentFile();null==d&&null!=p&&p.constructor==window.DriveFile&&(k=document.createElement("a"),k.style.paddingLeft="12px",k.style.color="gray",k.style.cursor="pointer",mxUtils.write(k,mxResources.get("share")),g.appendChild(k),mxEvent.addListener(k,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(p.getId())})));l.setAttribute("checked","checked");null==
+d&&m.setAttribute("disabled","disabled");f.appendChild(g);var n=this.addLinkSection(f),B=this.addCheckbox(f,mxResources.get("zoom"),!0,null,!0);mxUtils.write(f,":");var y=document.createElement("input");y.setAttribute("type","text");y.style.marginRight="16px";y.style.width="60px";y.style.marginLeft="4px";y.style.marginRight="12px";y.value="100%";f.appendChild(y);var C=this.addCheckbox(f,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,H=H=this.addCheckbox(f,mxResources.get("allPages"),
+g,!g),D=this.addCheckbox(f,mxResources.get("layers"),!0),E=this.addCheckbox(f,mxResources.get("tags"),!0),F=this.addCheckbox(f,mxResources.get("lightbox"),!0),K=this.addEditButton(f,F),J=K.getEditInput();J.style.marginBottom="16px";mxEvent.addListener(F,"change",function(){F.checked?J.removeAttribute("disabled"):J.setAttribute("disabled","disabled");J.checked&&F.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,f,
+mxUtils.bind(this,function(){e(m.checked?d:null,B.checked,y.value,n.getTarget(),n.getColor(),C.checked,H.checked,D.checked,E.checked,F.checked,K.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);l.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,d,e,g,k,n,u){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,b||mxResources.get("link"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
+f.appendChild(l);var m=this.getCurrentFile();b=0;if(null==m||m.constructor!=window.DriveFile||c)n=null!=n?n:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;n=null!=n?n:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var p=document.createElement("div");p.style.whiteSpace="normal";mxUtils.write(p,mxResources.get("linkAccountRequired"));
+l.appendChild(p);p=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(m.getId())}));p.style.marginTop="12px";p.className="geBtn";l.appendChild(p);f.appendChild(l);p=document.createElement("a");p.style.paddingLeft="12px";p.style.color="gray";p.style.fontSize="11px";p.style.cursor="pointer";mxUtils.write(p,mxResources.get("check"));l.appendChild(p);mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&
+this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,300,80,!0,!1);b.init()}))}))}var t=null,q=null;if(null!=d||null!=e)b+=30,mxUtils.write(f,mxResources.get("width")+":"),t=document.createElement("input"),t.setAttribute("type","text"),t.style.marginRight="16px",t.style.width="50px",t.style.marginLeft="6px",t.style.marginRight=
+"16px",t.style.marginBottom="10px",t.value="100%",f.appendChild(t),mxUtils.write(f,mxResources.get("height")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.width="50px",q.style.marginLeft="6px",q.style.marginBottom="10px",q.value=e+"px",f.appendChild(q),mxUtils.br(f);var v=this.addLinkSection(f,k);d=null!=this.pages&&1<this.pages.length;var D=null;if(null==m||m.constructor!=window.DriveFile||c)D=this.addCheckbox(f,mxResources.get("allPages"),d,!d);var E=this.addCheckbox(f,
+mxResources.get("lightbox"),!0,null,null,!k),F=this.addEditButton(f,E),K=F.getEditInput();k&&(K.style.marginLeft=E.style.marginLeft,E.style.display="none",b-=20);var J=this.addCheckbox(f,mxResources.get("layers"),!0);J.style.marginLeft=K.style.marginLeft;J.style.marginTop="8px";var I=this.addCheckbox(f,mxResources.get("tags"),!0);I.style.marginLeft=K.style.marginLeft;I.style.marginBottom="16px";I.style.marginTop="16px";mxEvent.addListener(E,"change",function(){E.checked?(J.removeAttribute("disabled"),
+K.removeAttribute("disabled")):(J.setAttribute("disabled","disabled"),K.setAttribute("disabled","disabled"));K.checked&&E.checked?F.getEditSelect().removeAttribute("disabled"):F.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,f,mxUtils.bind(this,function(){g(v.getTarget(),v.getColor(),null==D?!0:D.checked,E.checked,F.getLink(),J.checked,null!=t?t.value:null,null!=q?q.value:null,I.checked)}),null,mxResources.get("create"),n,u);this.showDialog(c.container,340,300+b,!0,
+!0);null!=t?(t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null)):v.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,mxResources.get("image"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(g?"10":"4")+"px";f.appendChild(l);if(g){mxUtils.write(f,mxResources.get("zoom")+
+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.style.marginRight="12px";m.value=this.lastExportZoom||"100%";f.appendChild(m);mxUtils.write(f,mxResources.get("borderWidth")+":");var k=document.createElement("input");k.setAttribute("type","text");k.style.marginRight="16px";k.style.width="60px";k.style.marginLeft="4px";k.value=this.lastExportBorder||"0";f.appendChild(k);mxUtils.br(f)}var p=this.addCheckbox(f,
+mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=e?null:this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),l=this.editor.graph,q=e?null:this.addCheckbox(f,mxResources.get("transparentBackground"),l.background==mxConstants.NONE||null==l.background);null!=q&&(q.style.marginBottom="16px");b=new CustomDialog(this,f,mxUtils.bind(this,function(){var b=parseInt(m.value)/100||1,c=parseInt(k.value)||0;d(!p.checked,null!=n?n.checked:!1,null!=
+q?q.checked:!1,b,c)}),null,b,c);this.showDialog(b.container,300,(g?25:0)+(e?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,d,e,g,k,n,u,x){n=null!=n?n:Editor.defaultIncludeDiagram;var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=this.editor.graph,m="jpeg"==u?220:300,p=document.createElement("h3");mxUtils.write(p,b);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";f.appendChild(p);mxUtils.write(f,mxResources.get("zoom")+":");var t=
+document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight="12px";t.value=this.lastExportZoom||"100%";f.appendChild(t);mxUtils.write(f,mxResources.get("borderWidth")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.value=this.lastExportBorder||"0";f.appendChild(q);mxUtils.br(f);var v=this.addCheckbox(f,mxResources.get("selectionOnly"),
+!1,l.isSelectionEmpty()),E=document.createElement("input");E.style.marginTop="16px";E.style.marginRight="8px";E.style.marginLeft="24px";E.setAttribute("disabled","disabled");E.setAttribute("type","checkbox");var F=document.createElement("select");F.style.marginTop="16px";F.style.marginLeft="8px";b=["selectionOnly","diagram","page"];for(var K={},p=0;p<b.length;p++)if(!l.isSelectionEmpty()||"selectionOnly"!=b[p]){var J=document.createElement("option");mxUtils.write(J,mxResources.get(b[p]));J.setAttribute("value",
+b[p]);F.appendChild(J);K[b[p]]=J}x?(mxUtils.write(f,mxResources.get("size")+":"),f.appendChild(F),mxUtils.br(f),m+=26,mxEvent.addListener(F,"change",function(){"selectionOnly"==F.value&&(v.checked=!0)})):k&&(f.appendChild(E),mxUtils.write(f,mxResources.get("crop")),mxUtils.br(f),m+=30,mxEvent.addListener(v,"change",function(){v.checked?E.removeAttribute("disabled"):E.setAttribute("disabled","disabled")}));l.isSelectionEmpty()?x&&(v.style.display="none",v.nextSibling.style.display="none",v.nextSibling.nextSibling.style.display=
+"none",m-=30):(F.value="diagram",E.setAttribute("checked","checked"),E.defaultChecked=!0,mxEvent.addListener(v,"change",function(){F.value=v.checked?"selectionOnly":"diagram"}));var I=this.addCheckbox(f,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=u),G=null;Editor.isDarkMode()&&(G=this.addCheckbox(f,mxResources.get("dark"),!0),m+=26);var Q=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible),N=null;if("png"==u||"jpeg"==u)N=this.addCheckbox(f,mxResources.get("grid"),!1,this.isOffline()||
+!this.canvasSupported,!1,!0),m+=30;var M=this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),n,null,null,"jpeg"!=u);M.style.marginBottom="16px";var Y=document.createElement("input");Y.style.marginBottom="16px";Y.style.marginRight="8px";Y.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||Y.setAttribute("disabled","disabled");var W=document.createElement("select");W.style.maxWidth="260px";W.style.marginLeft="8px";W.style.marginRight="10px";W.style.marginBottom="16px";
+W.className="geBtn";k=document.createElement("option");k.setAttribute("value","none");mxUtils.write(k,mxResources.get("noChange"));W.appendChild(k);k=document.createElement("option");k.setAttribute("value","embedFonts");mxUtils.write(k,mxResources.get("embedFonts"));W.appendChild(k);k=document.createElement("option");k.setAttribute("value","lblToSvg");mxUtils.write(k,mxResources.get("lblToSvg"));W.appendChild(k);this.isOffline()&&k.setAttribute("disabled","disabled");mxEvent.addListener(W,"change",
+mxUtils.bind(this,function(){"lblToSvg"==W.value?(Y.checked=!0,Y.setAttribute("disabled","disabled"),K.page.style.display="none","page"==F.value&&(F.value="diagram"),Q.checked=!1,Q.setAttribute("disabled","disabled"),R.style.display="inline-block",L.style.display="none"):"disabled"==Y.getAttribute("disabled")&&(Y.checked=!1,Y.removeAttribute("disabled"),Q.removeAttribute("disabled"),K.page.style.display="",R.style.display="none",L.style.display="")}));c&&(f.appendChild(Y),mxUtils.write(f,mxResources.get("embedImages")),
+mxUtils.br(f),mxUtils.write(f,mxResources.get("txtSettings")+":"),f.appendChild(W),mxUtils.br(f),m+=60);var L=document.createElement("select");L.style.maxWidth="260px";L.style.marginLeft="8px";L.style.marginRight="10px";L.className="geBtn";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));L.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));L.appendChild(c);
+c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));L.appendChild(c);var R=document.createElement("div");mxUtils.write(R,mxResources.get("LinksLost"));R.style.margin="7px";R.style.display="none";"svg"==u&&(mxUtils.write(f,mxResources.get("links")+":"),f.appendChild(L),f.appendChild(R),mxUtils.br(f),mxUtils.br(f),m+=50);d=new CustomDialog(this,f,mxUtils.bind(this,function(){this.lastExportBorder=q.value;this.lastExportZoom=t.value;
+g(t.value,I.checked,!v.checked,Q.checked,M.checked,Y.checked,q.value,E.checked,!1,L.value,null!=N?N.checked:null,null!=G?G.checked:null,F.value,"embedFonts"==W.value,"lblToSvg"==W.value)}),null,d,e);this.showDialog(d.container,340,m,!0,!0,null,null,null,null,!0);t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace="nowrap";
+var l=this.editor.graph;if(null!=c){var m=document.createElement("h3");mxUtils.write(m,c);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(m)}var k=this.addCheckbox(f,mxResources.get("fit"),!0),p=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible&&e,!e),n=this.addCheckbox(f,d),q=this.addCheckbox(f,mxResources.get("lightbox"),!0),y=this.addEditButton(f,q),C=y.getEditInput(),H=1<l.model.getChildCount(l.model.getRoot()),D=this.addCheckbox(f,mxResources.get("layers"),
+H,!H);D.style.marginLeft=C.style.marginLeft;D.style.marginBottom="12px";D.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(H&&D.removeAttribute("disabled"),C.removeAttribute("disabled")):(D.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"));C.checked&&q.checked?y.getEditSelect().removeAttribute("disabled"):y.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,f,mxUtils.bind(this,function(){b(k.checked,p.checked,n.checked,
+q.checked,y.getLink(),D.checked)}),null,mxResources.get("embed"),g);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,d,e,g,k,n,u){function f(c){var f=" ",p="";e&&(f=" 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('"+
EditorUi.lightboxHost+"/?client=1"+(null!=m?"&page="+m:"")+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");b&&(p+="max-width:100%;");var q="";d&&(q=' width="'+Math.round(l.width)+'" height="'+Math.round(l.height)+'"');n('<img src="'+c+'"'+q+(""!=p?' style="'+p+'"':"")+f+"/>")}var l=this.editor.graph.getGraphBounds(),m=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=e?this.getFileData(!0):null;b=
this.createImageDataUri(b,c,"png");f(b)}),null,null,null,mxUtils.bind(this,function(b){u({message:mxResources.get("unknownError")})}),null,!0,d?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),l.width*l.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var p="";d&&(p="&w="+Math.round(2*l.width)+"&h="+Math.round(2*l.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+p+"&xml="+encodeURIComponent(c));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&
299>=q.getStatus()?f("data:image/png;base64,"+q.getText()):u({message:mxResources.get("unknownError")})}))}else u({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,d,e,g,k,n){var f=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!d),l=f.getElementsByTagName("a");if(null!=l)for(var m=0;m<l.length;m++){var p=l[m].getAttribute("href");null!=p&&"#"==p.charAt(0)&&"_blank"==l[m].getAttribute("target")&&l[m].removeAttribute("target")}e&&
@@ -11016,9 +11021,9 @@ atob(u):Base64.decode(u,!0)));null!=u&&"%"==u.charAt(0)&&(u=decodeURIComponent(u
"0 0 "+n+" "+y);q=Editor.createSvgDataUri(mxUtils.getXml(l));var b=q.indexOf(";");0<b&&(q=q.substring(0,b)+q.substring(q.indexOf(",",b+1)));m.setCellStyles("image",q,[x[0]])});z.src=Editor.createSvgDataUri(mxUtils.getXml(l))}return x}}}catch(ca){}return null})):D(f,mxUtils.bind(this,function(){return g(u,"text/xml",c+f*p,d+f*p,0,0,k.name)}))}else D(f,mxUtils.bind(this,function(){return null}))}else{y=!1;if("image/png"==k.type){var C=B?null:this.extractGraphModelFromPng(b.target.result);if(null!=C&&
0<C.length){var x=new Image;x.src=b.target.result;D(f,mxUtils.bind(this,function(){return g(C,"text/xml",c+f*p,d+f*p,x.width,x.height,k.name)}));y=!0}}y||(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(b.target.result,mxUtils.bind(this,function(m){this.resizeImage(m,
b.target.result,mxUtils.bind(this,function(b,m,n){D(f,mxUtils.bind(this,function(){if(null!=b&&b.length<z){var q=l&&this.isResampleImageSize(k.size,A)?Math.min(1,Math.min(e/m,e/n)):1;return g(b,k.type,c+f*p,d+f*p,Math.round(m*q),Math.round(n*q),k.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),l,e,A,k.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else q=b.target.result,g(q,k.type,c+f*p,d+f*p,240,160,k.name,
-function(b){D(f,function(){return b})},k)});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?g(null,k.type,c+f*p,d+f*p,240,160,k.name,function(b){D(f,function(){return b})},k):"image"==k.type.substring(0,5)||"application/pdf"==k.type?q.readAsDataURL(k):q.readAsText(k)}})(C)});if(m){m=[];for(q=0;q<b.length;q++)m.push(b[q]);b=m;this.confirmImageResize(function(b){l=b;t()},x)}else t()};EditorUi.prototype.confirmImageResize=function(b,c){c=null!=c?c:!1;var f=null!=this.spinner&&
-null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,e=function(d,e){if(d||c)mxSettings.setResizeImages(d?e:null),mxSettings.save();f();b(e)};null==d||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){e(b,!0)},function(b){e(b,!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):e(!1,d)};EditorUi.prototype.parseFile=function(b,c,d){d=null!=d?d:b.name;var f=new FileReader;f.onload=mxUtils.bind(this,function(){this.parseFileData(f.result,c,d)});f.readAsText(b)};EditorUi.prototype.parseFileData=function(b,c,d){var f=new XMLHttpRequest;f.open("POST",OPEN_URL);f.setRequestHeader("Content-Type","application/x-www-form-urlencoded");f.onreadystatechange=
+function(b){D(f,function(){return b})},k)});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?g(null,k.type,c+f*p,d+f*p,240,160,k.name,function(b){D(f,function(){return b})},k):"image"==k.type.substring(0,5)||"application/pdf"==k.type?q.readAsDataURL(k):q.readAsText(k)}})(C)});if(m){m=[];for(q=0;q<b.length;q++)m.push(b[q]);b=m;this.confirmImageResize(function(b){l=b;t()},x)}else t()};EditorUi.prototype.confirmImageResize=function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&
+null!=this.spinner.pause?this.spinner.pause():function(){},f=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,e=function(f,e){if(f||c)mxSettings.setResizeImages(f?e:null),mxSettings.save();d();b(e)};null==f||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){e(b,!0)},function(b){e(b,!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):e(!1,f)};EditorUi.prototype.parseFile=function(b,c,d){d=null!=d?d:b.name;var f=new FileReader;f.onload=mxUtils.bind(this,function(){this.parseFileData(f.result,c,d)});f.readAsText(b)};EditorUi.prototype.parseFileData=function(b,c,d){var f=new XMLHttpRequest;f.open("POST",OPEN_URL);f.setRequestHeader("Content-Type","application/x-www-form-urlencoded");f.onreadystatechange=
function(){c(f)};f.send("format=xml&filename="+encodeURIComponent(d)+"&data="+encodeURIComponent(b));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,d,e,g,k,n){g=null!=g?g:this.maxImageSize;var f=Math.max(1,b.width),l=Math.max(1,b.height);if(e&&this.isResampleImageSize(null!=n?n:c.length,k))try{var m=Math.max(f/
g,l/g);if(1<m){var p=Math.round(f/m),q=Math.round(l/m),t=document.createElement("canvas");t.width=p;t.height=q;t.getContext("2d").drawImage(b,0,0,p,q);var v=t.toDataURL();if(v.length<c.length){var H=document.createElement("canvas");H.width=p;H.height=q;var D=H.toDataURL();v!==D&&(c=v,f=p,l=q)}}}catch(E){}d(c,f,l)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,d){try{var f=new Image;f.onload=function(){f.width=
0<f.width?f.width:120;f.height=0<f.height?f.height:120;c(f)};null!=d&&(f.onerror=d);f.src=b}catch(q){if(null!=d)d(q);else throw q;}};EditorUi.prototype.getDefaultSketchMode=function(){var b="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?urlParams.rough:b)};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=
@@ -11102,10 +11107,10 @@ function(g){if(g.source==(window.opener||window.parent)){var l=g.data,m=null,n=m
!1;try{l=JSON.parse(l)}catch(V){l=null}try{if(null==l)return;if("dialog"==l.action){this.showError(null!=l.titleKey?mxResources.get(l.titleKey):l.title,null!=l.messageKey?mxResources.get(l.messageKey):l.message,null!=l.buttonKey?mxResources.get(l.buttonKey):l.button);null!=l.modified&&(this.editor.modified=l.modified);return}if("layout"==l.action){this.executeLayoutList(l.layouts);return}if("prompt"==l.action){this.spinner.stop();var q=new FilenameDialog(this,l.defaultValue||"",null!=l.okKey?mxResources.get(l.okKey):
l.ok,function(b){null!=b?k.postMessage(JSON.stringify({event:"prompt",value:b,message:l}),"*"):k.postMessage(JSON.stringify({event:"prompt-cancel",message:l}),"*")},null!=l.titleKey?mxResources.get(l.titleKey):l.title);this.showDialog(q.container,300,80,!0,!1);q.init();return}if("draft"==l.action){var t=n(l.xml);this.spinner.stop();q=new DraftDialog(this,mxResources.get("draftFound",[l.name||this.defaultFilename]),t,mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",
result:"edit",message:l}),"*")}),mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"discard",message:l}),"*")}),l.editKey?mxResources.get(l.editKey):null,l.discardKey?mxResources.get(l.discardKey):null,l.ignore?mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"ignore",message:l}),"*")}):null);this.showDialog(q.container,640,480,!0,!1,mxUtils.bind(this,function(b){b&&this.actions.get("exit").funct()}));
-try{q.init()}catch(V){k.postMessage(JSON.stringify({event:"draft",error:V.toString(),message:l}),"*")}return}if("template"==l.action){this.spinner.stop();var u=1==l.enableRecent,v=1==l.enableSearch,x=1==l.enableCustomTemp;if("1"==urlParams.newTempDlg&&!l.templatesOnly&&null!=l.callback){var K=this.getCurrentUser(),J=new TemplatesDialog(this,function(b,c,d){b=b||this.emptyDiagramXml;k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,tempUrl:d.url,libs:d.libs,
-builtIn:null!=d.info&&null!=d.info.custContentId,message:l}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=K?K.id:null,u?mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getRecentDiagrams",[d],null,b,c)}):null,v?mxUtils.bind(this,function(b,c,d,f){this.remoteInvoke("searchDiagrams",[b,f],null,c,d)}):null,mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getFileContent",[b.url],null,c,d)}),null,x?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",
+try{q.init()}catch(V){k.postMessage(JSON.stringify({event:"draft",error:V.toString(),message:l}),"*")}return}if("template"==l.action){this.spinner.stop();var v=1==l.enableRecent,u=1==l.enableSearch,x=1==l.enableCustomTemp;if("1"==urlParams.newTempDlg&&!l.templatesOnly&&null!=l.callback){var K=this.getCurrentUser(),J=new TemplatesDialog(this,function(b,c,d){b=b||this.emptyDiagramXml;k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,tempUrl:d.url,libs:d.libs,
+builtIn:null!=d.info&&null!=d.info.custContentId,message:l}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=K?K.id:null,v?mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getRecentDiagrams",[d],null,b,c)}):null,u?mxUtils.bind(this,function(b,c,d,f){this.remoteInvoke("searchDiagrams",[b,f],null,c,d)}):null,mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getFileContent",[b.url],null,c,d)}),null,x?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",
null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(J.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,l.templatesOnly?!1:null!=l.callback,mxUtils.bind(this,function(c,d,f,e){c=c||this.emptyDiagramXml;null!=l.callback?k.postMessage(JSON.stringify({event:"template",xml:c,blank:c==this.emptyDiagramXml,name:d,tempUrl:f,libs:e,builtIn:!0,message:l}),"*"):(b(c,g,c!=this.emptyDiagramXml,l.toSketch),this.editor.modified||this.editor.setStatus(""))}),
-null,null,null,null,null,null,null,u?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,v?mxUtils.bind(this,function(b,c){this.remoteInvoke("searchDiagrams",[b,null],null,c,function(){c(null,"Network Error!")})}):null,mxUtils.bind(this,function(b,c,d){k.postMessage(JSON.stringify({event:"template",docUrl:b,info:c,name:d}),"*")}),null,null,x?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},
+null,null,null,null,null,null,null,v?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,u?mxUtils.bind(this,function(b,c){this.remoteInvoke("searchDiagrams",[b,null],null,c,function(){c(null,"Network Error!")})}):null,mxUtils.bind(this,function(b,c,d){k.postMessage(JSON.stringify({event:"template",docUrl:b,info:c,name:d}),"*")}),null,null,x?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},
0)})}):null,1==l.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==l.action){var I=this.getDiagramTextContent();k.postMessage(JSON.stringify({event:"textContent",data:I,message:l}),"*");return}if("status"==l.action){null!=l.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(l.messageKey))):null!=l.message&&this.editor.setStatus(mxUtils.htmlEntities(l.message));
null!=l.modified&&(this.editor.modified=l.modified);return}if("spinner"==l.action){var G=null!=l.messageKey?mxResources.get(l.messageKey):l.message;null==l.show||l.show?this.spinner.spin(document.body,G):this.spinner.stop();return}if("exit"==l.action){this.actions.get("exit").funct();return}if("viewport"==l.action){null!=l.viewport&&(this.embedViewport=l.viewport);return}if("snapshot"==l.action){this.sendEmbeddedSvgExport(!0);return}if("export"==l.action){if("png"==l.format||"xmlpng"==l.format){if(null==
l.spin&&null==l.spinKey||this.spinner.spin(document.body,null!=l.spinKey?mxResources.get(l.spinKey):l.spin)){var Q=null!=l.xml?l.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var N=this.editor.graph,M=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var c=this.createLoadMessage("export");c.format=l.format;c.message=l;c.data=b;c.xml=Q;k.postMessage(JSON.stringify(c),"*")}),Y=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==l.format&&
@@ -11189,8 +11194,8 @@ var CommentsWindow=function(b,e,d,c,g,k){function n(){for(var b=B.getElementsByT
"geCommentEditTxtArea";l.style.minHeight=g.offsetHeight+"px";l.value=b.content;c.insertBefore(l,g);var m=document.createElement("div");m.className="geCommentEditBtns";var p=mxUtils.button(mxResources.get("cancel"),function(){e?(c.parentNode.removeChild(c),n()):f();x=null});p.className="geCommentEditBtn";m.appendChild(p);var q=mxUtils.button(mxResources.get("save"),function(){g.innerHTML="";b.content=l.value;mxUtils.write(g,b.content);f();d(b);x=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
function(b){mxEvent.isConsumed(b)||((mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b))&&13==b.keyCode?(q.click(),mxEvent.consume(b)):27==b.keyCode&&(p.click(),mxEvent.consume(b)))}));q.focus();q.className="geCommentEditBtn gePrimaryBtn";m.appendChild(q);c.insertBefore(m,g);k.style.display="none";g.style.display="none";l.focus()}function l(c,d){d.innerHTML="";var e=new Date(c.modifiedDate),f=b.timeSince(e);null==f&&(f=mxResources.get("lessThanAMinute"));mxUtils.write(d,mxResources.get("timeAgo",
[f],"{1} ago"));d.setAttribute("title",e.toLocaleDateString()+" "+e.toLocaleTimeString())}function m(b){var c=document.createElement("img");c.className="geCommentBusyImg";c.src=IMAGE_PATH+"/spin.gif";b.appendChild(c);b.busyImg=c}function p(b){b.style.border="1px solid red";b.removeChild(b.busyImg)}function q(b){b.style.border="";b.removeChild(b.busyImg)}function t(c,d,e,g,k){function C(b,d,e){var f=document.createElement("li");f.className="geCommentAction";var g=document.createElement("a");g.className=
-"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});H.appendChild(f);e&&(f.style.display="none")}function I(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=G;b(c);return{pdiv:e,replies:d}}function E(d,e,k,l,n){function y(){m(C);c.addReply(D,function(b){D.id=b;c.replies.push(D);q(C);k&&k()},function(c){u();p(C);b.handleError(c,null,
-null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},l,n)}function u(){f(D,C,function(b){y()},!0)}var v=I().pdiv,D=b.newComment(d,b.getCurrentUser());D.pCommentId=c.id;null==c.replies&&(c.replies=[]);var C=t(D,c.replies,v,g+1);e?u():y()}if(k||!c.isResolved){y.style.display="none";var G=document.createElement("div");G.className="geCommentContainer";G.setAttribute("data-commentId",c.id);G.style.marginLeft=20*g+5+"px";c.isResolved&&!Editor.isDarkMode()&&(G.style.backgroundColor="ghostWhite");
+"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});H.appendChild(f);e&&(f.style.display="none")}function I(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=G;b(c);return{pdiv:e,replies:d}}function E(d,e,k,l,n){function y(){m(C);c.addReply(D,function(b){D.id=b;c.replies.push(D);q(C);k&&k()},function(c){v();p(C);b.handleError(c,null,
+null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},l,n)}function v(){f(D,C,function(b){y()},!0)}var u=I().pdiv,D=b.newComment(d,b.getCurrentUser());D.pCommentId=c.id;null==c.replies&&(c.replies=[]);var C=t(D,c.replies,u,g+1);e?v():y()}if(k||!c.isResolved){y.style.display="none";var G=document.createElement("div");G.className="geCommentContainer";G.setAttribute("data-commentId",c.id);G.style.marginLeft=20*g+5+"px";c.isResolved&&!Editor.isDarkMode()&&(G.style.backgroundColor="ghostWhite");
var F=document.createElement("div");F.className="geCommentHeader";var z=document.createElement("img");z.className="geCommentUserImg";z.src=c.user.pictureUrl||Editor.userImage;F.appendChild(z);z=document.createElement("div");z.className="geCommentHeaderTxt";F.appendChild(z);var A=document.createElement("div");A.className="geCommentUsername";mxUtils.write(A,c.user.displayName||"");z.appendChild(A);A=document.createElement("div");A.className="geCommentDate";A.setAttribute("data-commentId",c.id);l(c,
A);z.appendChild(A);G.appendChild(F);F=document.createElement("div");F.className="geCommentTxt";mxUtils.write(F,c.content||"");G.appendChild(F);c.isLocked&&(G.style.opacity="0.5");F=document.createElement("div");F.className="geCommentActions";var H=document.createElement("ul");H.className="geCommentActionsList";F.appendChild(H);v||c.isLocked||0!=g&&!u||C(mxResources.get("reply"),function(){E("",!0)},c.isResolved);z=b.getCurrentUser();null==z||z.id!=c.user.id||v||c.isLocked||(C(mxResources.get("edit"),
function(){function d(){f(c,G,function(){m(G);c.editComment(c.content,function(){q(G)},function(c){p(G);d();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},c.isResolved),C(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){m(G);c.deleteComment(function(b){if(!0===b){b=G.querySelector(".geCommentTxt");b.innerHTML="";mxUtils.write(b,mxResources.get("msgDeleted"));var e=G.querySelectorAll(".geCommentAction");for(b=
@@ -11390,8 +11395,8 @@ null:b.getCurrentEtag(),p=mxUtils.bind(this,function(k){b.saveLevel=5;try{var l=
if(m){b.saveLevel=6;try{b.isConflict(c)?this.executeRequest({url:"/files/"+b.getId()+"?supportsAllDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(e){b.saveLevel=7;try{if(null!=e&&e.etag==n)if(d<this.staleEtagMaxRetries){d++;var f=2*d*this.coolOff*(1+.1*(Math.random()-.5));window.setTimeout(q,f);"1"==urlParams.test&&EditorUi.debug("DriveClient: Stale Etag Detected","retry",d,"delay",f)}else{q(!0);try{EditorUi.logEvent({category:"STALE-ETAG-SAVE-FILE-"+b.getHash(),action:"rev_"+
b.desc.headRevisionId+"-mod_"+b.desc.modifiedDate+"-size_"+b.getSize()+"-mime_"+b.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+(b.isAutosave()?"":"-noauto")+(b.changeListenerEnabled?"":"-nolisten")+(b.inConflictState?"-conflict":"")+(b.invalidChecksum?"-invalid":""),label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=b.sync?"-client_"+b.sync.clientId:"-nosync")})}catch(da){}}else"1"==urlParams.test&&e.headRevisionId==A&&EditorUi.debug("DriveClient: Remote Etag Changed","local",n,
"remote",e.etag,"rev",b.desc.headRevisionId,"response",[e],"file",[b]),g(c,e)}catch(da){v(da)}}),mxUtils.bind(this,function(){g(c)})):g(c)}catch(oa){v(oa)}}}))}catch(V){v(V)}}),q=mxUtils.bind(this,function(c){b.saveLevel=9;if(c||null==n)p(c);else{var d=!0,e=null;try{e=window.setTimeout(mxUtils.bind(this,function(){d=!1;g({code:App.ERROR_TIMEOUT})}),3*this.ui.timeout)}catch(aa){}this.executeRequest({url:"/files/"+b.getId()+"?supportsAllDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(f){window.clearTimeout(e);
-if(d){b.saveLevel=10;try{null!=f&&f.headRevisionId==A?("1"==urlParams.test&&n!=f.etag&&EditorUi.debug("DriveClient: Preflight Etag Update","from",n,"to",f.etag,"rev",b.desc.headRevisionId,"response",[f],"file",[b]),n=f.etag,p(c)):g({error:{code:412}},f)}catch(V){v(V)}}}),mxUtils.bind(this,function(c){window.clearTimeout(e);d&&(b.saveLevel=11,g(c))}))}});if(B&&null==k){b.saveLevel=8;var t=new Image;t.onload=mxUtils.bind(this,function(){try{var b=this.thumbnailWidth/t.width,c=document.createElement("canvas");
-c.width=this.thumbnailWidth;c.height=Math.floor(t.height*b);c.getContext("2d").drawImage(t,0,0,c.width,c.height);var d=c.toDataURL(),d=d.substring(d.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_");H.thumbnail={image:d,mimeType:"image/png"};q(!1)}catch(aa){try{q(!1)}catch(V){v(V)}}});t.src="data:image/png;base64,"+e}else q(!1)}catch(O){v(O)}});if(B){var F=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){E(b,!0)}),g,this.ui.getCurrentFile()!=
+if(d){b.saveLevel=10;try{null!=f&&f.headRevisionId==A?("1"==urlParams.test&&n!=f.etag&&EditorUi.debug("DriveClient: Preflight Etag Update","from",n,"to",f.etag,"rev",b.desc.headRevisionId,"response",[f],"file",[b]),n=f.etag,p(c)):g({error:{code:412}},f)}catch(V){v(V)}}}),mxUtils.bind(this,function(c){window.clearTimeout(e);d&&(b.saveLevel=11,g(c))}))}});if(B&&null==k){b.saveLevel=8;var y=new Image;y.onload=mxUtils.bind(this,function(){try{var b=this.thumbnailWidth/y.width,c=document.createElement("canvas");
+c.width=this.thumbnailWidth;c.height=Math.floor(y.height*b);c.getContext("2d").drawImage(y,0,0,c.width,c.height);var d=c.toDataURL(),d=d.substring(d.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_");H.thumbnail={image:d,mimeType:"image/png"};q(!1)}catch(aa){try{q(!1)}catch(V){v(V)}}});y.src="data:image/png;base64,"+e}else q(!1)}catch(O){v(O)}});if(B){var F=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){E(b,!0)}),g,this.ui.getCurrentFile()!=
b?t:null,F.scale,F.border)}else E(t,!1)}catch(N){v(N)}});try{b.saveLevel=2,(f||B||b.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=H.mimeType&&"application/vnd.jgraph.mxfile"!=H.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(b){try{var c=null;try{null!=b&&(c=b.toDataURL("image/png")),null!=c&&(c=c.length>this.maxThumbnailSize?null:c.substring(c.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_"))}catch(K){c=null}D(c,
"image/png")}catch(K){v(K)}})))&&D(null,null,b.constructor!=DriveLibrary)}catch(E){v(E)}}else this.ui.editor.graph.reset(),g({message:mxResources.get("readOnly")})}catch(E){v(E)}};DriveClient.prototype.insertFile=function(b,c,e,k,n,f,l){f=null!=f?f:this.xmlMimeType;b={mimeType:f,title:b};null!=e&&(b.parents=[{kind:"drive#fileLink",id:e}]);this.executeRequest(this.createUploadRequest(null,b,c,!1,l),mxUtils.bind(this,function(b){f==this.libraryMimeType?k(new DriveLibrary(this.ui,c,b)):0==b?null!=n&&
n({message:mxResources.get("errorSavingFile")}):k(new DriveFile(this.ui,c,b))}),n)};DriveClient.prototype.createUploadRequest=function(b,c,e,k,n,f,l){n=null!=n?n:!1;var d={"Content-Type":'multipart/mixed; boundary="-------314159265358979323846"'};null!=f&&(d["If-Match"]=f);b={fullUrl:"https://content.googleapis.com/upload/drive/v2/files"+(null!=b?"/"+b:"")+"?uploadType=multipart&supportsAllDrives=true&enforceSingleParent=true&fields="+this.allFields,method:null!=b?"PUT":"POST",headers:d,params:"\r\n---------314159265358979323846\r\nContent-Type: application/json\r\n\r\n"+
@@ -11524,8 +11529,8 @@ function(){y()})],[mxResources.get("authorize"),mxUtils.bind(this,function(){thi
e&&(f.style.textDecoration="underline");null!=d&&(b=p.cloneNode(),b.style.padding=d,b.appendChild(f),f=b);return f}),v=mxUtils.bind(this,function(b){var d=document.createElement("div");d.style.marginBottom="8px";d.appendChild(t(c+"/"+e,mxUtils.bind(this,function(){n=null;y()}),null,!0));b||(mxUtils.write(d," / "),d.appendChild(t(decodeURIComponent(k),mxUtils.bind(this,function(){n=null;B()}),null,!0)));if(null!=n&&0<n.length){var f=n.split("/");for(b=0;b<f.length;b++)(function(b){mxUtils.write(d,
" / ");d.appendChild(t(f[b],mxUtils.bind(this,function(){n=f.slice(0,b+1).join("/");A()}),null,!0))})(b)}m.appendChild(d)}),u=mxUtils.bind(this,function(b){this.ui.handleError(b,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(n=k=e=c=null,y()):this.ui.hideDialog()}),null,{})}),x=null,z=null,A=mxUtils.bind(this,function(f){null==f&&(m.innerHTML="",f=1);var g=new mxXmlRequest(this.baseUrl+"/repos/"+c+"/"+e+"/contents/"+n+"?ref="+encodeURIComponent(k)+"&per_page=100&page="+
f,null,"GET");this.ui.spinner.spin(m,mxResources.get("loading"));q.okButton.removeAttribute("disabled");null!=z&&(mxEvent.removeListener(m,"scroll",z),z=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var l=mxUtils.bind(this,function(){A(f+1)});mxEvent.addListener(x,"click",l);this.executeRequest(g,mxUtils.bind(this,function(g){this.ui.spinner.stop();1==f&&(v(),
-m.appendChild(t("../ [Up]",mxUtils.bind(this,function(){if(""==n)n=null,y();else{var b=n.split("/");n=b.slice(0,b.length-1).join("/");A()}}),"4px")));var l=JSON.parse(g.getText());if(null==l||0==l.length)mxUtils.write(m,mxResources.get("noFiles"));else{var q=!0,D=0;g=mxUtils.bind(this,function(f){for(var g=0;g<l.length;g++)mxUtils.bind(this,function(g,l){if(f==("dir"==g.type)){var y=p.cloneNode();y.style.backgroundColor=q?Editor.isDarkMode()?"#000000":"#eeeeee":"";q=!q;var u=document.createElement("img");
-u.src=IMAGE_PATH+"/"+("dir"==g.type?"folder.png":"file.png");u.setAttribute("align","absmiddle");u.style.marginRight="4px";u.style.marginTop="-4px";u.width=20;y.appendChild(u);y.appendChild(t(g.name+("dir"==g.type?"/":""),mxUtils.bind(this,function(){"dir"==g.type?(n=g.path,A()):b&&"file"==g.type&&(this.ui.hideDialog(),d(c+"/"+e+"/"+encodeURIComponent(k)+"/"+g.path))})));m.appendChild(y);D++}})(l[g],g)});g(!0);b&&g(!1)}}),u,!0)}),B=mxUtils.bind(this,function(b,d){null==b&&(m.innerHTML="",b=1);var f=
+m.appendChild(t("../ [Up]",mxUtils.bind(this,function(){if(""==n)n=null,y();else{var b=n.split("/");n=b.slice(0,b.length-1).join("/");A()}}),"4px")));var l=JSON.parse(g.getText());if(null==l||0==l.length)mxUtils.write(m,mxResources.get("noFiles"));else{var q=!0,D=0;g=mxUtils.bind(this,function(f){for(var g=0;g<l.length;g++)mxUtils.bind(this,function(g,l){if(f==("dir"==g.type)){var y=p.cloneNode();y.style.backgroundColor=q?Editor.isDarkMode()?"#000000":"#eeeeee":"";q=!q;var C=document.createElement("img");
+C.src=IMAGE_PATH+"/"+("dir"==g.type?"folder.png":"file.png");C.setAttribute("align","absmiddle");C.style.marginRight="4px";C.style.marginTop="-4px";C.width=20;y.appendChild(C);y.appendChild(t(g.name+("dir"==g.type?"/":""),mxUtils.bind(this,function(){"dir"==g.type?(n=g.path,A()):b&&"file"==g.type&&(this.ui.hideDialog(),d(c+"/"+e+"/"+encodeURIComponent(k)+"/"+g.path))})));m.appendChild(y);D++}})(l[g],g)});g(!0);b&&g(!1)}}),u,!0)}),B=mxUtils.bind(this,function(b,d){null==b&&(m.innerHTML="",b=1);var f=
new mxXmlRequest(this.baseUrl+"/repos/"+c+"/"+e+"/branches?per_page=100&page="+b,null,"GET");q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(m,mxResources.get("loading"));null!=z&&(mxEvent.removeListener(m,"scroll",z),z=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var g=mxUtils.bind(this,function(){B(b+1)});mxEvent.addListener(x,"click",
g);this.executeRequest(f,mxUtils.bind(this,function(c){this.ui.spinner.stop();1==b&&(v(!0),m.appendChild(t("../ [Up]",mxUtils.bind(this,function(){n=null;y()}),"4px")));c=JSON.parse(c.getText());if(null==c||0==c.length)mxUtils.write(m,mxResources.get("noFiles"));else if(1==c.length&&d)k=c[0].name,n="",A();else{for(var e=0;e<c.length;e++)mxUtils.bind(this,function(b,c){var d=p.cloneNode();d.style.backgroundColor=0==c%2?Editor.isDarkMode()?"#000000":"#eeeeee":"";d.appendChild(t(b.name,mxUtils.bind(this,
function(){k=b.name;n="";A()})));m.appendChild(d)})(c[e],e);100==c.length&&(m.appendChild(x),z=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&g()},mxEvent.addListener(m,"scroll",z))}}),u)}),y=mxUtils.bind(this,function(b){null==b&&(m.innerHTML="",b=1);var d=new mxXmlRequest(this.baseUrl+"/user/repos?per_page=100&page="+b,null,"GET");q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(m,mxResources.get("loading"));null!=z&&mxEvent.removeListener(m,"scroll",z);null!=x&&null!=
@@ -11579,15 +11584,15 @@ encodeURIComponent(b))});this.showGitLabDialog(!0,b)};GitLabClient.prototype.sho
null;y()}),null,!0));b||(mxUtils.write(d," / "),d.appendChild(t(decodeURIComponent(k),mxUtils.bind(this,function(){n=null;B()}),null,!0)));if(null!=n&&0<n.length){var e=n.split("/");for(b=0;b<e.length;b++)(function(b){mxUtils.write(d," / ");d.appendChild(t(e[b],mxUtils.bind(this,function(){n=e.slice(0,b+1).join("/");A()}),null,!0))})(b)}m.appendChild(d)}),u=mxUtils.bind(this,function(b){this.ui.handleError(b,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(n=k=g=c=null,
y()):this.ui.hideDialog()}))}),x=null,z=null,A=mxUtils.bind(this,function(b){null==b&&(m.innerHTML="",b=1);var f=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(c+"/"+g)+"/repository/tree?path="+n+"&ref="+k+"&per_page=100&page="+b,null,"GET");this.ui.spinner.spin(m,mxResources.get("loading"));q.okButton.removeAttribute("disabled");null!=z&&(mxEvent.removeListener(m,"scroll",z),z=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display=
"block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var l=mxUtils.bind(this,function(){A(b+1)});mxEvent.addListener(x,"click",l);this.executeRequest(f,mxUtils.bind(this,function(f){this.ui.spinner.stop();1==b&&(v(!k),m.appendChild(t("../ [Up]",mxUtils.bind(this,function(){if(""==n)n=null,y();else{var b=n.split("/");n=b.slice(0,b.length-1).join("/");A()}}),"4px")));var q=JSON.parse(f.getText());if(null==q||0==q.length)mxUtils.write(m,mxResources.get("noFiles"));else{var D=
-!0,u=0;f=mxUtils.bind(this,function(b){for(var f=0;f<q.length;f++)mxUtils.bind(this,function(f){if(b==("tree"==f.type)){var l=p.cloneNode();l.style.backgroundColor=D?Editor.isDarkMode()?"#000000":"#eeeeee":"";D=!D;var q=document.createElement("img");q.src=IMAGE_PATH+"/"+("tree"==f.type?"folder.png":"file.png");q.setAttribute("align","absmiddle");q.style.marginRight="4px";q.style.marginTop="-4px";q.width=20;l.appendChild(q);l.appendChild(t(f.name+("tree"==f.type?"/":""),mxUtils.bind(this,function(){"tree"==
-f.type?(n=f.path,A()):e&&"blob"==f.type&&(this.ui.hideDialog(),d(c+"/"+g+"/"+k+"/"+f.path))})));m.appendChild(l);u++}})(q[f])});f(!0);e&&f(!1);100==u&&(m.appendChild(x),z=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&l()},mxEvent.addListener(m,"scroll",z))}}),u,!0)}),B=mxUtils.bind(this,function(b,d){null==b&&(m.innerHTML="",b=1);var e=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(c+"/"+g)+"/repository/branches?per_page=100&page="+b,null,"GET");q.okButton.setAttribute("disabled",
+!0,C=0;f=mxUtils.bind(this,function(b){for(var f=0;f<q.length;f++)mxUtils.bind(this,function(f){if(b==("tree"==f.type)){var l=p.cloneNode();l.style.backgroundColor=D?Editor.isDarkMode()?"#000000":"#eeeeee":"";D=!D;var y=document.createElement("img");y.src=IMAGE_PATH+"/"+("tree"==f.type?"folder.png":"file.png");y.setAttribute("align","absmiddle");y.style.marginRight="4px";y.style.marginTop="-4px";y.width=20;l.appendChild(y);l.appendChild(t(f.name+("tree"==f.type?"/":""),mxUtils.bind(this,function(){"tree"==
+f.type?(n=f.path,A()):e&&"blob"==f.type&&(this.ui.hideDialog(),d(c+"/"+g+"/"+k+"/"+f.path))})));m.appendChild(l);C++}})(q[f])});f(!0);e&&f(!1);100==C&&(m.appendChild(x),z=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&l()},mxEvent.addListener(m,"scroll",z))}}),u,!0)}),B=mxUtils.bind(this,function(b,d){null==b&&(m.innerHTML="",b=1);var e=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(c+"/"+g)+"/repository/branches?per_page=100&page="+b,null,"GET");q.okButton.setAttribute("disabled",
"disabled");this.ui.spinner.spin(m,mxResources.get("loading"));null!=z&&(mxEvent.removeListener(m,"scroll",z),z=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var f=mxUtils.bind(this,function(){B(b+1)});mxEvent.addListener(x,"click",f);this.executeRequest(e,mxUtils.bind(this,function(c){this.ui.spinner.stop();1==b&&(v(!0),m.appendChild(t("../ [Up]",mxUtils.bind(this,
function(){n=null;y()}),"4px")));c=JSON.parse(c.getText());if(null==c||0==c.length)mxUtils.write(m,mxResources.get("noFiles"));else if(1==c.length&&d)k=c[0].name,n="",A();else{for(var e=0;e<c.length;e++)mxUtils.bind(this,function(b,c){var d=p.cloneNode();d.style.backgroundColor=0==c%2?Editor.isDarkMode()?"#000000":"#eeeeee":"";d.appendChild(t(b.name,mxUtils.bind(this,function(){k=encodeURIComponent(b.name);n="";A()})));m.appendChild(d)})(c[e],e);100==c.length&&(m.appendChild(x),z=function(){m.scrollTop>=
m.scrollHeight-m.offsetHeight&&f()},mxEvent.addListener(m,"scroll",z))}}),u)});q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(m,mxResources.get("loading"));var y=mxUtils.bind(this,function(b){var d=this.ui.spinner,e=0;this.ui.spinner.stop();var f=function(){d.spin(m,mxResources.get("loading"));e+=1},l=function(){--e;0===e&&d.stop()};null==b&&(m.innerHTML="",b=1);null!=z&&(mxEvent.removeListener(m,"scroll",z),z=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");
x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var q=mxUtils.bind(this,function(){0===e&&y(b+1)});mxEvent.addListener(x,"click",q);var v=mxUtils.bind(this,function(b){f();var c=new mxXmlRequest(this.baseUrl+"/groups?per_page=100",null,"GET");this.executeRequest(c,mxUtils.bind(this,function(c){b(JSON.parse(c.getText()));l()}),u)}),C=mxUtils.bind(this,function(b,c){f();var d=new mxXmlRequest(this.baseUrl+"/groups/"+b.id+"/projects?per_page=100",null,
"GET");this.executeRequest(d,mxUtils.bind(this,function(d){c(b,JSON.parse(d.getText()));l()}),u)});v(mxUtils.bind(this,function(d){if(null==this.user)mxUtils.write(m,mxResources.get("loggedOut"));else{f();var y=new mxXmlRequest(this.baseUrl+"/users/"+this.user.id+"/projects?per_page=100&page="+b,null,"GET");this.executeRequest(y,mxUtils.bind(this,function(y){y=JSON.parse(y.getText());if(null!=y&&0!=y.length||null!=d&&0!=d.length){1==b&&(m.appendChild(t(mxResources.get("enterValue")+"...",mxUtils.bind(this,
-function(){if(0===e){var b=new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this,function(b){null!=b&&(b=b.split("/"),1<b.length?(c=b[0],g=b[1],k=n=null,2<b.length?(k=encodeURIComponent(b.slice(2,b.length).join("/")),A()):B(null,!0)):(this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})))}),mxResources.get("enterValue"));this.ui.showDialog(b.container,300,80,!0,!1);b.init()}}))),mxUtils.br(m),mxUtils.br(m));for(var u=!0,D=0;D<y.length;D++)mxUtils.bind(this,
-function(b){var d=p.cloneNode();d.style.backgroundColor=u?Editor.isDarkMode()?"#000000":"#eeeeee":"";u=!u;d.appendChild(t(b.name_with_namespace,mxUtils.bind(this,function(){0===e&&(c=b.owner.username,g=b.path,n="",B(null,!0))})));m.appendChild(d)})(y[D]);for(D=0;D<d.length;D++)f(),C(d[D],mxUtils.bind(this,function(b,d){l();for(var f=0;f<d.length;f++){var k=p.cloneNode();k.style.backgroundColor=u?"dark"==uiTheme?"#000000":"#eeeeee":"";u=!u;mxUtils.bind(this,function(d){k.appendChild(t(d.name_with_namespace,
+function(){if(0===e){var b=new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this,function(b){null!=b&&(b=b.split("/"),1<b.length?(c=b[0],g=b[1],k=n=null,2<b.length?(k=encodeURIComponent(b.slice(2,b.length).join("/")),A()):B(null,!0)):(this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})))}),mxResources.get("enterValue"));this.ui.showDialog(b.container,300,80,!0,!1);b.init()}}))),mxUtils.br(m),mxUtils.br(m));for(var D=!0,v=0;v<y.length;v++)mxUtils.bind(this,
+function(b){var d=p.cloneNode();d.style.backgroundColor=D?Editor.isDarkMode()?"#000000":"#eeeeee":"";D=!D;d.appendChild(t(b.name_with_namespace,mxUtils.bind(this,function(){0===e&&(c=b.owner.username,g=b.path,n="",B(null,!0))})));m.appendChild(d)})(y[v]);for(v=0;v<d.length;v++)f(),C(d[v],mxUtils.bind(this,function(b,d){l();for(var f=0;f<d.length;f++){var k=p.cloneNode();k.style.backgroundColor=D?"dark"==uiTheme?"#000000":"#eeeeee":"";D=!D;mxUtils.bind(this,function(d){k.appendChild(t(d.name_with_namespace,
mxUtils.bind(this,function(){0===e&&(c=b.full_path,g=d.path,n="",B(null,!0))})));m.appendChild(k)})(d[f])}}));l()}else l(),mxUtils.write(m,mxResources.get("noFiles"));100==y.length&&(m.appendChild(x),z=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&q()},mxEvent.addListener(m,"scroll",z))}),u)}}))});b?this.user?y():this.updateUser(function(){y()},u,!0):this.authenticate(mxUtils.bind(this,function(){this.updateUser(function(){y()},u,!0)}),u)};GitLabClient.prototype.logout=function(){this.ui.editor.loadUrl(this.redirectUri+
"?doLogout=1&state="+encodeURIComponent("cId="+this.clientId+"&domain="+window.location.hostname));this.clearPersistentToken();this.setUser(null);b=null;this.setToken(null)}})();NotionFile=function(b,e,d){DrawioFile.call(this,b,e);this.meta=d;this.peer=this.ui.notion};mxUtils.extend(NotionFile,DrawioFile);NotionFile.prototype.getId=function(){return this.meta.id};NotionFile.prototype.getHash=function(){return encodeURIComponent("N"+this.getId())};NotionFile.prototype.getMode=function(){return App.MODE_NOTION};NotionFile.prototype.isAutosave=function(){return!1};NotionFile.prototype.getTitle=function(){return this.meta.name};NotionFile.prototype.getNameField=function(){return this.meta.nameField};
NotionFile.prototype.isRenamable=function(){return!1};NotionFile.prototype.isCompressedStorage=function(){return!0};NotionFile.prototype.save=function(b,e,d,c,g){this.doSave(this.getTitle(),e,d,c,g)};NotionFile.prototype.saveAs=function(b,e,d){this.doSave(b,e,d)};NotionFile.prototype.doSave=function(b,e,d,c,g){var k=this.meta.name;this.meta.name=b;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.meta.name=k;this.saveFile(b,!1,e,d,c,g)}),d,c,g])};
@@ -11610,21 +11615,21 @@ x=mxUtils.bind(this,function(b){null==b&&(f.innerHTML="");this.ui.spinner.spin(f
b);this.executeRequest("/v1/databases/"+encodeURIComponent(c)+"/query",JSON.stringify(g),"POST",mxUtils.bind(this,function(g){this.ui.spinner.stop();null==b&&(q(),f.appendChild(p("../ [Up]",mxUtils.bind(this,function(){c=null;z()}),"4px")));var k=g.results;if(null==k||0==k.length)mxUtils.write(f,mxResources.get("noFiles"));else{for(var m=!0,n=0;n<k.length;n++)mxUtils.bind(this,function(b,c){var e=l.cloneNode();e.style.backgroundColor=m?Editor.isDarkMode()?"#000000":"#eeeeee":"";m=!m;var g=document.createElement("img");
g.src=IMAGE_PATH+"/file.png";g.setAttribute("align","absmiddle");g.style.marginRight="4px";g.style.marginTop="-4px";g.width=20;e.appendChild(g);e.appendChild(p(this.getTitle(b.properties).title,mxUtils.bind(this,function(){this.ui.hideDialog();d(b.id)})));f.appendChild(e)})(k[n],n);g.has_more&&(b=g.next_cursor,f.appendChild(v),u=function(){f.scrollTop>=f.scrollHeight-f.offsetHeight&&e()},mxEvent.addListener(f,"scroll",u))}}),t,!0)}),z=mxUtils.bind(this,function(g){null==g&&(f.innerHTML="");m.okButton.setAttribute("disabled",
"disabled");this.ui.spinner.spin(f,mxResources.get("loading"));null!=u&&mxEvent.removeListener(f,"scroll",u);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.style.cursor="pointer";mxUtils.write(v,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){z(g)});mxEvent.addListener(v,"click",k);this.executeRequest("/v1/databases?page_size=100"+(null!=g?"&start_cursor="+g:""),null,"GET",mxUtils.bind(this,function(m){this.ui.spinner.stop();
-var n=m.results,q=0;if(null==n||0==n.length)mxUtils.write(f,mxResources.get("noDBs"));else for(var y=0;y<n.length;y++){var t=n[y].properties[this.xmlField]&&"rich_text"==n[y].properties[this.xmlField].type;if(!b||t)mxUtils.bind(this,function(g,k,m){var n=l.cloneNode();n.style.backgroundColor=0==k%2?Editor.isDarkMode()?"#000000":"#eeeeee":"";n.appendChild(p(this.getTitleVal(g),mxUtils.bind(this,function(){c=g.id;e=this.getTitleVal(g);b?x():(this.ui.hideDialog(),d({id:c,drawioReady:m,schema:g}))})));
-f.appendChild(n)})(n[y],y,t),q++}m.has_more?(g=m.next_cursor,0==q?k():(f.appendChild(v),u=function(){f.scrollTop>=f.scrollHeight-f.offsetHeight&&k()},mxEvent.addListener(f,"scroll",u))):0==q&&""==f.innerHTML&&mxUtils.write(f,mxResources.get("noDBs"))}),t)});z()};NotionClient.prototype.logout=function(){this.executeRequest("/removeToken",null,"GET",function(){},function(){});this.setUser(null);b=null}})();DrawioComment=function(b,e,d,c,g,k,n){this.file=b;this.id=e;this.content=d;this.modifiedDate=c;this.createdDate=g;this.isResolved=k;this.user=n;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,e,d,c,g){e()};DrawioComment.prototype.editComment=function(b,e,d){e()};DrawioComment.prototype.deleteComment=function(b,e){b()};DriveComment=function(b,e,d,c,g,k,n,f){DrawioComment.call(this,b,e,d,c,g,k,n);this.pCommentId=f};mxUtils.extend(DriveComment,DrawioComment);DriveComment.prototype.addReply=function(b,e,d,c,g){b={content:b.content};c?b.verb="resolve":g&&(b.verb="reopen");this.file.ui.drive.executeRequest({url:"/files/"+this.file.getId()+"/comments/"+this.id+"/replies",params:b,method:"POST"},mxUtils.bind(this,function(b){e(b.replyId)}),d)};
+var n=m.results,y=0;if(null==n||0==n.length)mxUtils.write(f,mxResources.get("noDBs"));else for(var q=0;q<n.length;q++){var t=n[q].properties[this.xmlField]&&"rich_text"==n[q].properties[this.xmlField].type;if(!b||t)mxUtils.bind(this,function(g,k,m){var n=l.cloneNode();n.style.backgroundColor=0==k%2?Editor.isDarkMode()?"#000000":"#eeeeee":"";n.appendChild(p(this.getTitleVal(g),mxUtils.bind(this,function(){c=g.id;e=this.getTitleVal(g);b?x():(this.ui.hideDialog(),d({id:c,drawioReady:m,schema:g}))})));
+f.appendChild(n)})(n[q],q,t),y++}m.has_more?(g=m.next_cursor,0==y?k():(f.appendChild(v),u=function(){f.scrollTop>=f.scrollHeight-f.offsetHeight&&k()},mxEvent.addListener(f,"scroll",u))):0==y&&""==f.innerHTML&&mxUtils.write(f,mxResources.get("noDBs"))}),t)});z()};NotionClient.prototype.logout=function(){this.executeRequest("/removeToken",null,"GET",function(){},function(){});this.setUser(null);b=null}})();DrawioComment=function(b,e,d,c,g,k,n){this.file=b;this.id=e;this.content=d;this.modifiedDate=c;this.createdDate=g;this.isResolved=k;this.user=n;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,e,d,c,g){e()};DrawioComment.prototype.editComment=function(b,e,d){e()};DrawioComment.prototype.deleteComment=function(b,e){b()};DriveComment=function(b,e,d,c,g,k,n,f){DrawioComment.call(this,b,e,d,c,g,k,n);this.pCommentId=f};mxUtils.extend(DriveComment,DrawioComment);DriveComment.prototype.addReply=function(b,e,d,c,g){b={content:b.content};c?b.verb="resolve":g&&(b.verb="reopen");this.file.ui.drive.executeRequest({url:"/files/"+this.file.getId()+"/comments/"+this.id+"/replies",params:b,method:"POST"},mxUtils.bind(this,function(b){e(b.replyId)}),d)};
DriveComment.prototype.editComment=function(b,e,d){this.content=b;b={content:b};this.file.ui.drive.executeRequest(this.pCommentId?{url:"/files/"+this.file.getId()+"/comments/"+this.pCommentId+"/replies/"+this.id,params:b,method:"PATCH"}:{url:"/files/"+this.file.getId()+"/comments/"+this.id,params:b,method:"PATCH"},e,d)};
DriveComment.prototype.deleteComment=function(b,e){this.file.ui.drive.executeRequest(this.pCommentId?{url:"/files/"+this.file.getId()+"/comments/"+this.pCommentId+"/replies/"+this.id,method:"DELETE"}:{url:"/files/"+this.file.getId()+"/comments/"+this.id,method:"DELETE"},b,e)};function mxODPicker(b,e,d,c,g,k,n,f,l,m,p,q,t){function v(b,c){c=c||document;return c.querySelector(b)}function u(b,d,e){if(null==b["@microsoft.graph.downloadUrl"])if(null==b.parentReference)e();else{c(b.id,b.parentReference.driveId,function(b){u(b,d,e)},e);return}var f=new XMLHttpRequest;f.open("GET",b["@microsoft.graph.downloadUrl"]);var g=b.file?"image/png"==b.file.mimeType:!1;f.onreadystatechange=function(){if(4==this.readyState){if(200<=this.status&&299>=this.status)try{var b=f.responseText;
g&&(b="data:image/png;base64,"+Editor.base64Encode(b),b=Editor.extractGraphModelFromPng(b));var c=mxUtils.parseXml(b),k="mxlibrary"==c.documentElement.nodeName?c.documentElement:Editor.extractGraphModel(c.documentElement);if(null!=k){d(k.ownerDocument);return}}catch(T){}e()}};g&&f.overrideMimeType&&f.overrideMimeType("text/plain; charset=x-user-defined");f.send()}function x(){q&&null!=J?K.exportToCanvas(function(b){b=EditorUi.prototype.createImageDataUri(b,null,"png");n(I,b);k(I)},400,null,null,function(b){console.log(b)},
600,null,null,null,null,null,J):(n(I,void 0),k(I))}function z(b){function c(b){R.style.background="transparent";R.innerHTML="";var c=document.createElement("div");c.className="odPreviewStatus";mxUtils.write(c,b);R.appendChild(c);F.stop()}if(null!=R)if(R.style.background="transparent",R.innerHTML="",null==b||b.folder||/\.drawiolib$/.test(b.name))c(mxResources.get("noPreview"));else try{null!=b.remoteItem&&(b=b.remoteItem),Y=b,F.spin(R),u(b,function(d){F.stop();if(Y==b)if("mxlibrary"==d.documentElement.nodeName)c(mxResources.get("noPreview"));
else{var e=d.getElementsByTagName("diagram");J=AspectDialog.prototype.createViewer(R,0==e.length?d.documentElement:e[0],null,"transparent")}},function(){I=null;c(mxResources.get("notADiagramFile"))})}catch(V){I=null,c(mxResources.get("notADiagramFile"))}}function A(){var b=v(".odFilesBreadcrumb");if(null!=b){b.innerHTML="";for(var c=0;c<N.length-1;c++){var d=document.createElement("span");d.className="odBCFolder";d.innerHTML=mxUtils.htmlEntities(N[c].name||mxResources.get("home"));b.appendChild(d);
(function(b,c){d.addEventListener("click",function(){e(null);N=N.slice(0,c);y(b.driveId,b.folderId,b.siteId,b.name)})})(N[c],c);var f=document.createElement("span");f.innerHTML=" &gt; ";b.appendChild(f)}null!=N[N.length-1]&&(c=document.createElement("span"),c.innerHTML=mxUtils.htmlEntities(1==N.length?mxResources.get("officeSelDiag"):N[N.length-1].name||mxResources.get("home")),b.appendChild(c))}}function B(){if(null!=I&&!Q)if("sharepoint"==G)y("site",null,I.id,I.displayName);else if("site"==G)y("subsite",
-null,I.id,I.name);else{var b=I.folder;I=I.remoteItem?I.remoteItem:I;var c=(I.parentReference?I.parentReference.driveId:null)||G,d=I.id;b?y(c,d,null,I.name):x()}}function y(b,c,k,m,n){function p(c){F.stop();var d=document.createElement("table");d.className="odFileListGrid";for(var f=null,g=0,k=0;null!=c&&k<c.length;k++){var m=c[k];if(1!=y||!m.webUrl||0<m.webUrl.indexOf("sharepoint.com/sites/")||0>m.webUrl.indexOf("sharepoint.com/")){var n=m.displayName||m.name,p=mxUtils.htmlEntities(m.description||
-n);y&&(m.folder=!0);var q=null!=m.folder;if(!l||q){var t=document.createElement("tr");t.className=g++%2?"odOddRow":"odEvenRow";var D=document.createElement("td");D.style.width="36px";var v=document.createElement("img");v.src="/images/"+(q?"folder.png":"file.png");v.className="odFileImg";D.appendChild(v);t.appendChild(D);D=document.createElement("td");q=document.createElement("div");q.className="odFileTitle";q.innerHTML=mxUtils.htmlEntities(n);q.setAttribute("title",p);D.appendChild(q);t.appendChild(D);
-d.appendChild(t);null==f&&(f=t,f.className+=" odRowSelected",I=m,G=b,e(I));(function(c,d){t.addEventListener("dblclick",B);t.addEventListener("click",function(){f!=d&&(f.className=f.className.replace("odRowSelected",""),f=d,f.className+=" odRowSelected",I=c,G=b,e(I))})})(m,t)}}}0==g?(c=document.createElement("div"),c.className="odEmptyFolder",c.innerHTML=mxUtils.htmlEntities(mxResources.get("folderEmpty",null,"Folder is empty!")),u.appendChild(c)):u.appendChild(d);A();Q=!1}if(!Q){v(".odCatsList").style.display=
-"block";v(".odFilesSec").style.display="block";null!=R&&(R.innerHTML="",R.style.top="50%");var q=Q=!0,y=0;M=arguments;var t=setTimeout(function(){Q=q=!1;F.stop();f(mxResources.get("timeout"))},2E4),u=v(".odFilesList");u.innerHTML="";F.spin(u);var D;switch(b){case "recent":N=[{name:mxResources.get("recent",null,"Recent"),driveId:b}];D=g()||{};var C=[],x;for(x in D)C.push(D[x]);clearTimeout(t);p(C);return;case "shared":D="/me/drive/sharedWithMe";N=[{name:mxResources.get("sharedWithMe",null,"Shared With Me"),
-driveId:b}];break;case "sharepoint":D="/sites?search=";N=[{name:mxResources.get("sharepointSites",null,"Sharepoint Sites"),driveId:b}];y=1;break;case "site":N.push({name:m,driveId:b,folderId:c,siteId:k});D="/sites/"+k+"/drives";y=2;break;case "subsite":N.push({name:m,driveId:b,folderId:c,siteId:k});D="/drives/"+k+(c?"/items/"+c:"/root")+"/children";break;case "search":b=G;N=[{driveId:b,name:mxResources.get("back",null,"Back")}];n=encodeURIComponent(n.replace(/\'/g,"\\'"));D=b?"/drives/"+b+"/root/search(q='"+
-n+"')":"/me/drive/root/search(q='"+n+"')";break;default:null==c?N=[{driveId:b}]:N.push({name:m,driveId:b,folderId:c}),D=(b?"/drives/"+b:"/me/drive")+(c?"/items/"+c:"/root")+"/children"}y||(D+=(0<D.indexOf("?")?"&":"?")+"select=id,name,description,parentReference,file,createdBy,lastModifiedBy,lastModifiedDateTime,size,folder,remoteItem,@microsoft.graph.downloadUrl");d(D,function(b){if(q){clearTimeout(t);b=b.value||[];for(var c=y?b:[],d=0;!y&&d<b.length;d++){var e=b[d],f=e.file?e.file.mimeType:null;
-(e.folder||"text/html"==f||"text/xml"==f||"application/xml"==f||"image/png"==f||/\.svg$/.test(e.name)||/\.html$/.test(e.name)||/\.xml$/.test(e.name)||/\.png$/.test(e.name)||/\.drawio$/.test(e.name)||/\.drawiolib$/.test(e.name))&&c.push(e)}p(c)}},function(b){if(q){clearTimeout(t);var c=null;try{c=JSON.parse(b.responseText).error.message}catch(ca){}f(mxResources.get("errorFetchingFolder",null,"Error fetching folder items")+(null!=c?" ("+c+")":""));Q=!1;F.stop()}})}}function C(b){O.className=O.className.replace("odCatSelected",
+null,I.id,I.name);else{var b=I.folder;I=I.remoteItem?I.remoteItem:I;var c=(I.parentReference?I.parentReference.driveId:null)||G,d=I.id;b?y(c,d,null,I.name):x()}}function y(b,c,k,m,n){function p(c){F.stop();var d=document.createElement("table");d.className="odFileListGrid";for(var f=null,g=0,k=0;null!=c&&k<c.length;k++){var m=c[k];if(1!=q||!m.webUrl||0<m.webUrl.indexOf("sharepoint.com/sites/")||0>m.webUrl.indexOf("sharepoint.com/")){var n=m.displayName||m.name,p=mxUtils.htmlEntities(m.description||
+n);q&&(m.folder=!0);var y=null!=m.folder;if(!l||y){var t=document.createElement("tr");t.className=g++%2?"odOddRow":"odEvenRow";var v=document.createElement("td");v.style.width="36px";var u=document.createElement("img");u.src="/images/"+(y?"folder.png":"file.png");u.className="odFileImg";v.appendChild(u);t.appendChild(v);v=document.createElement("td");y=document.createElement("div");y.className="odFileTitle";y.innerHTML=mxUtils.htmlEntities(n);y.setAttribute("title",p);v.appendChild(y);t.appendChild(v);
+d.appendChild(t);null==f&&(f=t,f.className+=" odRowSelected",I=m,G=b,e(I));(function(c,d){t.addEventListener("dblclick",B);t.addEventListener("click",function(){f!=d&&(f.className=f.className.replace("odRowSelected",""),f=d,f.className+=" odRowSelected",I=c,G=b,e(I))})})(m,t)}}}0==g?(c=document.createElement("div"),c.className="odEmptyFolder",c.innerHTML=mxUtils.htmlEntities(mxResources.get("folderEmpty",null,"Folder is empty!")),D.appendChild(c)):D.appendChild(d);A();Q=!1}if(!Q){v(".odCatsList").style.display=
+"block";v(".odFilesSec").style.display="block";null!=R&&(R.innerHTML="",R.style.top="50%");var y=Q=!0,q=0;M=arguments;var t=setTimeout(function(){Q=y=!1;F.stop();f(mxResources.get("timeout"))},2E4),D=v(".odFilesList");D.innerHTML="";F.spin(D);var u;switch(b){case "recent":N=[{name:mxResources.get("recent",null,"Recent"),driveId:b}];u=g()||{};var C=[],x;for(x in u)C.push(u[x]);clearTimeout(t);p(C);return;case "shared":u="/me/drive/sharedWithMe";N=[{name:mxResources.get("sharedWithMe",null,"Shared With Me"),
+driveId:b}];break;case "sharepoint":u="/sites?search=";N=[{name:mxResources.get("sharepointSites",null,"Sharepoint Sites"),driveId:b}];q=1;break;case "site":N.push({name:m,driveId:b,folderId:c,siteId:k});u="/sites/"+k+"/drives";q=2;break;case "subsite":N.push({name:m,driveId:b,folderId:c,siteId:k});u="/drives/"+k+(c?"/items/"+c:"/root")+"/children";break;case "search":b=G;N=[{driveId:b,name:mxResources.get("back",null,"Back")}];n=encodeURIComponent(n.replace(/\'/g,"\\'"));u=b?"/drives/"+b+"/root/search(q='"+
+n+"')":"/me/drive/root/search(q='"+n+"')";break;default:null==c?N=[{driveId:b}]:N.push({name:m,driveId:b,folderId:c}),u=(b?"/drives/"+b:"/me/drive")+(c?"/items/"+c:"/root")+"/children"}q||(u+=(0<u.indexOf("?")?"&":"?")+"select=id,name,description,parentReference,file,createdBy,lastModifiedBy,lastModifiedDateTime,size,folder,remoteItem,@microsoft.graph.downloadUrl");d(u,function(b){if(y){clearTimeout(t);b=b.value||[];for(var c=q?b:[],d=0;!q&&d<b.length;d++){var e=b[d],f=e.file?e.file.mimeType:null;
+(e.folder||"text/html"==f||"text/xml"==f||"application/xml"==f||"image/png"==f||/\.svg$/.test(e.name)||/\.html$/.test(e.name)||/\.xml$/.test(e.name)||/\.png$/.test(e.name)||/\.drawio$/.test(e.name)||/\.drawiolib$/.test(e.name))&&c.push(e)}p(c)}},function(b){if(y){clearTimeout(t);var c=null;try{c=JSON.parse(b.responseText).error.message}catch(ca){}f(mxResources.get("errorFetchingFolder",null,"Error fetching folder items")+(null!=c?" ("+c+")":""));Q=!1;F.stop()}})}}function C(b){O.className=O.className.replace("odCatSelected",
"");O=b;O.className+=" odCatSelected"}function H(b){Q||(ea=null,y("search",null,null,null,b))}var D="";null==e&&(e=z,D='<div style="text-align: center;" class="odPreview"></div>');null==g&&(g=function(){var b=null;try{b=JSON.parse(localStorage.getItem("mxODPickerRecentList"))}catch(aa){}return b});null==k&&(k=function(b){if(null!=b){var c=g()||{};delete b["@microsoft.graph.downloadUrl"];c[b.id]=b;localStorage.setItem("mxODPickerRecentList",JSON.stringify(c))}});var D='<div class="odCatsList"><div class="odCatsListLbl">OneDrive</div><div id="odFiles" class="odCatListTitle odCatSelected">'+
mxUtils.htmlEntities(mxResources.get("files"))+'</div><div id="odRecent" class="odCatListTitle">'+mxUtils.htmlEntities(mxResources.get("recent"))+'</div><div id="odShared" class="odCatListTitle">'+mxUtils.htmlEntities(mxResources.get("shared"))+'</div><div id="odSharepoint" class="odCatListTitle">'+mxUtils.htmlEntities(mxResources.get("sharepoint"))+'</div></div><div class="odFilesSec"><div class="searchBar" style="display:none"><input type="search" id="odSearchBox" placeholder="'+mxUtils.htmlEntities(mxResources.get("search"))+
'"></div><div class="odFilesBreadcrumb"></div><div id="refreshOD" class="odRefreshButton"><img src="/images/update32.png" width="16" height="16" title="'+mxUtils.htmlEntities(mxResources.get("refresh"))+'Refresh" border="0"/></div><div class="odFilesList"></div></div>'+D+(m?'<div id="odBackBtn" class="odLinkBtn">&lt; '+mxUtils.htmlEntities(mxResources.get("back"))+"</div>":"")+(p?'<button id="odSubmitBtn" class="odSubmitBtn">'+mxUtils.htmlEntities(mxResources.get(l?"save":"open"))+"</button>":""),
@@ -11743,7 +11748,7 @@ this.defaultFilename;b=new LocalFile(this,b,c,!0);null!=window.location.hash&&"#
this.dialog)if("1"==urlParams.demo)d=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,!0),Editor.useLocalStorage=d;else{d=!1;try{d=null!=window.opener&&null!=window.opener.openFile}catch(l){}d?this.spinner.spin(document.body,mxResources.get("loading")):(d=this.getDiagramId(),!EditorUi.enableDrafts||null!=urlParams.mode||"draw.io"!=this.getServiceName()||null!=d&&0!=d.length||this.editor.isChromelessView()?null!=d&&0<d.length?this.loadFile(d,null,null,mxUtils.bind(this,
function(){var b=decodeURIComponent(urlParams.viewbox||"");if(""!=b)try{var c=JSON.parse(b);this.editor.graph.fitWindow(c,c.border)}catch(p){console.error(p)}})):"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0):this.checkDrafts())}}),d=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=d&&0<d.length&&this.spinner.spin(document.body,mxResources.get("loading"))){var c=
mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create","title"]))}),g=mxUtils.bind(this,function(b){this.spinner.stop();if("0"!=urlParams.splash){this.fileLoaded(new LocalFile(this,b,null));this.editor.graph.setEnabled(!1);this.mode=urlParams.mode;var c=urlParams.title,c=null!=c?decodeURIComponent(c):this.defaultFilename;b=this.getServiceCount(!0);isLocalStorage&&b++;var d=4>=b?2:6<b?4:3,c=new CreateDialog(this,
-c,mxUtils.bind(this,function(b,c){if(null==c){this.hideDialog();var d=Editor.useLocalStorage;this.createFile(0<b.length?b:this.defaultFilename,this.getFileData(),null,null,null,!0,null,!0);Editor.useLocalStorage=d}else this.pickFolder(c,mxUtils.bind(this,function(d){this.createFile(b,this.getFileData(!0),null,c,null,!0,d)}))}),null,null,null,null,"1"==urlParams.browser,null,null,!0,d,null,null,null,this.editor.fileExtensions);this.showDialog(c.container,420,b>d?390:270,!0,!1,mxUtils.bind(this,function(b){b&&
+c,mxUtils.bind(this,function(b,c){if(null==c){this.hideDialog();var d=Editor.useLocalStorage;this.createFile(0<b.length?b:this.defaultFilename,this.getFileData(),null,null,null,!0,null,!0);Editor.useLocalStorage=d}else this.pickFolder(c,mxUtils.bind(this,function(d){this.createFile(b,this.getFileData(!0),null,c,null,!0,d)}))}),null,null,null,null,"1"==urlParams.browser,null,null,!0,d,null,null,null,this.editor.fileExtensions);this.showDialog(c.container,420,b>d?390:280,!0,!1,mxUtils.bind(this,function(b){b&&
null==this.getCurrentFile()&&this.showSplash()}));c.init()}}),d=decodeURIComponent(d);if("http://"!=d.substring(0,7)&&"https://"!=d.substring(0,8))try{null!=window.opener&&null!=window.opener[d]?g(window.opener[d]):this.handleError(null,mxResources.get("errorLoadingFile"))}catch(k){this.handleError(k,mxResources.get("errorLoadingFile"))}else this.loadTemplate(d,function(b){g(b)},mxUtils.bind(this,function(){this.handleError(null,mxResources.get("errorLoadingFile"),c)}))}else(null==window.location.hash||
1>=window.location.hash.length)&&null!=urlParams.state&&null!=this.stateArg&&"open"==this.stateArg.action?null!=this.stateArg.ids&&(window.history&&window.history.replaceState&&window.history.replaceState(null,null,window.location.pathname+this.getSearch(["state"])),window.location.hash="G"+this.stateArg.ids[0]):(null==window.location.hash||1>=window.location.hash.length)&&null!=this.drive&&null!=this.stateArg&&"create"==this.stateArg.action?(window.history&&window.history.replaceState&&window.history.replaceState(null,
null,window.location.pathname+this.getSearch(["state"])),this.setMode(App.MODE_GOOGLE),"0"==urlParams.splash?this.createFile(null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename):this.actions.get("new").funct()):(null!=urlParams.open&&window.history&&window.history.replaceState&&(window.history.replaceState(null,null,window.location.pathname+this.getSearch(["open"])),window.location.hash=urlParams.open),e())}}catch(k){this.handleError(k)}};
@@ -11781,7 +11786,7 @@ App.prototype.saveFile=function(b,e){var d=this.getCurrentFile();if(null!=d){var
function(b,e){d.invalidFileHandle=null;d.fileHandle=b;d.title=e.name;d.desc=e;this.save(e.name,c)}),null,this.createFileSystemOptions(d.getTitle()));else{var g=null!=d.getTitle()?d.getTitle():this.defaultFilename,k=!mxClient.IS_IOS||!navigator.standalone,n=this.mode,f=this.getServiceCount(!0);isLocalStorage&&f++;var l=4>=f?2:6<f?4:3,g=new CreateDialog(this,g,mxUtils.bind(this,function(b,e,f){null!=b&&0<b.length&&(/(\.pdf)$/i.test(b)?this.confirm(mxResources.get("didYouMeanToExportToPdf"),mxUtils.bind(this,
function(){this.hideDialog();this.actions.get("exportPdf").funct()}),mxUtils.bind(this,function(){f.value=b.split(".").slice(0,-1).join(".");f.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?f.select():document.execCommand("selectAll",!1,null)}),mxResources.get("yes"),mxResources.get("no")):(this.hideDialog(),null==n&&e==App.MODE_DEVICE?null!=d&&EditorUi.nativeFileSupport?this.showSaveFilePicker(mxUtils.bind(this,function(b,e){d.fileHandle=b;d.mode=App.MODE_DEVICE;d.title=e.name;
d.desc=e;this.setMode(App.MODE_DEVICE);this.save(e.name,c)}),mxUtils.bind(this,function(b){"AbortError"!=b.name&&this.handleError(b)}),this.createFileSystemOptions(b)):(this.setMode(App.MODE_DEVICE),this.save(b,c)):"download"==e?(new LocalFile(this,null,b)).save():"_blank"==e?(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(this.getFileData(!0)),this.openLink(this.getUrl(window.location.pathname),null,!0)):n!=e?this.pickFolder(e,mxUtils.bind(this,function(d){this.createFile(b,
-this.getFileData(/(\.xml)$/i.test(b)||0>b.indexOf(".")||/(\.drawio)$/i.test(b),/(\.svg)$/i.test(b),/(\.html)$/i.test(b)),null,e,c,null==this.mode,d)})):null!=e&&this.save(b,c)))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,k,null,!0,l,null,null,null,this.editor.fileExtensions,!1);this.showDialog(g.container,420,f>l?390:270,!0,!0);g.init()}else this.save(d.getTitle(),c)}};
+this.getFileData(/(\.xml)$/i.test(b)||0>b.indexOf(".")||/(\.drawio)$/i.test(b),/(\.svg)$/i.test(b),/(\.html)$/i.test(b)),null,e,c,null==this.mode,d)})):null!=e&&this.save(b,c)))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,k,null,!0,l,null,null,null,this.editor.fileExtensions,!1);this.showDialog(g.container,420,f>l?390:280,!0,!0);g.init()}else this.save(d.getTitle(),c)}};
App.prototype.loadTemplate=function(b,e,d,c,g){var k=!1,n=b;this.editor.isCorsEnabledForUrl(n)||(n="t="+(new Date).getTime(),n=PROXY_URL+"?url="+encodeURIComponent(b)+"&base64=1&"+n,k=!0);var f=null!=c?c:b;this.editor.loadUrl(n,mxUtils.bind(this,function(c){try{var l=k?!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(c):atob(c):c,n=/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f);if(n||this.isVisioData(l))n||(f=g?this.isRemoteVisioData(l)?"raw.vss":"raw.vssx":this.isRemoteVisioData(l)?
"raw.vsd":"raw.vsdx"),this.importVisio(this.base64ToBlob(c.substring(c.indexOf(",")+1)),function(b){e(b)},d,f);else if(!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(l,f))this.parseFileData(l,mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&e(b.responseText)}),b);else if(this.isLucidChartData(l))this.convertLucidChart(l,mxUtils.bind(this,function(b){e(b)}),mxUtils.bind(this,function(b){d(b)}));else{if(/(\.png)($|\?)/i.test(f)||
Editor.isPngData(l))l=Editor.extractGraphModelFromPng(c);e(l)}}catch(q){d(q)}}),d,/(\.png)($|\?)/i.test(f)||/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f),null,null,k)};App.prototype.getPeerForMode=function(b){return b==App.MODE_GOOGLE?this.drive:b==App.MODE_GITHUB?this.gitHub:b==App.MODE_GITLAB?this.gitLab:b==App.MODE_DROPBOX?this.dropbox:b==App.MODE_ONEDRIVE?this.oneDrive:b==App.MODE_TRELLO?this.trello:b==App.MODE_NOTION?this.notion:null};
@@ -11928,116 +11933,115 @@ function(){c.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.setVi
"Window";if(null==this[k]){var l=e?"min"==uiTheme?330:300:240;this[k]=new FindWindow(c,document.body.offsetWidth-(l+20),100,l,e?"min"==uiTheme?304:288:170,e);this[k].window.addListener("show",function(){c.fireEvent(new mxEventObject(f))});this[k].window.addListener("hide",function(){c.fireEvent(new mxEventObject(f))});this[k].window.setVisible(!0)}else this[k].window.setVisible(!this[k].window.isVisible())}),null,null,Editor.ctrlKey+"+F");p.setToggleAction(!0);p.setSelectedCallback(mxUtils.bind(this,
function(){var b=g.isEnabled()?"findReplaceWindow":"findWindow";return null!=this[b]&&this[b].window.isVisible()}));c.actions.put("exportVsdx",new Action(mxResources.get("formatVsdx")+" (beta)...",function(){var b=null==c.pages||1>=c.pages.length;if(b)c.exportVisio();else{var d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("formatVsdx"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(e);
var f=c.addCheckbox(d,mxResources.get("allPages"),!b,b);f.style.marginBottom="16px";b=new CustomDialog(c,d,mxUtils.bind(this,function(){c.exportVisio(!f.checked)}),null,mxResources.get("export"));c.showDialog(b.container,300,130,!0,!0)}}));isLocalStorage&&null!=localStorage&&"1"!=urlParams.embed&&c.actions.addAction("configuration...",function(){var b=document.createElement("input");b.setAttribute("type","checkbox");b.style.marginRight="4px";b.checked=mxSettings.getShowStartScreen();b.defaultChecked=
-b.checked;if(c.isSettingsEnabled()&&"1"==urlParams.sketch){var d=document.createElement("span");d.style["float"]="right";d.style.cursor="pointer";d.style.userSelect="none";d.appendChild(b);mxUtils.write(d,mxResources.get("showStartScreen"));mxEvent.addListener(d,"click",function(c){mxEvent.getSource(c)!=b&&(b.checked=!b.checked)});header=d}var e=localStorage.getItem(Editor.configurationKey),d=[[mxResources.get("reset"),function(b,d){c.confirm(mxResources.get("areYouSure"),function(){try{mxEvent.isShiftDown(b)?
-(localStorage.removeItem(Editor.settingsKey),localStorage.removeItem(".drawio-config")):(localStorage.removeItem(Editor.configurationKey),c.hideDialog(),c.alert(mxResources.get("restartForChangeRequired")))}catch(K){c.handleError(K)}})},"Shift+Click to Reset Settings"]],f=c.actions.get("plugins");null!=f&&d.push([mxResources.get("plugins"),f.funct]);EditorUi.isElectronApp||d.push([mxResources.get("share"),function(b,d){if(0<d.value.length)try{var e=JSON.parse(d.value),f=window.location.protocol+"//"+
-window.location.host+"/"+c.getSearch()+"#_CONFIG_"+Graph.compress(JSON.stringify(e)),g=new EmbedDialog(c,f);c.showDialog(g.container,450,240,!0);g.init()}catch(G){c.handleError(G)}else c.handleError({message:mxResources.get("invalidInput")})}]);d=new TextareaDialog(c,mxResources.get("configuration")+":",null!=e?JSON.stringify(JSON.parse(e),null,2):"",function(d){if(null!=d)try{null!=b.parentNode&&(mxSettings.setShowStartScreen(b.checked),mxSettings.save());if(d==e){if(0<d.length){var f=JSON.parse(d);
-localStorage.setItem(Editor.configurationKey,JSON.stringify(f))}else localStorage.removeItem(Editor.configurationKey);c.alert(mxResources.get("restartForChangeRequired"))}c.hideDialog()}catch(K){c.handleError(K)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/configure-diagram-editor",d,b.parentNode);d.textarea.style.width="600px";d.textarea.style.height="380px";c.showDialog(d.container,620,460,!0,!1);d.init()});if(mxClient.IS_CHROMEAPP||isLocalStorage){this.put("language",
-new Menu(mxUtils.bind(this,function(b,d){var e=mxUtils.bind(this,function(e){var f=""==e?mxResources.get("automatic"):mxLanguageMap[e],g=null;""!=f&&(g=b.addItem(f,null,mxUtils.bind(this,function(){mxSettings.setLanguage(e);mxSettings.save();mxClient.language=e;mxResources.loadDefaultBundle=!1;mxResources.add(RESOURCE_BASE);c.alert(mxResources.get("restartForChangeRequired"))}),d),(e==mxLanguage||""==e&&null==mxLanguage)&&b.addCheckmark(g,Editor.checkmarkImage));return g});e("");b.addSeparator(d);
-for(var f in mxLanguageMap)e(f)})));var v=Menus.prototype.createMenubar;Menus.prototype.createMenubar=function(b){var c=v.apply(this,arguments);if(null!=c&&"1"!=urlParams.noLangIcon){var d=this.get("language");if(null!=d){d=c.addMenu("",d.funct);d.setAttribute("title",mxResources.get("language"));d.style.width="16px";d.style.paddingTop="2px";d.style.paddingLeft="4px";d.style.zIndex="1";d.style.position="absolute";d.style.display="block";d.style.cursor="pointer";d.style.right="17px";"atlas"==uiTheme?
-(d.style.top="6px",d.style.right="15px"):d.style.top="min"==uiTheme?"2px":"0px";var e=document.createElement("div");e.style.backgroundImage="url("+Editor.globeImage+")";e.style.backgroundPosition="center center";e.style.backgroundRepeat="no-repeat";e.style.backgroundSize="19px 19px";e.style.position="absolute";e.style.height="19px";e.style.width="19px";e.style.marginTop="2px";e.style.zIndex="1";d.appendChild(e);mxUtils.setOpacity(d,40);"1"==urlParams.winCtrls&&(d.style.right="95px",d.style.width=
-"19px",d.style.height="19px",d.style.webkitAppRegion="no-drag",e.style.webkitAppRegion="no-drag");if("atlas"==uiTheme||"dark"==uiTheme)d.style.opacity="0.85",d.style.filter="invert(100%)";document.body.appendChild(d);c.langIcon=d}}return c}}c.customLayoutConfig=[{layout:"mxHierarchicalLayout",config:{orientation:"west",intraCellSpacing:30,interRankCellSpacing:100,interHierarchySpacing:60,parallelEdgeSpacing:10}}];c.actions.addAction("runLayout",function(){var b=new TextareaDialog(c,"Run Layouts:",
-JSON.stringify(c.customLayoutConfig,null,2),function(b){if(0<b.length)try{var d=JSON.parse(b);c.executeLayoutList(d);c.customLayoutConfig=d}catch(D){c.handleError(D),null!=window.console&&console.error(D)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/apply-layouts");b.textarea.style.width="600px";b.textarea.style.height="380px";c.showDialog(b.container,620,460,!0,!0);b.init()});var p=this.get("layout"),u=p.funct;p.funct=function(b,d){u.apply(this,arguments);b.addItem(mxResources.get("orgChart"),
-null,function(){function b(){"undefined"!==typeof mxOrgChartLayout||c.loadingOrgChart||c.isOffline(!0)?k():c.spinner.spin(document.body,mxResources.get("loading"))&&(c.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",k)})})}):mxscript("js/extensions.min.js",k))}var d=null,e=20,f=20,g=!0,k=function(){c.loadingOrgChart=
-!1;c.spinner.stop();if("undefined"!==typeof mxOrgChartLayout&&null!=d&&g){var b=c.editor.graph,k=new mxOrgChartLayout(b,d,e,f),l=b.getDefaultParent();1<b.model.getChildCount(b.getSelectionCell())&&(l=b.getSelectionCell());k.execute(l);g=!1}},l=document.createElement("div"),m=document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";mxUtils.write(m,mxResources.get("orgChartType")+": ");l.appendChild(m);var n=document.createElement("select");n.style.width=
-"200px";n.style.boxSizing="border-box";for(var m=[mxResources.get("linear"),mxResources.get("hanger2"),mxResources.get("hanger4"),mxResources.get("fishbone1"),mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")],p=0;p<m.length;p++){var q=document.createElement("option");mxUtils.write(q,m[p]);q.value=p;2==p&&q.setAttribute("selected","selected");n.appendChild(q)}mxEvent.addListener(n,"change",function(){d=n.value});l.appendChild(n);m=
-document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";mxUtils.write(m,mxResources.get("parentChildSpacing")+": ");l.appendChild(m);var t=document.createElement("input");t.type="number";t.value=e;t.style.width="200px";t.style.boxSizing="border-box";l.appendChild(t);mxEvent.addListener(t,"change",function(){e=t.value});m=document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";mxUtils.write(m,mxResources.get("siblingSpacing")+
-": ");l.appendChild(m);var y=document.createElement("input");y.type="number";y.value=f;y.style.width="200px";y.style.boxSizing="border-box";l.appendChild(y);mxEvent.addListener(y,"change",function(){f=y.value});l=new CustomDialog(c,l,function(){null==d&&(d=2);b()});c.showDialog(l.container,355,140,!0,!0)},d,null,k());b.addSeparator(d);b.addItem(mxResources.get("parallels"),null,mxUtils.bind(this,function(){var b=new mxParallelEdgeLayout(g);b.checkOverlap=!0;b.spacing=20;c.executeLayout(function(){b.execute(g.getDefaultParent(),
-g.isSelectionEmpty()?null:g.getSelectionCells())},!1)}),d);b.addSeparator(d);c.menus.addMenuItem(b,"runLayout",d,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(b,d){if(!mxClient.IS_CHROMEAPP&&c.isOffline())this.addMenuItems(b,["about"],d);else{var e=b.addItem("Search:",null,null,d,null,null,!1);e.style.backgroundColor=Editor.isDarkMode()?"#505759":"whiteSmoke";e.style.cursor="default";var f=document.createElement("input");f.setAttribute("type","text");
-f.setAttribute("size","25");f.style.marginLeft="8px";mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(b){var c=mxUtils.trim(f.value);13==b.keyCode&&0<c.length?(this.editorUi.openLink("https://www.diagrams.net/search?src="+(EditorUi.isElectronApp?"DESKTOP":encodeURIComponent(location.host))+"&search="+encodeURIComponent(c)),f.value="",EditorUi.logEvent({category:"SEARCH-HELP",action:"search",label:c}),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0)):27==
-b.keyCode&&(f.value="")}));e.firstChild.nextSibling.appendChild(f);mxEvent.addGestureListeners(f,function(b){document.activeElement!=f&&f.focus();mxEvent.consume(b)},function(b){mxEvent.consume(b)},function(b){mxEvent.consume(b)});window.setTimeout(function(){f.focus()},0);EditorUi.isElectronApp?(c.actions.addAction("website...",function(){c.openLink("https://www.diagrams.net")}),c.actions.addAction("check4Updates",function(){c.checkForUpdates()}),this.addMenuItems(b,"- keyboardShortcuts quickStart website support -".split(" "),
-d),"1"!=urlParams.disableUpdate&&this.addMenuItems(b,["check4Updates","-"],d),this.addMenuItems(b,["forkme","-","about"],d)):this.addMenuItems(b,"- keyboardShortcuts quickStart support - forkme downloadDesktop - about".split(" "),d)}"1"==urlParams.test&&(b.addSeparator(d),this.addSubmenu("testDevelop",b,d))})));mxResources.parse("diagramLanguage=Diagram Language");c.actions.addAction("diagramLanguage...",function(){var b=prompt("Language Code",Graph.diagramLanguage||"");null!=b&&(Graph.diagramLanguage=
-0<b.length?b:null,g.refresh())});if("1"==urlParams.test){mxResources.parse("testDevelop=Develop");mxResources.parse("showBoundingBox=Show bounding box");mxResources.parse("createSidebarEntry=Create Sidebar Entry");mxResources.parse("testCheckFile=Check File");mxResources.parse("testDiff=Diff/Sync");mxResources.parse("testInspect=Inspect");mxResources.parse("testShowConsole=Show Console");mxResources.parse("testXmlImageExport=XML Image Export");mxResources.parse("testDownloadRtModel=Export RT model");
-mxResources.parse("testImportRtModel=Import RT model");c.actions.addAction("createSidebarEntry",mxUtils.bind(this,function(){if(!g.isSelectionEmpty()){var b=g.cloneCells(g.getSelectionCells()),d=g.getBoundingBoxFromGeometry(b),b=g.moveCells(b,-d.x,-d.y);c.showTextDialog("Create Sidebar Entry","this.addDataEntry('tag1 tag2', "+d.width+", "+d.height+", 'The Title', '"+Graph.compress(mxUtils.getXml(g.encodeCells(b)))+"'),")}}));c.actions.addAction("showBoundingBox",mxUtils.bind(this,function(){var b=
-g.getGraphBounds(),c=g.view.translate,d=g.view.scale;g.insertVertex(g.getDefaultParent(),null,"",b.x/d-c.x,b.y/d-c.y,b.width/d,b.height/d,"fillColor=none;strokeColor=red;")}));c.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var b=null!=c.pages&&null!=c.getCurrentFile()?c.getCurrentFile().getAnonymizedXmlForPages(c.pages):"",b=new TextareaDialog(c,"Paste Data:",b,function(b){if(0<b.length)try{var d=function(b){function c(b){if(null==p[b]){if(p[b]=!0,null!=f[b]){for(;0<f[b].length;){var e=
-f[b].pop();c(e)}delete f[b]}}else mxLog.debug(d+": Visited: "+b)}var d=b.parentNode.id,e=b.childNodes;b={};for(var f={},g=null,k={},l=0;l<e.length;l++){var m=e[l];if(null!=m.id&&0<m.id.length)if(null==b[m.id]){b[m.id]=m.id;var n=m.getAttribute("parent");null==n?null!=g?mxLog.debug(d+": Multiple roots: "+m.id):g=m.id:(null==f[n]&&(f[n]=[]),f[n].push(m.id))}else k[m.id]=m.id}0<Object.keys(k).length?(e=d+": "+Object.keys(k).length+" Duplicates: "+Object.keys(k).join(", "),mxLog.debug(e+" (see console)")):
-mxLog.debug(d+": Checked");var p={};null==g?mxLog.debug(d+": No root"):(c(g),Object.keys(p).length!=Object.keys(b).length&&(mxLog.debug(d+": Invalid tree: (see console)"),console.log(d+": Invalid tree",f)))};"<"!=b.charAt(0)&&(b=Graph.decompress(b),mxLog.debug("See console for uncompressed XML"),console.log("xml",b));var e=mxUtils.parseXml(b),f=c.getPagesForNode(e.documentElement,"mxGraphModel");if(null!=f&&0<f.length)try{var g=c.getHashValueForPages(f);mxLog.debug("Checksum: ",g)}catch(J){mxLog.debug("Error: ",
-J.message)}else mxLog.debug("No pages found for checksum");var k=e.getElementsByTagName("root");for(b=0;b<k.length;b++)d(k[b]);mxLog.show()}catch(J){c.handleError(J),null!=window.console&&console.error(J)}});b.textarea.style.width="600px";b.textarea.style.height="380px";c.showDialog(b.container,620,460,!0,!0);b.init()}));var x=null;c.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=c.pages){var b=new TextareaDialog(c,"Diff/Sync:","",function(b){var d=c.getCurrentFile();if(0<b.length&&
-null!=d)try{var e=JSON.parse(b);d.patch([e],null,!0);c.hideDialog()}catch(E){c.handleError(E)}},null,"Close",null,null,null,!0,null,"Patch",null,[["Snapshot",function(d,e){x=c.getPagesForNode(mxUtils.parseXml(c.getFileData(!0)).documentElement);b.textarea.value="Snapshot updated "+(new Date).toLocaleString()}],["Diff",function(d,e){try{b.textarea.value=JSON.stringify(c.diffPages(x,c.pages),null,2)}catch(D){c.handleError(D)}}]]);b.textarea.style.width="600px";b.textarea.style.height="380px";null==
-x?(x=c.getPagesForNode(mxUtils.parseXml(c.getFileData(!0)).documentElement),b.textarea.value="Snapshot created "+(new Date).toLocaleString()):b.textarea.value=JSON.stringify(c.diffPages(x,c.pages),null,2);c.showDialog(b.container,620,460,!0,!0);b.init()}else c.alert("No pages")}));c.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(c,g.getModel())}));c.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var b=new mxImageExport,c=g.getGraphBounds(),d=g.view.scale,
-e=mxUtils.createXmlDocument(),f=e.createElement("output");e.appendChild(f);e=new mxXmlCanvas2D(f);e.translate(Math.floor((1-c.x)/d),Math.floor((1-c.y)/d));e.scale(1/d);var k=0,l=e.save;e.save=function(){k++;l.apply(this,arguments)};var m=e.restore;e.restore=function(){k--;m.apply(this,arguments)};var n=b.drawShape;b.drawShape=function(b){mxLog.debug("entering shape",b,k);n.apply(this,arguments);mxLog.debug("leaving shape",b,k)};b.drawState(g.getView().getState(g.model.root),e);mxLog.show();mxLog.debug(mxUtils.getXml(f));
-mxLog.debug("stateCounter",k)}));c.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-2});this.put("testDevelop",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testShowConsole".split(" "),c)})))}c.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!c.isOffline()?c.showDialog((new MoreShapesDialog(c,
-!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):c.showDialog((new MoreShapesDialog(c,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});c.actions.put("createShape",new Action(mxResources.get("shape")+"...",function(b){g.isEnabled()&&(b=new mxCell("",new mxGeometry(0,0,120,120),c.defaultCustomShapeStyle),b.vertex=!0,b=new EditShapeDialog(c,b,mxResources.get("editShape")+":",630,400),c.showDialog(b.container,640,480,!0,!1),b.init())})).isEnabled=k;c.actions.put("embedHtml",
-new Action(mxResources.get("html")+"...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(b){c.spinner.stop();c.showHtmlDialog(mxResources.get("create"),"https://www.diagrams.net/doc/faq/embed-html-options",b,function(b,d,e,f,g,k,l,m,n,p,q){c.createHtml(b,d,e,f,g,k,l,m,n,p,q,mxUtils.bind(this,function(b,d){var e=new EmbedDialog(c,b+"\n"+d,null,null,function(){var e=window.open(),f=e.document;if(null!=f){"CSS1Compat"===document.compatMode&&
-f.writeln("<!DOCTYPE html>");f.writeln("<html>");f.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');f.writeln("<body>");f.writeln(b);var g=mxClient.IS_IE||mxClient.IS_EDGE||null!=document.documentMode;g&&f.writeln(d);f.writeln("</body>");f.writeln("</html>");f.close();if(!g){var k=e.document.createElement("div");k.marginLeft="26px";k.marginTop="26px";mxUtils.write(k,mxResources.get("updatingDocument"));g=e.document.createElement("img");
-g.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");g.style.marginLeft="6px";k.appendChild(g);e.document.body.insertBefore(k,e.document.body.firstChild);window.setTimeout(function(){var b=document.createElement("script");b.type="text/javascript";b.src=/<script.*?src="(.*?)"/.exec(d)[1];f.body.appendChild(b);k.parentNode.removeChild(k)},20)}}else c.handleError({message:mxResources.get("errorUpdatingPreview")})});c.showDialog(e.container,450,240,!0,
-!0);e.init()}))})})}));c.actions.put("liveImage",new Action("Live image...",function(){var b=c.getCurrentFile();null!=b&&c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(d){c.spinner.stop();null!=d?(d=new EmbedDialog(c,'<img src="'+(b.constructor!=DriveFile?d:"https://drive.google.com/uc?id="+b.getId())+'"/>'),c.showDialog(d.container,450,240,!0,!0),d.init()):c.handleError({message:mxResources.get("invalidPublicUrl")})})}));c.actions.put("embedImage",
-new Action(mxResources.get("image")+"...",function(){c.showEmbedImageDialog(function(b,d,e,f,g,k){c.spinner.spin(document.body,mxResources.get("loading"))&&c.createEmbedImage(b,d,e,f,g,k,function(b){c.spinner.stop();b=new EmbedDialog(c,b);c.showDialog(b.container,450,240,!0,!0);b.init()},function(b){c.spinner.stop();c.handleError(b)})},mxResources.get("image"),mxResources.get("retina"),c.isExportToCanvas())}));c.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+"...",function(){c.showEmbedImageDialog(function(b,
-d,e,f,g,k){c.spinner.spin(document.body,mxResources.get("loading"))&&c.createEmbedSvg(b,d,e,f,g,k,function(b){c.spinner.stop();b=new EmbedDialog(c,b);c.showDialog(b.container,450,240,!0,!0);b.init()},function(b){c.spinner.stop();c.handleError(b)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://www.diagrams.net/doc/faq/embed-svg.html")}));c.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var b=g.getGraphBounds();c.showPublishLinkDialog(mxResources.get("iframe"),
-null,"100%",Math.ceil(b.height/g.view.scale)+2,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(p){c.spinner.stop();var q=[];n&&q.push("tags=%7B%7D");p=new EmbedDialog(c,'<iframe frameborder="0" style="width:'+l+";height:"+m+';" src="'+c.createLink(b,d,e,f,g,k,p,null,q)+'"></iframe>');c.showDialog(p.container,450,240,!0,!0);p.init()})},!0)}));c.actions.put("embedNotion",new Action(mxResources.get("notion")+"...",function(){var b=
-document.createElement("div");b.style.position="absolute";b.style.bottom="30px";b.style.textAlign="center";b.style.width="100%";b.style.left="0px";var d=document.createElement("a");d.setAttribute("href","javascript:void(0);");d.setAttribute("target","_blank");d.style.cursor="pointer";mxUtils.write(d,mxResources.get("getNotionChromeExtension"));b.appendChild(d);mxEvent.addListener(d,"click",function(b){c.openLink("https://chrome.google.com/webstore/detail/drawio-for-notion/plhaalebpkihaccllnkdaokdoeaokmle");
-mxEvent.consume(b)});c.showPublishLinkDialog(mxResources.get("notion"),null,null,null,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(l){c.spinner.stop();var m=["border=0"];n&&m.push("tags=%7B%7D");l=new EmbedDialog(c,c.createLink(b,d,e,f,g,k,l,null,m,!0));c.showDialog(l.container,450,240,!0,!0);l.init()})},!0,"https://www.diagrams.net/blog/drawio-notion",b)}));c.actions.put("publishLink",new Action(mxResources.get("link")+
-"...",function(){c.showPublishLinkDialog(null,null,null,null,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(l){c.spinner.stop();var m=[];n&&m.push("tags=%7B%7D");l=new EmbedDialog(c,c.createLink(b,d,e,f,g,k,l,null,m));c.showDialog(l.container,450,240,!0,!0);l.init()})})}));c.actions.addAction("microsoftOffice...",function(){c.openLink("https://office.draw.io")});c.actions.addAction("googleDocs...",function(){c.openLink("http://docsaddon.draw.io")});
-c.actions.addAction("googleSlides...",function(){c.openLink("https://slidesaddon.draw.io")});c.actions.addAction("googleSheets...",function(){c.openLink("https://sheetsaddon.draw.io")});c.actions.addAction("googleSites...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(b){c.spinner.stop();b=new GoogleSitesDialog(c,b);c.showDialog(b.container,420,256,!0,!0);b.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)p=c.actions.addAction("scratchpad",
-function(){c.toggleScratchpad()}),p.setToggleAction(!0),p.setSelectedCallback(function(){return null!=c.scratchpad}),"0"!=urlParams.plugins&&c.actions.addAction("plugins...",function(){c.showDialog((new PluginsDialog(c)).container,380,240,!0,!1)});p=c.actions.addAction("search",function(){var b=c.sidebar.isEntryVisible("search");c.sidebar.showPalette("search",!b);isLocalStorage&&(mxSettings.settings.search=!b,mxSettings.save())});p.label=mxResources.get("searchShapes");p.setToggleAction(!0);p.setSelectedCallback(function(){return c.sidebar.isEntryVisible("search")});
-"1"==urlParams.embed&&(c.actions.get("save").funct=function(b){g.isEditing()&&g.stopEditing();var d="0"!=urlParams.pages||null!=c.pages&&1<c.pages.length?c.getFileData(!0):mxUtils.getXml(c.editor.getGraphXml());if("json"==urlParams.proto){var e=c.createLoadMessage("save");e.xml=d;b&&(e.exit=!0);d=JSON.stringify(e)}(window.opener||window.parent).postMessage(d,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(c.editor.modified=!1,c.editor.setStatus(""));b=c.getCurrentFile();null==b||b.constructor==
-EmbedFile||b.constructor==LocalFile&&null==b.mode||c.saveFile()},c.actions.addAction("saveAndExit",function(){c.actions.get("save").funct(!0)}).label="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit"),c.actions.addAction("exit",function(){if("1"==urlParams.embedInline)c.sendEmbeddedSvgExport();else{var b=function(){c.editor.modified=!1;var b="json"==urlParams.proto?JSON.stringify({event:"exit",modified:c.editor.modified}):"";(window.opener||window.parent).postMessage(b,
-"*")};c.editor.modified?c.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}}));this.put("exportAs",new Menu(mxUtils.bind(this,function(b,d){c.isExportToCanvas()?(this.addMenuItems(b,["exportPng"],d),c.jpgSupported&&this.addMenuItems(b,["exportJpg"],d)):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPng","exportJpg"],d);this.addMenuItems(b,["exportSvg","-"],d);c.isOffline()||c.printPdfExport?this.addMenuItems(b,
-["exportPdf"],d):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPdf"],d);mxClient.IS_IE||"undefined"===typeof VsdxExport&&c.isOffline()||this.addMenuItems(b,["exportVsdx"],d);this.addMenuItems(b,["-","exportHtml","exportXml","exportUrl"],d);c.isOffline()||(b.addSeparator(d),this.addMenuItem(b,"export",d).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom",new Menu(mxUtils.bind(this,function(b,d){function e(b){b.pickFile(function(d){c.spinner.spin(document.body,
-mxResources.get("loading"))&&b.getFile(d,function(b){var d="data:image/"==b.getData().substring(0,11)?p(b.getTitle()):"text/xml";/\.svg$/i.test(b.getTitle())&&!c.editor.isDataSvg(b.getData())&&(b.setData(Editor.createSvgDataUri(b.getData())),d="image/svg+xml");k(b.getData(),d,b.getTitle())},function(b){c.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null)},b==c.drive)},!0)}var k=mxUtils.bind(this,function(b,d,e){var f=g.view,k=g.getGraphBounds(),l=g.snap(Math.ceil(Math.max(0,k.x/f.scale-
-f.translate.x)+4*g.gridSize)),m=g.snap(Math.ceil(Math.max(0,(k.y+k.height)/f.scale-f.translate.y)+4*g.gridSize));"data:image/"==b.substring(0,11)?c.loadImage(b,mxUtils.bind(this,function(f){var k=!0,n=mxUtils.bind(this,function(){c.resizeImage(f,b,mxUtils.bind(this,function(f,n,p){f=k?Math.min(1,Math.min(c.maxImageSize/n,c.maxImageSize/p)):1;c.importFile(b,d,l,m,Math.round(n*f),Math.round(p*f),e,function(b){c.spinner.stop();g.setSelectionCells(b);g.scrollCellToVisible(g.getSelectionCell())})}),k)});
-b.length>c.resampleThreshold?c.confirmImageResize(function(b){k=b;n()}):n()}),mxUtils.bind(this,function(){c.handleError({message:mxResources.get("cannotOpenFile")})})):c.importFile(b,d,l,m,0,0,e,function(b){c.spinner.stop();g.setSelectionCells(b);g.scrollCellToVisible(g.getSelectionCell())})}),p=mxUtils.bind(this,function(b){var c="text/xml";/\.png$/i.test(b)?c="image/png":/\.jpe?g$/i.test(b)?c="image/jpg":/\.gif$/i.test(b)?c="image/gif":/\.pdf$/i.test(b)&&(c="application/pdf");return c});"undefined"!=
-typeof google&&"undefined"!=typeof google.picker&&(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){e(c.drive)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){e(c.oneDrive)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+
-"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){e(c.dropbox)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){e(c.gitHub)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){e(c.gitLab)},d);null!=c.notion&&(b.addSeparator(d),
-b.addItem(mxResources.get("notion")+"...",null,function(){e(c.notion)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){e(c.trello)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.importLocalFile(!1)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+
-"...",null,function(){c.importLocalFile(!0)},d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(c,"",mxResources.get("import"),function(b){if(null!=b&&0<b.length&&c.spinner.spin(document.body,mxResources.get("loading"))){var d=/(\.png)($|\?)/i.test(b)?"image/png":"text/xml";c.editor.loadUrl(PROXY_URL+"?url="+encodeURIComponent(b),function(c){k(c,d,b)},function(){c.spinner.stop();c.handleError(null,mxResources.get("errorLoadingFile"))},
-"image/png"==d)}},mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d))}))).isEnabled=k;this.put("theme",new Menu(mxUtils.bind(this,function(b,d){var e="1"==urlParams.sketch?"sketch":mxSettings.getUi(),f=b.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");c.alert(mxResources.get("restartForChangeRequired"))},d);"kennedy"!=e&&"atlas"!=e&&"dark"!=e&&"min"!=e&&"sketch"!=e&&b.addCheckmark(f,Editor.checkmarkImage);b.addSeparator(d);f=b.addItem(mxResources.get("default"),
-null,function(){mxSettings.setUi("kennedy");c.alert(mxResources.get("restartForChangeRequired"))},d);"kennedy"==e&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("minimal"),null,function(){mxSettings.setUi("min");c.alert(mxResources.get("restartForChangeRequired"))},d);"min"==e&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("atlas"),null,function(){mxSettings.setUi("atlas");c.alert(mxResources.get("restartForChangeRequired"))},d);"atlas"==e&&b.addCheckmark(f,
-Editor.checkmarkImage);if("dark"==e||!mxClient.IS_IE&&!mxClient.IS_IE11)f=b.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");c.alert(mxResources.get("restartForChangeRequired"))},d),"dark"==e&&b.addCheckmark(f,Editor.checkmarkImage);b.addSeparator(d);f=b.addItem(mxResources.get("sketch"),null,function(){mxSettings.setUi("sketch");c.alert(mxResources.get("restartForChangeRequired"))},d);"sketch"==e&&b.addCheckmark(f,Editor.checkmarkImage)})));p=this.editorUi.actions.addAction("rename...",
-mxUtils.bind(this,function(){var b=this.editorUi.getCurrentFile();if(null!=b)if(b.constructor==LocalFile&&null!=b.fileHandle)c.showSaveFilePicker(mxUtils.bind(c,function(d,e){b.invalidFileHandle=null;b.fileHandle=d;b.title=e.name;b.desc=e;c.save(e.name)}),null,c.createFileSystemOptions(b.getTitle()));else{var d=null!=b.getTitle()?b.getTitle():this.editorUi.defaultFilename,d=new FilenameDialog(this.editorUi,d,mxResources.get("rename"),mxUtils.bind(this,function(c){null!=c&&0<c.length&&null!=b&&c!=
-b.getTitle()&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&b.rename(c,mxUtils.bind(this,function(b){this.editorUi.spinner.stop()}),mxUtils.bind(this,function(b){this.editorUi.handleError(b,null!=b?mxResources.get("errorRenamingFile"):null)}))}),b.constructor==DriveFile||b.constructor==StorageFile?mxResources.get("diagramName"):null,function(b){if(null!=b&&0<b.length)return!0;c.showError(mxResources.get("error"),mxResources.get("invalidName"),mxResources.get("ok"));return!1},
-null,null,null,null,c.editor.fileExtensions);this.editorUi.showDialog(d.container,340,96,!0,!0);d.init()}}));p.isEnabled=function(){return this.enabled&&k.apply(this,arguments)};p.visible="1"!=urlParams.embed;c.actions.addAction("makeCopy...",mxUtils.bind(this,function(){var b=c.getCurrentFile();if(null!=b){var d=c.getCopyFilename(b);b.constructor==DriveFile?(d=new CreateDialog(c,d,mxUtils.bind(this,function(d,e){"_blank"==e?c.editor.editAsNew(c.getFileData(),d):("download"==e&&(e=App.MODE_GOOGLE),
-null!=d&&0<d.length&&(e==App.MODE_GOOGLE?c.spinner.spin(document.body,mxResources.get("saving"))&&b.saveAs(d,mxUtils.bind(this,function(d){b.desc=d;b.save(!1,mxUtils.bind(this,function(){c.spinner.stop();b.setModified(!1);b.addAllSavedStatus()}),mxUtils.bind(this,function(b){c.handleError(b)}))}),mxUtils.bind(this,function(b){c.handleError(b)})):c.createFile(d,c.getFileData(!0),null,e)))}),mxUtils.bind(this,function(){c.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null,
-!0,null,!0,null,null,null,null,c.editor.fileExtensions),c.showDialog(d.container,420,380,!0,!0),d.init()):c.editor.editAsNew(this.editorUi.getFileData(!0),d)}}));c.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var b=c.getCurrentFile();if(b.getMode()==App.MODE_GOOGLE||b.getMode()==App.MODE_ONEDRIVE){var d=!1;if(b.getMode()==App.MODE_GOOGLE&&null!=b.desc.parents)for(var e=0;e<b.desc.parents.length;e++)if(b.desc.parents[e].isRoot){d=!0;break}c.pickFolder(b.getMode(),mxUtils.bind(this,
-function(d){c.spinner.spin(document.body,mxResources.get("moving"))&&b.move(d,mxUtils.bind(this,function(b){c.spinner.stop()}),mxUtils.bind(this,function(b){c.handleError(b)}))}),null,!0,d)}}));this.put("publish",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,["publishLink"],c)})));c.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){c.openLink("https://app.draw.io/")}));c.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",
-function(){c.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...",mxUtils.bind(this,function(){try{var b=c.getCurrentFile();null!=b&&b.share()}catch(C){c.handleError(C)}}));this.put("embed",new Menu(mxUtils.bind(this,function(b,d){var e=c.getCurrentFile();null==e||e.getMode()!=App.MODE_GOOGLE&&e.getMode()!=App.MODE_GITHUB||!/(\.png)$/i.test(e.getTitle())||this.addMenuItems(b,["liveImage","-"],d);this.addMenuItems(b,["embedImage","embedSvg","-","embedHtml"],d);navigator.standalone||
-c.isOffline()||this.addMenuItems(b,["embedIframe"],d);"1"==urlParams.embed||c.isOffline()||this.addMenuItems(b,"- googleDocs googleSlides googleSheets - microsoftOffice - embedNotion".split(" "),d)})));c.addInsertItem=function(b,d,e,f){("plantUml"!=f||EditorUi.enablePlantUml&&!c.isOffline())&&b.addItem(e,null,mxUtils.bind(this,function(){if("fromText"==f||"formatSql"==f||"plantUml"==f||"mermaid"==f){var b=new ParseDialog(c,e,f);c.showDialog(b.container,620,420,!0,!1);c.dialog.container.style.overflow=
-"auto"}else b=new CreateGraphDialog(c,e,f),c.showDialog(b.container,620,420,!0,!1);b.init()}),d,null,k())};var z=function(b,d,e,f){var k=new mxCell(b,new mxGeometry(0,0,d,e),f);k.vertex=!0;b=g.getCenterInsertPoint(g.getBoundingBoxFromGeometry([k],!0));k.geometry.x=b.x;k.geometry.y=b.y;g.getModel().beginUpdate();try{k=g.addCell(k),g.fireEvent(new mxEventObject("cellsInserted","cells",[k]))}finally{g.getModel().endUpdate()}g.scrollCellToVisible(k);g.setSelectionCell(k);g.container.focus();g.editAfterInsert&&
-g.startEditing(k);window.setTimeout(function(){null!=c.hoverIcons&&c.hoverIcons.update(g.view.getState(k))},0);return k};c.actions.put("insertText",new Action(mxResources.get("text"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&g.startEditingAtCell(z("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=k;c.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),
-function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&z("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=k;c.actions.put("insertEllipse",new Action(mxResources.get("ellipse"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&z("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=k;c.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&
-z("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=k;c.addInsertMenuItems=mxUtils.bind(this,function(b,d,e){for(var f=0;f<e.length;f++)"-"==e[f]?b.addSeparator(d):c.addInsertItem(b,d,mxResources.get(e[f])+"...",e[f])});this.put("insert",new Menu(mxUtils.bind(this,function(b,d){this.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - createShape insertFreehand - insertImage".split(" "),d);c.insertTemplateEnabled&&!c.isOffline()&&this.addMenuItems(b,["insertTemplate"],
-d);b.addSeparator(d);this.addSubmenu("insertLayout",b,d,mxResources.get("layout"));this.addSubmenu("insertAdvanced",b,d,mxResources.get("advanced"))})));this.put("insertLayout",new Menu(mxUtils.bind(this,function(b,d){c.addInsertMenuItems(b,d,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(b,d){c.addInsertMenuItems(b,d,["fromText","plantUml","mermaid","-","formatSql"]);b.addItem(mxResources.get("csv")+
-"...",null,function(){c.showImportCsvDialog()},d,null,k())})));this.put("openRecent",new Menu(function(b,d){var e=c.getRecent();if(null!=e){for(var f=0;f<e.length;f++)(function(e){var f=e.mode;f==App.MODE_GOOGLE?f="googleDrive":f==App.MODE_ONEDRIVE&&(f="oneDrive");b.addItem(e.title+" ("+mxResources.get(f)+")",null,function(){c.loadFile(e.id)},d)})(e[f]);b.addSeparator(d)}b.addItem(mxResources.get("reset"),null,function(){c.resetRecent()},d)}));this.put("openFrom",new Menu(function(b,d){null!=c.drive?
-b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.pickFile(App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickFile(App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,
-null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.pickFile(App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.pickFile(App.MODE_GITHUB)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickFile(App.MODE_GITLAB)},d);null!=
-c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.pickFile(App.MODE_NOTION)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.pickFile(App.MODE_TRELLO)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.pickFile(App.MODE_BROWSER)},
-d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.pickFile(App.MODE_DEVICE)},d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(c,"",mxResources.get("open"),function(b){null!=b&&0<b.length&&(null==c.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(b):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(b)))},
-mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(b,d){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,
-null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+
-" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITLAB)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_NOTION)},
-d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_TRELLO)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+
-"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},d)})),this.put("openLibraryFrom",new Menu(function(b,d){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.pickLibrary(App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+
-"...",null,function(){c.pickLibrary(App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.pickLibrary(App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&
-b.addItem(mxResources.get("github")+"...",null,function(){c.pickLibrary(App.MODE_GITHUB)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickLibrary(App.MODE_GITLAB)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.pickLibrary(App.MODE_NOTION)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.pickLibrary(App.MODE_TRELLO)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+
-" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.pickLibrary(App.MODE_BROWSER)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.pickLibrary(App.MODE_DEVICE)},d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(c,"",mxResources.get("open"),function(b){if(null!=
-b&&0<b.length&&c.spinner.spin(document.body,mxResources.get("loading"))){var d=b;c.editor.isCorsEnabledForUrl(b)||(d=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(d,function(d){if(200<=d.getStatus()&&299>=d.getStatus()){c.spinner.stop();try{c.loadLibrary(new UrlLibrary(this,d.getText(),b))}catch(K){c.handleError(K,mxResources.get("errorLoadingFile"))}}else c.spinner.stop(),c.handleError(null,mxResources.get("errorLoadingFile"))},function(){c.spinner.stop();c.handleError(null,mxResources.get("errorLoadingFile"))})}},
-mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d));"1"==urlParams.confLib&&(b.addSeparator(d),b.addItem(mxResources.get("confluenceCloud")+"...",null,function(){c.showRemotelyStoredLibrary(mxResources.get("libraries"))},d))})));this.put("edit",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"undo redo - cut copy copyAsImage paste delete - duplicate - findReplace - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));
-p=c.actions.addAction("comments",mxUtils.bind(this,function(){if(null==this.commentsWindow)this.commentsWindow=new CommentsWindow(c,document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("comments"));else{var b=!this.commentsWindow.window.isVisible();
-this.commentsWindow.window.setVisible(b);this.commentsWindow.refreshCommentsTime();b&&this.commentsWindow.hasError&&this.commentsWindow.refreshComments()}}));p.setToggleAction(!0);p.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));c.editor.addListener("fileLoaded",mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var p=this.get("viewPanels"),A=p.funct;p.funct=
-function(b,d){A.apply(this,arguments);c.menus.addMenuItems(b,["tags"],d);c.commentsSupported()&&c.menus.addMenuItems(b,["comments"],d)};this.put("view",new Menu(mxUtils.bind(this,function(b,d){this.addMenuItems(b,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers","tags"]).concat(c.commentsSupported()?["comments","-"]:["-"]));this.addMenuItems(b,["-","search"],d);if(isLocalStorage||mxClient.IS_CHROMEAPP){var e=this.addMenuItem(b,"scratchpad",d);(!c.isOffline()||mxClient.IS_CHROMEAPP||
-EditorUi.isElectronApp)&&this.addLinkToItem(e,"https://www.diagrams.net/doc/faq/scratchpad")}this.addMenuItems(b,["shapes","-","pageView","pageScale"]);this.addSubmenu("units",b,d);this.addMenuItems(b,"- scrollbars tooltips ruler - grid guides".split(" "),d);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(b,"shadowVisible",d);this.addMenuItems(b,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),d);"1"!=urlParams.sketch&&this.addMenuItems(b,
-["-","fullscreen"],d)})));if(EditorUi.isElectronApp){var B="1"==urlParams.enableSpellCheck,p=c.actions.addAction("spellCheck",function(){c.toggleSpellCheck();B=!B;c.alert(mxResources.get("restartForChangeRequired"))});p.setToggleAction(!0);p.setSelectedCallback(function(){return B})}this.put("extras",new Menu(mxUtils.bind(this,function(b,d){"1"==urlParams.noLangIcon&&(this.addSubmenu("language",b,d),b.addSeparator(d));"1"!=urlParams.embed&&(this.addSubmenu("theme",b,d),b.addSeparator(d));if("undefined"!==
-typeof MathJax){var e=this.addMenuItem(b,"mathematicalTypesetting",d);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(e,"https://www.diagrams.net/doc/faq/math-typesetting")}EditorUi.isElectronApp&&this.addMenuItems(b,["spellCheck"],d);this.addMenuItems(b,["copyConnect","collapseExpand","-"],d);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(b,["showStartScreen"],d);"1"!=urlParams.embed&&this.addMenuItems(b,["autosave"],d);b.addSeparator(d);
-!c.isOfflineApp()&&isLocalStorage&&this.addMenuItem(b,"plugins",d);this.addMenuItems(b,["-","editDiagram"],d);Graph.translateDiagram&&this.addMenuItems(b,["diagramLanguage"]);this.addMenuItems(b,["-","configuration"],d);b.addSeparator(d);"1"==urlParams.newTempDlg&&(c.actions.addAction("templates",function(){function b(b){return{id:b.id,isExt:!0,url:b.downloadUrl,title:b.title,imgUrl:b.thumbnailLink,changedBy:b.lastModifyingUserName,lastModifiedOn:b.modifiedDate}}var d=new TemplatesDialog(c,function(b){console.log(arguments)},
-null,null,null,"user",function(d,e,f){var g=new Date;g.setDate(g.getDate()-7);c.drive.listFiles(null,g,f?!0:!1,function(c){for(var e=[],f=0;f<c.items.length;f++)e.push(b(c.items[f]));d(e)},e)},function(d,e,f,g){c.drive.listFiles(d,null,g?!0:!1,function(c){for(var d=[],f=0;f<c.items.length;f++)d.push(b(c.items[f]));e(d)},f)},function(b,d,e){c.drive.getFile(b.id,function(b){d(b.data)},e)},null,function(b){b({Test:[]},1)},!0,!1);c.showDialog(d.container,window.innerWidth,window.innerHeight,!0,!1,null,
-!1,!0)}),this.addMenuItem(b,"templates",d))})));this.put("file",new Menu(mxUtils.bind(this,function(b,d){if("1"==urlParams.embed)this.addSubmenu("importFrom",b,d),this.addSubmenu("exportAs",b,d),this.addSubmenu("embed",b,d),"1"==urlParams.libraries&&(this.addMenuItems(b,["-"],d),this.addSubmenu("newLibrary",b,d),this.addSubmenu("openLibraryFrom",b,d)),c.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],d),this.addMenuItems(b,["-","pageSetup","print","-","rename"],d),"1"!=urlParams.embedInline&&
-("1"==urlParams.noSaveBtn?"0"!=urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"],d):(this.addMenuItems(b,["save"],d),"1"==urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"],d))),"1"!=urlParams.noExitBtn&&this.addMenuItems(b,["exit"],d);else{var e=this.editorUi.getCurrentFile();if(null!=e&&e.constructor==DriveFile){e.isRestricted()&&this.addMenuItems(b,["exportOptionsDisabled"],d);this.addMenuItems(b,["save","-","share"],d);var f=this.addMenuItem(b,"synchronize",d);(!c.isOffline()||
-mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(f,"https://www.diagrams.net/doc/faq/synchronize");b.addSeparator(d)}else this.addMenuItems(b,["new"],d);this.addSubmenu("openFrom",b,d);isLocalStorage&&this.addSubmenu("openRecent",b,d);null!=e&&e.constructor==DriveFile?this.addMenuItems(b,["new","-","rename","makeCopy","moveToFolder"],d):(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==e||e.constructor==LocalFile&&null==e.fileHandle||(b.addSeparator(d),f=this.addMenuItem(b,"synchronize",
-d),(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(f,"https://www.diagrams.net/doc/faq/synchronize")),this.addMenuItems(b,["-","save","saveAs","-"],d),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=c.getServiceName()||c.isOfflineApp()||null==e||this.addMenuItems(b,["share","-"],d),this.addMenuItems(b,["rename"],d),c.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(b,["upload"],d):(this.addMenuItems(b,
-["makeCopy"],d),null!=e&&e.constructor==OneDriveFile&&this.addMenuItems(b,["moveToFolder"],d)));b.addSeparator(d);this.addSubmenu("importFrom",b,d);this.addSubmenu("exportAs",b,d);b.addSeparator(d);this.addSubmenu("embed",b,d);this.addSubmenu("publish",b,d);b.addSeparator(d);this.addSubmenu("newLibrary",b,d);this.addSubmenu("openLibraryFrom",b,d);c.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],d);null!=e&&null!=c.fileNode&&"1"!=urlParams.embedInline&&(e=null!=e.getTitle()?
-e.getTitle():c.defaultFilename,/(\.html)$/i.test(e)||/(\.svg)$/i.test(e)||this.addMenuItems(b,["-","properties"]));this.addMenuItems(b,["-","pageSetup"],d);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["print"],d);this.addMenuItems(b,["-","close"])}})));b.prototype.execute=function(){var b=this.ui.editor.graph;this.customFonts=this.prevCustomFonts;this.prevCustomFonts=this.ui.menus.customFonts;this.ui.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts));
-this.extFonts=this.previousExtFonts;for(var c=b.extFonts,d=0;null!=c&&d<c.length;d++){var e=document.getElementById("extFont_"+c[d].name);null!=e&&e.parentNode.removeChild(e)}b.extFonts=[];for(d=0;null!=this.previousExtFonts&&d<this.previousExtFonts.length;d++)this.ui.editor.graph.addExtFont(this.previousExtFonts[d].name,this.previousExtFonts[d].url);this.previousExtFonts=c};this.put("fontFamily",new Menu(mxUtils.bind(this,function(d,e){for(var f=mxUtils.bind(this,function(f,g,k,l,m){var n=c.editor.graph;
-l=this.styleChange(d,l||f,"1"!=urlParams["ext-fonts"]?[mxConstants.STYLE_FONTFAMILY,"fontSource","FType"]:[mxConstants.STYLE_FONTFAMILY],"1"!=urlParams["ext-fonts"]?[f,null!=g?encodeURIComponent(g):null,null]:[f],null,e,function(){"1"!=urlParams["ext-fonts"]?n.setFont(f,g):(document.execCommand("fontname",!1,f),n.addExtFont(f,g));c.fireEvent(new mxEventObject("styleChanged","keys","1"!=urlParams["ext-fonts"]?[mxConstants.STYLE_FONTFAMILY,"fontSource","FType"]:[mxConstants.STYLE_FONTFAMILY],"values",
-"1"!=urlParams["ext-fonts"]?[f,null!=g?encodeURIComponent(g):null,null]:[f],"cells",[n.cellEditor.getEditingCell()]))},function(){n.updateLabelElements(n.getSelectionCells(),function(b){b.removeAttribute("face");b.style.fontFamily=null;"PRE"==b.nodeName&&n.replaceElement(b,"div")});"1"==urlParams["ext-fonts"]&&n.addExtFont(f,g)});k&&(k=document.createElement("span"),k.className="geSprite geSprite-delete",k.style.cursor="pointer",k.style.display="inline-block",l.firstChild.nextSibling.nextSibling.appendChild(k),
-mxEvent.addListener(k,mxClient.IS_POINTER?"pointerup":"mouseup",mxUtils.bind(this,function(d){if("1"!=urlParams["ext-fonts"]){delete Graph.recentCustomFonts[f.toLowerCase()];for(var e=0;e<this.customFonts.length;e++)if(this.customFonts[e].name==f&&this.customFonts[e].url==g){this.customFonts.splice(e,1);c.fireEvent(new mxEventObject("customFontsChanged"));break}}else{var k=mxUtils.clone(this.editorUi.editor.graph.extFonts);if(null!=k&&0<k.length)for(e=0;e<k.length;e++)if(k[e].name==f){k.splice(e,
-1);break}for(var l=mxUtils.clone(this.customFonts),e=0;e<l.length;e++)if(l[e].name==f){l.splice(e,1);break}e=new b(this.editorUi,k,l);this.editorUi.editor.graph.model.execute(e)}this.editorUi.hideCurrentMenu();mxEvent.consume(d)})));Graph.addFont(f,g);l.firstChild.nextSibling.style.fontFamily=f;null!=m&&l.setAttribute("title",m)}),g={},k=0;k<this.defaultFonts.length;k++){var l=this.defaultFonts[k];"string"===typeof l?f(l):null!=l.fontFamily&&null!=l.fontUrl&&(g[encodeURIComponent(l.fontFamily)+"@"+
-encodeURIComponent(l.fontUrl)]=!0,f(l.fontFamily,l.fontUrl))}d.addSeparator(e);if("1"!=urlParams["ext-fonts"]){for(var l=function(b){var c=encodeURIComponent(b.name)+(null==b.url?"":"@"+encodeURIComponent(b.url));if(!g[c]){for(var d=b.name,e=0;null!=n[d.toLowerCase()];)d=b.name+" ("+ ++e+")";null==m[c]&&(p.push({name:b.name,url:b.url,label:d,title:b.url}),n[d.toLowerCase()]=b,m[c]=b)}},m={},n={},p=[],k=0;k<this.customFonts.length;k++)l(this.customFonts[k]);for(var q in Graph.recentCustomFonts)l(Graph.recentCustomFonts[q]);
-p.sort(function(b,c){return b.label<c.label?-1:b.label>c.label?1:0});if(0<p.length){for(k=0;k<p.length;k++)f(p[k].name,p[k].url,!0,p[k].label,p[k].url);d.addSeparator(e)}d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){Graph.recentCustomFonts={};this.customFonts=[];c.fireEvent(new mxEventObject("customFontsChanged"))}),e);d.addSeparator(e)}else{q=this.editorUi.editor.graph.extFonts;if(null!=q&&0<q.length){for(var l={},t=!1,k=0;k<this.customFonts.length;k++)l[this.customFonts[k].name]=
-!0;for(k=0;k<q.length;k++)l[q[k].name]||(this.customFonts.push(q[k]),t=!0);t&&this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts))}if(0<this.customFonts.length){for(k=0;k<this.customFonts.length;k++)q=this.customFonts[k].name,l=this.customFonts[k].url,f(q,l,!0),this.editorUi.editor.graph.addExtFont(q,l,!0);d.addSeparator(e);d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){var d=new b(this.editorUi,[],[]);c.editor.graph.model.execute(d)}),
-e);d.addSeparator(e)}}d.addItem(mxResources.get("custom")+"...",null,mxUtils.bind(this,function(){var b=this.editorUi.editor.graph,c=b.getStylesheet().getDefaultVertexStyle()[mxConstants.STYLE_FONTFAMILY],d="s",e=null;if("1"!=urlParams["ext-fonts"]&&b.isEditing()){var f=b.getSelectedEditingElement();null!=f&&(f=mxUtils.getCurrentStyle(f),null!=f&&(c=Graph.stripQuotes(f.fontFamily),e=Graph.getFontUrl(c,null),null!=e&&(Graph.isGoogleFontUrl(e)?(e=null,d="g"):d="w")))}else f=b.getView().getState(b.getSelectionCell()),
-null!=f&&(c=f.style[mxConstants.STYLE_FONTFAMILY]||c,"1"!=urlParams["ext-fonts"]?(f=f.style.fontSource,null!=f&&(f=decodeURIComponent(f),Graph.isGoogleFontUrl(f)?d="g":(d="w",e=f))):(d=f.style.FType||d,"w"==d&&(e=this.editorUi.editor.graph.extFonts,f=null,null!=e&&(f=e.find(function(b){return b.name==c})),e=null!=f?f.url:mxResources.get("urlNotFound",null,"URL not found"))));null!=e&&e.substring(0,PROXY_URL.length)==PROXY_URL&&(e=decodeURIComponent(e.substr((PROXY_URL+"?url=").length)));var g=null;
-document.activeElement==b.cellEditor.textarea&&(g=b.cellEditor.saveSelection());d=new FontDialog(this.editorUi,c,e,d,mxUtils.bind(this,function(c,d,e){null!=g&&(b.cellEditor.restoreSelection(g),g=null);if(null!=c&&0<c.length)if("1"!=urlParams["ext-fonts"]&&b.isEditing())b.setFont(c,d);else{b.getModel().beginUpdate();try{b.stopEditing(!1);"1"!=urlParams["ext-fonts"]?(b.setCellStyles(mxConstants.STYLE_FONTFAMILY,c),b.setCellStyles("fontSource",null!=d?encodeURIComponent(d):null),b.setCellStyles("FType",
-null)):(b.setCellStyles(mxConstants.STYLE_FONTFAMILY,c),"s"!=e&&(b.setCellStyles("FType",e),0==d.indexOf("http://")&&(d=PROXY_URL+"?url="+encodeURIComponent(d)),this.editorUi.editor.graph.addExtFont(c,d)));e=!0;for(var f=0;f<this.customFonts.length;f++)if(this.customFonts[f].name==c){e=!1;break}e&&(this.customFonts.push({name:c,url:d}),this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts)))}finally{b.getModel().endUpdate()}}}));this.editorUi.showDialog(d.container,
-380,Editor.enableWebFonts?250:180,!0,!0);d.init()}),e,null,!0)})))}})();function DiagramPage(b,e){this.node=b;null!=e?this.node.setAttribute("id",e):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
+b.checked;if(c.isSettingsEnabled()&&"1"==urlParams.sketch){var d=document.createElement("span");d.style["float"]="right";d.style.cursor="pointer";d.style.userSelect="none";d.style.marginTop="-4px";d.appendChild(b);mxUtils.write(d,mxResources.get("showStartScreen"));mxEvent.addListener(d,"click",function(c){mxEvent.getSource(c)!=b&&(b.checked=!b.checked)});header=d}var e=localStorage.getItem(Editor.configurationKey),d=[[mxResources.get("reset"),function(b,d){c.confirm(mxResources.get("areYouSure"),
+function(){try{mxEvent.isShiftDown(b)?(localStorage.removeItem(Editor.settingsKey),localStorage.removeItem(".drawio-config")):(localStorage.removeItem(Editor.configurationKey),c.hideDialog(),c.alert(mxResources.get("restartForChangeRequired")))}catch(K){c.handleError(K)}})},"Shift+Click to Reset Settings"]],f=c.actions.get("plugins");null!=f&&d.push([mxResources.get("plugins"),f.funct]);EditorUi.isElectronApp||d.push([mxResources.get("share"),function(b,d){if(0<d.value.length)try{var e=JSON.parse(d.value),
+f=window.location.protocol+"//"+window.location.host+"/"+c.getSearch()+"#_CONFIG_"+Graph.compress(JSON.stringify(e)),g=new EmbedDialog(c,f);c.showDialog(g.container,450,240,!0);g.init()}catch(G){c.handleError(G)}else c.handleError({message:mxResources.get("invalidInput")})}]);d=new TextareaDialog(c,mxResources.get("configuration")+":",null!=e?JSON.stringify(JSON.parse(e),null,2):"",function(d){if(null!=d)try{null!=b.parentNode&&(mxSettings.setShowStartScreen(b.checked),mxSettings.save());if(d==e){if(0<
+d.length){var f=JSON.parse(d);localStorage.setItem(Editor.configurationKey,JSON.stringify(f))}else localStorage.removeItem(Editor.configurationKey);c.alert(mxResources.get("restartForChangeRequired"))}c.hideDialog()}catch(K){c.handleError(K)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/configure-diagram-editor",d,b.parentNode);c.showDialog(d.container,620,460,!0,!1);d.init()});if(mxClient.IS_CHROMEAPP||isLocalStorage){this.put("language",new Menu(mxUtils.bind(this,function(b,
+d){var e=mxUtils.bind(this,function(e){var f=""==e?mxResources.get("automatic"):mxLanguageMap[e],g=null;""!=f&&(g=b.addItem(f,null,mxUtils.bind(this,function(){mxSettings.setLanguage(e);mxSettings.save();mxClient.language=e;mxResources.loadDefaultBundle=!1;mxResources.add(RESOURCE_BASE);c.alert(mxResources.get("restartForChangeRequired"))}),d),(e==mxLanguage||""==e&&null==mxLanguage)&&b.addCheckmark(g,Editor.checkmarkImage));return g});e("");b.addSeparator(d);for(var f in mxLanguageMap)e(f)})));var v=
+Menus.prototype.createMenubar;Menus.prototype.createMenubar=function(b){var c=v.apply(this,arguments);if(null!=c&&"1"!=urlParams.noLangIcon){var d=this.get("language");if(null!=d){d=c.addMenu("",d.funct);d.setAttribute("title",mxResources.get("language"));d.style.width="16px";d.style.paddingTop="2px";d.style.paddingLeft="4px";d.style.zIndex="1";d.style.position="absolute";d.style.display="block";d.style.cursor="pointer";d.style.right="17px";"atlas"==uiTheme?(d.style.top="6px",d.style.right="15px"):
+d.style.top="min"==uiTheme?"2px":"0px";var e=document.createElement("div");e.style.backgroundImage="url("+Editor.globeImage+")";e.style.backgroundPosition="center center";e.style.backgroundRepeat="no-repeat";e.style.backgroundSize="19px 19px";e.style.position="absolute";e.style.height="19px";e.style.width="19px";e.style.marginTop="2px";e.style.zIndex="1";d.appendChild(e);mxUtils.setOpacity(d,40);"1"==urlParams.winCtrls&&(d.style.right="95px",d.style.width="19px",d.style.height="19px",d.style.webkitAppRegion=
+"no-drag",e.style.webkitAppRegion="no-drag");if("atlas"==uiTheme||"dark"==uiTheme)d.style.opacity="0.85",d.style.filter="invert(100%)";document.body.appendChild(d);c.langIcon=d}}return c}}c.customLayoutConfig=[{layout:"mxHierarchicalLayout",config:{orientation:"west",intraCellSpacing:30,interRankCellSpacing:100,interHierarchySpacing:60,parallelEdgeSpacing:10}}];c.actions.addAction("runLayout",function(){var b=new TextareaDialog(c,"Run Layouts:",JSON.stringify(c.customLayoutConfig,null,2),function(b){if(0<
+b.length)try{var d=JSON.parse(b);c.executeLayoutList(d);c.customLayoutConfig=d}catch(D){c.handleError(D),null!=window.console&&console.error(D)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/apply-layouts");c.showDialog(b.container,620,460,!0,!0);b.init()});var p=this.get("layout"),u=p.funct;p.funct=function(b,d){u.apply(this,arguments);b.addItem(mxResources.get("orgChart"),null,function(){function b(){"undefined"!==typeof mxOrgChartLayout||c.loadingOrgChart||c.isOffline(!0)?
+k():c.spinner.spin(document.body,mxResources.get("loading"))&&(c.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",k)})})}):mxscript("js/extensions.min.js",k))}var d=null,e=20,f=20,g=!0,k=function(){c.loadingOrgChart=!1;c.spinner.stop();if("undefined"!==typeof mxOrgChartLayout&&null!=d&&g){var b=c.editor.graph,
+k=new mxOrgChartLayout(b,d,e,f),l=b.getDefaultParent();1<b.model.getChildCount(b.getSelectionCell())&&(l=b.getSelectionCell());k.execute(l);g=!1}},l=document.createElement("div"),m=document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";mxUtils.write(m,mxResources.get("orgChartType")+": ");l.appendChild(m);var n=document.createElement("select");n.style.width="200px";n.style.boxSizing="border-box";for(var m=[mxResources.get("linear"),mxResources.get("hanger2"),
+mxResources.get("hanger4"),mxResources.get("fishbone1"),mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")],p=0;p<m.length;p++){var y=document.createElement("option");mxUtils.write(y,m[p]);y.value=p;2==p&&y.setAttribute("selected","selected");n.appendChild(y)}mxEvent.addListener(n,"change",function(){d=n.value});l.appendChild(n);m=document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";
+mxUtils.write(m,mxResources.get("parentChildSpacing")+": ");l.appendChild(m);var q=document.createElement("input");q.type="number";q.value=e;q.style.width="200px";q.style.boxSizing="border-box";l.appendChild(q);mxEvent.addListener(q,"change",function(){e=q.value});m=document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";mxUtils.write(m,mxResources.get("siblingSpacing")+": ");l.appendChild(m);var t=document.createElement("input");t.type="number";
+t.value=f;t.style.width="200px";t.style.boxSizing="border-box";l.appendChild(t);mxEvent.addListener(t,"change",function(){f=t.value});l=new CustomDialog(c,l,function(){null==d&&(d=2);b()});c.showDialog(l.container,355,140,!0,!0)},d,null,k());b.addSeparator(d);b.addItem(mxResources.get("parallels"),null,mxUtils.bind(this,function(){var b=new mxParallelEdgeLayout(g);b.checkOverlap=!0;b.spacing=20;c.executeLayout(function(){b.execute(g.getDefaultParent(),g.isSelectionEmpty()?null:g.getSelectionCells())},
+!1)}),d);b.addSeparator(d);c.menus.addMenuItem(b,"runLayout",d,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(b,d){if(!mxClient.IS_CHROMEAPP&&c.isOffline())this.addMenuItems(b,["about"],d);else{var e=b.addItem("Search:",null,null,d,null,null,!1);e.style.backgroundColor=Editor.isDarkMode()?"#505759":"whiteSmoke";e.style.cursor="default";var f=document.createElement("input");f.setAttribute("type","text");f.setAttribute("size","25");f.style.marginLeft=
+"8px";mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(b){var c=mxUtils.trim(f.value);13==b.keyCode&&0<c.length?(this.editorUi.openLink("https://www.diagrams.net/search?src="+(EditorUi.isElectronApp?"DESKTOP":encodeURIComponent(location.host))+"&search="+encodeURIComponent(c)),f.value="",EditorUi.logEvent({category:"SEARCH-HELP",action:"search",label:c}),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0)):27==b.keyCode&&(f.value="")}));e.firstChild.nextSibling.appendChild(f);
+mxEvent.addGestureListeners(f,function(b){document.activeElement!=f&&f.focus();mxEvent.consume(b)},function(b){mxEvent.consume(b)},function(b){mxEvent.consume(b)});window.setTimeout(function(){f.focus()},0);EditorUi.isElectronApp?(c.actions.addAction("website...",function(){c.openLink("https://www.diagrams.net")}),c.actions.addAction("check4Updates",function(){c.checkForUpdates()}),this.addMenuItems(b,"- keyboardShortcuts quickStart website support -".split(" "),d),"1"!=urlParams.disableUpdate&&this.addMenuItems(b,
+["check4Updates","-"],d),this.addMenuItems(b,["forkme","-","about"],d)):this.addMenuItems(b,"- keyboardShortcuts quickStart support - forkme downloadDesktop - about".split(" "),d)}"1"==urlParams.test&&(b.addSeparator(d),this.addSubmenu("testDevelop",b,d))})));mxResources.parse("diagramLanguage=Diagram Language");c.actions.addAction("diagramLanguage...",function(){var b=prompt("Language Code",Graph.diagramLanguage||"");null!=b&&(Graph.diagramLanguage=0<b.length?b:null,g.refresh())});if("1"==urlParams.test){mxResources.parse("testDevelop=Develop");
+mxResources.parse("showBoundingBox=Show bounding box");mxResources.parse("createSidebarEntry=Create Sidebar Entry");mxResources.parse("testCheckFile=Check File");mxResources.parse("testDiff=Diff/Sync");mxResources.parse("testInspect=Inspect");mxResources.parse("testShowConsole=Show Console");mxResources.parse("testXmlImageExport=XML Image Export");mxResources.parse("testDownloadRtModel=Export RT model");mxResources.parse("testImportRtModel=Import RT model");c.actions.addAction("createSidebarEntry",
+mxUtils.bind(this,function(){if(!g.isSelectionEmpty()){var b=g.cloneCells(g.getSelectionCells()),d=g.getBoundingBoxFromGeometry(b),b=g.moveCells(b,-d.x,-d.y);c.showTextDialog("Create Sidebar Entry","this.addDataEntry('tag1 tag2', "+d.width+", "+d.height+", 'The Title', '"+Graph.compress(mxUtils.getXml(g.encodeCells(b)))+"'),")}}));c.actions.addAction("showBoundingBox",mxUtils.bind(this,function(){var b=g.getGraphBounds(),c=g.view.translate,d=g.view.scale;g.insertVertex(g.getDefaultParent(),null,"",
+b.x/d-c.x,b.y/d-c.y,b.width/d,b.height/d,"fillColor=none;strokeColor=red;")}));c.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var b=null!=c.pages&&null!=c.getCurrentFile()?c.getCurrentFile().getAnonymizedXmlForPages(c.pages):"",b=new TextareaDialog(c,"Paste Data:",b,function(b){if(0<b.length)try{var d=function(b){function c(b){if(null==p[b]){if(p[b]=!0,null!=f[b]){for(;0<f[b].length;){var e=f[b].pop();c(e)}delete f[b]}}else mxLog.debug(d+": Visited: "+b)}var d=b.parentNode.id,e=
+b.childNodes;b={};for(var f={},g=null,k={},l=0;l<e.length;l++){var m=e[l];if(null!=m.id&&0<m.id.length)if(null==b[m.id]){b[m.id]=m.id;var n=m.getAttribute("parent");null==n?null!=g?mxLog.debug(d+": Multiple roots: "+m.id):g=m.id:(null==f[n]&&(f[n]=[]),f[n].push(m.id))}else k[m.id]=m.id}0<Object.keys(k).length?(e=d+": "+Object.keys(k).length+" Duplicates: "+Object.keys(k).join(", "),mxLog.debug(e+" (see console)")):mxLog.debug(d+": Checked");var p={};null==g?mxLog.debug(d+": No root"):(c(g),Object.keys(p).length!=
+Object.keys(b).length&&(mxLog.debug(d+": Invalid tree: (see console)"),console.log(d+": Invalid tree",f)))};"<"!=b.charAt(0)&&(b=Graph.decompress(b),mxLog.debug("See console for uncompressed XML"),console.log("xml",b));var e=mxUtils.parseXml(b),f=c.getPagesForNode(e.documentElement,"mxGraphModel");if(null!=f&&0<f.length)try{var g=c.getHashValueForPages(f);mxLog.debug("Checksum: ",g)}catch(J){mxLog.debug("Error: ",J.message)}else mxLog.debug("No pages found for checksum");var k=e.getElementsByTagName("root");
+for(b=0;b<k.length;b++)d(k[b]);mxLog.show()}catch(J){c.handleError(J),null!=window.console&&console.error(J)}});c.showDialog(b.container,620,460,!0,!0);b.init()}));var x=null;c.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=c.pages){var b=new TextareaDialog(c,"Diff/Sync:","",function(b){var d=c.getCurrentFile();if(0<b.length&&null!=d)try{var e=JSON.parse(b);d.patch([e],null,!0);c.hideDialog()}catch(E){c.handleError(E)}},null,"Close",null,null,null,!0,null,"Patch",null,[["Snapshot",
+function(d,e){x=c.getPagesForNode(mxUtils.parseXml(c.getFileData(!0)).documentElement);b.textarea.value="Snapshot updated "+(new Date).toLocaleString()}],["Diff",function(d,e){try{b.textarea.value=JSON.stringify(c.diffPages(x,c.pages),null,2)}catch(D){c.handleError(D)}}]]);null==x?(x=c.getPagesForNode(mxUtils.parseXml(c.getFileData(!0)).documentElement),b.textarea.value="Snapshot created "+(new Date).toLocaleString()):b.textarea.value=JSON.stringify(c.diffPages(x,c.pages),null,2);c.showDialog(b.container,
+620,460,!0,!0);b.init()}else c.alert("No pages")}));c.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(c,g.getModel())}));c.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var b=new mxImageExport,c=g.getGraphBounds(),d=g.view.scale,e=mxUtils.createXmlDocument(),f=e.createElement("output");e.appendChild(f);e=new mxXmlCanvas2D(f);e.translate(Math.floor((1-c.x)/d),Math.floor((1-c.y)/d));e.scale(1/d);var k=0,l=e.save;e.save=function(){k++;l.apply(this,arguments)};
+var m=e.restore;e.restore=function(){k--;m.apply(this,arguments)};var n=b.drawShape;b.drawShape=function(b){mxLog.debug("entering shape",b,k);n.apply(this,arguments);mxLog.debug("leaving shape",b,k)};b.drawState(g.getView().getState(g.model.root),e);mxLog.show();mxLog.debug(mxUtils.getXml(f));mxLog.debug("stateCounter",k)}));c.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-2});this.put("testDevelop",
+new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testShowConsole".split(" "),c)})))}c.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!c.isOffline()?c.showDialog((new MoreShapesDialog(c,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):c.showDialog((new MoreShapesDialog(c,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});c.actions.put("createShape",
+new Action(mxResources.get("shape")+"...",function(b){g.isEnabled()&&(b=new mxCell("",new mxGeometry(0,0,120,120),c.defaultCustomShapeStyle),b.vertex=!0,b=new EditShapeDialog(c,b,mxResources.get("editShape")+":",630,400),c.showDialog(b.container,640,480,!0,!1),b.init())})).isEnabled=k;c.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(b){c.spinner.stop();c.showHtmlDialog(mxResources.get("create"),
+"https://www.diagrams.net/doc/faq/embed-html-options",b,function(b,d,e,f,g,k,l,m,n,p,q){c.createHtml(b,d,e,f,g,k,l,m,n,p,q,mxUtils.bind(this,function(b,d){var e=new EmbedDialog(c,b+"\n"+d,null,null,function(){var e=window.open(),f=e.document;if(null!=f){"CSS1Compat"===document.compatMode&&f.writeln("<!DOCTYPE html>");f.writeln("<html>");f.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');f.writeln("<body>");f.writeln(b);var g=mxClient.IS_IE||
+mxClient.IS_EDGE||null!=document.documentMode;g&&f.writeln(d);f.writeln("</body>");f.writeln("</html>");f.close();if(!g){var k=e.document.createElement("div");k.marginLeft="26px";k.marginTop="26px";mxUtils.write(k,mxResources.get("updatingDocument"));g=e.document.createElement("img");g.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");g.style.marginLeft="6px";k.appendChild(g);e.document.body.insertBefore(k,e.document.body.firstChild);window.setTimeout(function(){var b=
+document.createElement("script");b.type="text/javascript";b.src=/<script.*?src="(.*?)"/.exec(d)[1];f.body.appendChild(b);k.parentNode.removeChild(k)},20)}}else c.handleError({message:mxResources.get("errorUpdatingPreview")})});c.showDialog(e.container,450,240,!0,!0);e.init()}))})})}));c.actions.put("liveImage",new Action("Live image...",function(){var b=c.getCurrentFile();null!=b&&c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(d){c.spinner.stop();
+null!=d?(d=new EmbedDialog(c,'<img src="'+(b.constructor!=DriveFile?d:"https://drive.google.com/uc?id="+b.getId())+'"/>'),c.showDialog(d.container,450,240,!0,!0),d.init()):c.handleError({message:mxResources.get("invalidPublicUrl")})})}));c.actions.put("embedImage",new Action(mxResources.get("image")+"...",function(){c.showEmbedImageDialog(function(b,d,e,f,g,k){c.spinner.spin(document.body,mxResources.get("loading"))&&c.createEmbedImage(b,d,e,f,g,k,function(b){c.spinner.stop();b=new EmbedDialog(c,
+b);c.showDialog(b.container,450,240,!0,!0);b.init()},function(b){c.spinner.stop();c.handleError(b)})},mxResources.get("image"),mxResources.get("retina"),c.isExportToCanvas())}));c.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+"...",function(){c.showEmbedImageDialog(function(b,d,e,f,g,k){c.spinner.spin(document.body,mxResources.get("loading"))&&c.createEmbedSvg(b,d,e,f,g,k,function(b){c.spinner.stop();b=new EmbedDialog(c,b);c.showDialog(b.container,450,240,!0,!0);b.init()},function(b){c.spinner.stop();
+c.handleError(b)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://www.diagrams.net/doc/faq/embed-svg.html")}));c.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var b=g.getGraphBounds();c.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil(b.height/g.view.scale)+2,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(p){c.spinner.stop();var q=[];n&&q.push("tags=%7B%7D");
+p=new EmbedDialog(c,'<iframe frameborder="0" style="width:'+l+";height:"+m+';" src="'+c.createLink(b,d,e,f,g,k,p,null,q)+'"></iframe>');c.showDialog(p.container,450,240,!0,!0);p.init()})},!0)}));c.actions.put("embedNotion",new Action(mxResources.get("notion")+"...",function(){var b=document.createElement("div");b.style.position="absolute";b.style.bottom="30px";b.style.textAlign="center";b.style.width="100%";b.style.left="0px";var d=document.createElement("a");d.setAttribute("href","javascript:void(0);");
+d.setAttribute("target","_blank");d.style.cursor="pointer";mxUtils.write(d,mxResources.get("getNotionChromeExtension"));b.appendChild(d);mxEvent.addListener(d,"click",function(b){c.openLink("https://chrome.google.com/webstore/detail/drawio-for-notion/plhaalebpkihaccllnkdaokdoeaokmle");mxEvent.consume(b)});c.showPublishLinkDialog(mxResources.get("notion"),null,null,null,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(l){c.spinner.stop();
+var m=["border=0"];n&&m.push("tags=%7B%7D");l=new EmbedDialog(c,c.createLink(b,d,e,f,g,k,l,null,m,!0));c.showDialog(l.container,450,240,!0,!0);l.init()})},!0,"https://www.diagrams.net/blog/drawio-notion",b)}));c.actions.put("publishLink",new Action(mxResources.get("link")+"...",function(){c.showPublishLinkDialog(null,null,null,null,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(l){c.spinner.stop();var m=[];n&&m.push("tags=%7B%7D");
+l=new EmbedDialog(c,c.createLink(b,d,e,f,g,k,l,null,m));c.showDialog(l.container,450,240,!0,!0);l.init()})})}));c.actions.addAction("microsoftOffice...",function(){c.openLink("https://office.draw.io")});c.actions.addAction("googleDocs...",function(){c.openLink("http://docsaddon.draw.io")});c.actions.addAction("googleSlides...",function(){c.openLink("https://slidesaddon.draw.io")});c.actions.addAction("googleSheets...",function(){c.openLink("https://sheetsaddon.draw.io")});c.actions.addAction("googleSites...",
+function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(b){c.spinner.stop();b=new GoogleSitesDialog(c,b);c.showDialog(b.container,420,256,!0,!0);b.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)p=c.actions.addAction("scratchpad",function(){c.toggleScratchpad()}),p.setToggleAction(!0),p.setSelectedCallback(function(){return null!=c.scratchpad}),"0"!=urlParams.plugins&&c.actions.addAction("plugins...",function(){c.showDialog((new PluginsDialog(c)).container,
+380,240,!0,!1)});p=c.actions.addAction("search",function(){var b=c.sidebar.isEntryVisible("search");c.sidebar.showPalette("search",!b);isLocalStorage&&(mxSettings.settings.search=!b,mxSettings.save())});p.label=mxResources.get("searchShapes");p.setToggleAction(!0);p.setSelectedCallback(function(){return c.sidebar.isEntryVisible("search")});"1"==urlParams.embed&&(c.actions.get("save").funct=function(b){g.isEditing()&&g.stopEditing();var d="0"!=urlParams.pages||null!=c.pages&&1<c.pages.length?c.getFileData(!0):
+mxUtils.getXml(c.editor.getGraphXml());if("json"==urlParams.proto){var e=c.createLoadMessage("save");e.xml=d;b&&(e.exit=!0);d=JSON.stringify(e)}(window.opener||window.parent).postMessage(d,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(c.editor.modified=!1,c.editor.setStatus(""));b=c.getCurrentFile();null==b||b.constructor==EmbedFile||b.constructor==LocalFile&&null==b.mode||c.saveFile()},c.actions.addAction("saveAndExit",function(){c.actions.get("save").funct(!0)}).label="1"==urlParams.publishClose?
+mxResources.get("publish"):mxResources.get("saveAndExit"),c.actions.addAction("exit",function(){if("1"==urlParams.embedInline)c.sendEmbeddedSvgExport();else{var b=function(){c.editor.modified=!1;var b="json"==urlParams.proto?JSON.stringify({event:"exit",modified:c.editor.modified}):"";(window.opener||window.parent).postMessage(b,"*")};c.editor.modified?c.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}}));this.put("exportAs",new Menu(mxUtils.bind(this,
+function(b,d){c.isExportToCanvas()?(this.addMenuItems(b,["exportPng"],d),c.jpgSupported&&this.addMenuItems(b,["exportJpg"],d)):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPng","exportJpg"],d);this.addMenuItems(b,["exportSvg","-"],d);c.isOffline()||c.printPdfExport?this.addMenuItems(b,["exportPdf"],d):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPdf"],d);mxClient.IS_IE||"undefined"===typeof VsdxExport&&c.isOffline()||this.addMenuItems(b,
+["exportVsdx"],d);this.addMenuItems(b,["-","exportHtml","exportXml","exportUrl"],d);c.isOffline()||(b.addSeparator(d),this.addMenuItem(b,"export",d).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom",new Menu(mxUtils.bind(this,function(b,d){function e(b){b.pickFile(function(d){c.spinner.spin(document.body,mxResources.get("loading"))&&b.getFile(d,function(b){var d="data:image/"==b.getData().substring(0,11)?p(b.getTitle()):"text/xml";/\.svg$/i.test(b.getTitle())&&
+!c.editor.isDataSvg(b.getData())&&(b.setData(Editor.createSvgDataUri(b.getData())),d="image/svg+xml");k(b.getData(),d,b.getTitle())},function(b){c.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null)},b==c.drive)},!0)}var k=mxUtils.bind(this,function(b,d,e){var f=g.view,k=g.getGraphBounds(),l=g.snap(Math.ceil(Math.max(0,k.x/f.scale-f.translate.x)+4*g.gridSize)),m=g.snap(Math.ceil(Math.max(0,(k.y+k.height)/f.scale-f.translate.y)+4*g.gridSize));"data:image/"==b.substring(0,11)?c.loadImage(b,
+mxUtils.bind(this,function(f){var k=!0,n=mxUtils.bind(this,function(){c.resizeImage(f,b,mxUtils.bind(this,function(f,n,p){f=k?Math.min(1,Math.min(c.maxImageSize/n,c.maxImageSize/p)):1;c.importFile(b,d,l,m,Math.round(n*f),Math.round(p*f),e,function(b){c.spinner.stop();g.setSelectionCells(b);g.scrollCellToVisible(g.getSelectionCell())})}),k)});b.length>c.resampleThreshold?c.confirmImageResize(function(b){k=b;n()}):n()}),mxUtils.bind(this,function(){c.handleError({message:mxResources.get("cannotOpenFile")})})):
+c.importFile(b,d,l,m,0,0,e,function(b){c.spinner.stop();g.setSelectionCells(b);g.scrollCellToVisible(g.getSelectionCell())})}),p=mxUtils.bind(this,function(b){var c="text/xml";/\.png$/i.test(b)?c="image/png":/\.jpe?g$/i.test(b)?c="image/jpg":/\.gif$/i.test(b)?c="image/gif":/\.pdf$/i.test(b)&&(c="application/pdf");return c});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){e(c.drive)},d):n&&"function"===typeof window.DriveClient&&
+b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){e(c.oneDrive)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){e(c.dropbox)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+
+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){e(c.gitHub)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){e(c.gitLab)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){e(c.notion)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){e(c.trello)},d):m&&"function"===typeof window.TrelloClient&&
+b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.importLocalFile(!1)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.importLocalFile(!0)},d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(c,"",mxResources.get("import"),
+function(b){if(null!=b&&0<b.length&&c.spinner.spin(document.body,mxResources.get("loading"))){var d=/(\.png)($|\?)/i.test(b)?"image/png":"text/xml";c.editor.loadUrl(PROXY_URL+"?url="+encodeURIComponent(b),function(c){k(c,d,b)},function(){c.spinner.stop();c.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==d)}},mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d))}))).isEnabled=k;this.put("theme",new Menu(mxUtils.bind(this,function(b,d){var e="1"==urlParams.sketch?
+"sketch":mxSettings.getUi(),f=b.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");c.alert(mxResources.get("restartForChangeRequired"))},d);"kennedy"!=e&&"atlas"!=e&&"dark"!=e&&"min"!=e&&"sketch"!=e&&b.addCheckmark(f,Editor.checkmarkImage);b.addSeparator(d);f=b.addItem(mxResources.get("default"),null,function(){mxSettings.setUi("kennedy");c.alert(mxResources.get("restartForChangeRequired"))},d);"kennedy"==e&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("minimal"),
+null,function(){mxSettings.setUi("min");c.alert(mxResources.get("restartForChangeRequired"))},d);"min"==e&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("atlas"),null,function(){mxSettings.setUi("atlas");c.alert(mxResources.get("restartForChangeRequired"))},d);"atlas"==e&&b.addCheckmark(f,Editor.checkmarkImage);if("dark"==e||!mxClient.IS_IE&&!mxClient.IS_IE11)f=b.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");c.alert(mxResources.get("restartForChangeRequired"))},
+d),"dark"==e&&b.addCheckmark(f,Editor.checkmarkImage);b.addSeparator(d);f=b.addItem(mxResources.get("sketch"),null,function(){mxSettings.setUi("sketch");c.alert(mxResources.get("restartForChangeRequired"))},d);"sketch"==e&&b.addCheckmark(f,Editor.checkmarkImage)})));p=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var b=this.editorUi.getCurrentFile();if(null!=b)if(b.constructor==LocalFile&&null!=b.fileHandle)c.showSaveFilePicker(mxUtils.bind(c,function(d,e){b.invalidFileHandle=
+null;b.fileHandle=d;b.title=e.name;b.desc=e;c.save(e.name)}),null,c.createFileSystemOptions(b.getTitle()));else{var d=null!=b.getTitle()?b.getTitle():this.editorUi.defaultFilename,d=new FilenameDialog(this.editorUi,d,mxResources.get("rename"),mxUtils.bind(this,function(c){null!=c&&0<c.length&&null!=b&&c!=b.getTitle()&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&b.rename(c,mxUtils.bind(this,function(b){this.editorUi.spinner.stop()}),mxUtils.bind(this,function(b){this.editorUi.handleError(b,
+null!=b?mxResources.get("errorRenamingFile"):null)}))}),b.constructor==DriveFile||b.constructor==StorageFile?mxResources.get("diagramName"):null,function(b){if(null!=b&&0<b.length)return!0;c.showError(mxResources.get("error"),mxResources.get("invalidName"),mxResources.get("ok"));return!1},null,null,null,null,c.editor.fileExtensions);this.editorUi.showDialog(d.container,340,96,!0,!0);d.init()}}));p.isEnabled=function(){return this.enabled&&k.apply(this,arguments)};p.visible="1"!=urlParams.embed;c.actions.addAction("makeCopy...",
+mxUtils.bind(this,function(){var b=c.getCurrentFile();if(null!=b){var d=c.getCopyFilename(b);b.constructor==DriveFile?(d=new CreateDialog(c,d,mxUtils.bind(this,function(d,e){"_blank"==e?c.editor.editAsNew(c.getFileData(),d):("download"==e&&(e=App.MODE_GOOGLE),null!=d&&0<d.length&&(e==App.MODE_GOOGLE?c.spinner.spin(document.body,mxResources.get("saving"))&&b.saveAs(d,mxUtils.bind(this,function(d){b.desc=d;b.save(!1,mxUtils.bind(this,function(){c.spinner.stop();b.setModified(!1);b.addAllSavedStatus()}),
+mxUtils.bind(this,function(b){c.handleError(b)}))}),mxUtils.bind(this,function(b){c.handleError(b)})):c.createFile(d,c.getFileData(!0),null,e)))}),mxUtils.bind(this,function(){c.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null,!0,null,!0,null,null,null,null,c.editor.fileExtensions),c.showDialog(d.container,420,380,!0,!0),d.init()):c.editor.editAsNew(this.editorUi.getFileData(!0),d)}}));c.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var b=c.getCurrentFile();
+if(b.getMode()==App.MODE_GOOGLE||b.getMode()==App.MODE_ONEDRIVE){var d=!1;if(b.getMode()==App.MODE_GOOGLE&&null!=b.desc.parents)for(var e=0;e<b.desc.parents.length;e++)if(b.desc.parents[e].isRoot){d=!0;break}c.pickFolder(b.getMode(),mxUtils.bind(this,function(d){c.spinner.spin(document.body,mxResources.get("moving"))&&b.move(d,mxUtils.bind(this,function(b){c.spinner.stop()}),mxUtils.bind(this,function(b){c.handleError(b)}))}),null,!0,d)}}));this.put("publish",new Menu(mxUtils.bind(this,function(b,
+c){this.addMenuItems(b,["publishLink"],c)})));c.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){c.openLink("https://app.draw.io/")}));c.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){c.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...",mxUtils.bind(this,function(){try{var b=c.getCurrentFile();null!=b&&b.share()}catch(C){c.handleError(C)}}));this.put("embed",new Menu(mxUtils.bind(this,function(b,
+d){var e=c.getCurrentFile();null==e||e.getMode()!=App.MODE_GOOGLE&&e.getMode()!=App.MODE_GITHUB||!/(\.png)$/i.test(e.getTitle())||this.addMenuItems(b,["liveImage","-"],d);this.addMenuItems(b,["embedImage","embedSvg","-","embedHtml"],d);navigator.standalone||c.isOffline()||this.addMenuItems(b,["embedIframe"],d);"1"==urlParams.embed||c.isOffline()||this.addMenuItems(b,"- googleDocs googleSlides googleSheets - microsoftOffice - embedNotion".split(" "),d)})));c.addInsertItem=function(b,d,e,f){("plantUml"!=
+f||EditorUi.enablePlantUml&&!c.isOffline())&&b.addItem(e,null,mxUtils.bind(this,function(){if("fromText"==f||"formatSql"==f||"plantUml"==f||"mermaid"==f){var b=new ParseDialog(c,e,f);c.showDialog(b.container,620,420,!0,!1);c.dialog.container.style.overflow="auto"}else b=new CreateGraphDialog(c,e,f),c.showDialog(b.container,620,420,!0,!1);b.init()}),d,null,k())};var z=function(b,d,e,f){var k=new mxCell(b,new mxGeometry(0,0,d,e),f);k.vertex=!0;b=g.getCenterInsertPoint(g.getBoundingBoxFromGeometry([k],
+!0));k.geometry.x=b.x;k.geometry.y=b.y;g.getModel().beginUpdate();try{k=g.addCell(k),g.fireEvent(new mxEventObject("cellsInserted","cells",[k]))}finally{g.getModel().endUpdate()}g.scrollCellToVisible(k);g.setSelectionCell(k);g.container.focus();g.editAfterInsert&&g.startEditing(k);window.setTimeout(function(){null!=c.hoverIcons&&c.hoverIcons.update(g.view.getState(k))},0);return k};c.actions.put("insertText",new Action(mxResources.get("text"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&
+g.startEditingAtCell(z("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=k;c.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&z("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=k;c.actions.put("insertEllipse",new Action(mxResources.get("ellipse"),
+function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&z("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=k;c.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&z("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=k;c.addInsertMenuItems=mxUtils.bind(this,function(b,d,e){for(var f=0;f<e.length;f++)"-"==e[f]?b.addSeparator(d):c.addInsertItem(b,d,mxResources.get(e[f])+
+"...",e[f])});this.put("insert",new Menu(mxUtils.bind(this,function(b,d){this.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - createShape insertFreehand - insertImage".split(" "),d);c.insertTemplateEnabled&&!c.isOffline()&&this.addMenuItems(b,["insertTemplate"],d);b.addSeparator(d);this.addSubmenu("insertLayout",b,d,mxResources.get("layout"));this.addSubmenu("insertAdvanced",b,d,mxResources.get("advanced"))})));this.put("insertLayout",new Menu(mxUtils.bind(this,
+function(b,d){c.addInsertMenuItems(b,d,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(b,d){c.addInsertMenuItems(b,d,["fromText","plantUml","mermaid","-","formatSql"]);b.addItem(mxResources.get("csv")+"...",null,function(){c.showImportCsvDialog()},d,null,k())})));this.put("openRecent",new Menu(function(b,d){var e=c.getRecent();if(null!=e){for(var f=0;f<e.length;f++)(function(e){var f=
+e.mode;f==App.MODE_GOOGLE?f="googleDrive":f==App.MODE_ONEDRIVE&&(f="oneDrive");b.addItem(e.title+" ("+mxResources.get(f)+")",null,function(){c.loadFile(e.id)},d)})(e[f]);b.addSeparator(d)}b.addItem(mxResources.get("reset"),null,function(){c.resetRecent()},d)}));this.put("openFrom",new Menu(function(b,d){null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.pickFile(App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+
+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickFile(App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.pickFile(App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+
+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.pickFile(App.MODE_GITHUB)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickFile(App.MODE_GITLAB)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.pickFile(App.MODE_NOTION)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.pickFile(App.MODE_TRELLO)},
+d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.pickFile(App.MODE_BROWSER)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.pickFile(App.MODE_DEVICE)},d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=
+new FilenameDialog(c,"",mxResources.get("open"),function(b){null!=b&&0<b.length&&(null==c.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(b):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(b)))},mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(b,d){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&
+(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+
+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},
+d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITLAB)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_NOTION)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_TRELLO)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+
+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},d)})),this.put("openLibraryFrom",new Menu(function(b,d){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&
+(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.pickLibrary(App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickLibrary(App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",
+null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.pickLibrary(App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.pickLibrary(App.MODE_GITHUB)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickLibrary(App.MODE_GITLAB)},
+d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.pickLibrary(App.MODE_NOTION)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.pickLibrary(App.MODE_TRELLO)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.pickLibrary(App.MODE_BROWSER)},
+d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.pickLibrary(App.MODE_DEVICE)},d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(c,"",mxResources.get("open"),function(b){if(null!=b&&0<b.length&&c.spinner.spin(document.body,mxResources.get("loading"))){var d=b;c.editor.isCorsEnabledForUrl(b)||(d=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(d,function(d){if(200<=d.getStatus()&&299>=d.getStatus()){c.spinner.stop();
+try{c.loadLibrary(new UrlLibrary(this,d.getText(),b))}catch(K){c.handleError(K,mxResources.get("errorLoadingFile"))}}else c.spinner.stop(),c.handleError(null,mxResources.get("errorLoadingFile"))},function(){c.spinner.stop();c.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d));"1"==urlParams.confLib&&(b.addSeparator(d),b.addItem(mxResources.get("confluenceCloud")+"...",null,function(){c.showRemotelyStoredLibrary(mxResources.get("libraries"))},
+d))})));this.put("edit",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"undo redo - cut copy copyAsImage paste delete - duplicate - findReplace - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));p=c.actions.addAction("comments",mxUtils.bind(this,function(){if(null==this.commentsWindow)this.commentsWindow=new CommentsWindow(c,document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",
+function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("comments"));else{var b=!this.commentsWindow.window.isVisible();this.commentsWindow.window.setVisible(b);this.commentsWindow.refreshCommentsTime();b&&this.commentsWindow.hasError&&this.commentsWindow.refreshComments()}}));p.setToggleAction(!0);p.setSelectedCallback(mxUtils.bind(this,
+function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));c.editor.addListener("fileLoaded",mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var p=this.get("viewPanels"),A=p.funct;p.funct=function(b,d){A.apply(this,arguments);c.menus.addMenuItems(b,["tags"],d);c.commentsSupported()&&c.menus.addMenuItems(b,["comments"],d)};this.put("view",new Menu(mxUtils.bind(this,function(b,d){this.addMenuItems(b,(null!=
+this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers","tags"]).concat(c.commentsSupported()?["comments","-"]:["-"]));this.addMenuItems(b,["-","search"],d);if(isLocalStorage||mxClient.IS_CHROMEAPP){var e=this.addMenuItem(b,"scratchpad",d);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(e,"https://www.diagrams.net/doc/faq/scratchpad")}this.addMenuItems(b,["shapes","-","pageView","pageScale"]);this.addSubmenu("units",b,d);this.addMenuItems(b,"- scrollbars tooltips ruler - grid guides".split(" "),
+d);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(b,"shadowVisible",d);this.addMenuItems(b,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),d);"1"!=urlParams.sketch&&this.addMenuItems(b,["-","fullscreen"],d)})));if(EditorUi.isElectronApp){var B="1"==urlParams.enableSpellCheck,p=c.actions.addAction("spellCheck",function(){c.toggleSpellCheck();B=!B;c.alert(mxResources.get("restartForChangeRequired"))});p.setToggleAction(!0);p.setSelectedCallback(function(){return B})}this.put("extras",
+new Menu(mxUtils.bind(this,function(b,d){"1"==urlParams.noLangIcon&&(this.addSubmenu("language",b,d),b.addSeparator(d));"1"!=urlParams.embed&&(this.addSubmenu("theme",b,d),b.addSeparator(d));if("undefined"!==typeof MathJax){var e=this.addMenuItem(b,"mathematicalTypesetting",d);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(e,"https://www.diagrams.net/doc/faq/math-typesetting")}EditorUi.isElectronApp&&this.addMenuItems(b,["spellCheck"],d);this.addMenuItems(b,["copyConnect",
+"collapseExpand","-"],d);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(b,["showStartScreen"],d);"1"!=urlParams.embed&&this.addMenuItems(b,["autosave"],d);b.addSeparator(d);!c.isOfflineApp()&&isLocalStorage&&this.addMenuItem(b,"plugins",d);this.addMenuItems(b,["-","editDiagram"],d);Graph.translateDiagram&&this.addMenuItems(b,["diagramLanguage"]);this.addMenuItems(b,["-","configuration"],d);b.addSeparator(d);"1"==urlParams.newTempDlg&&(c.actions.addAction("templates",
+function(){function b(b){return{id:b.id,isExt:!0,url:b.downloadUrl,title:b.title,imgUrl:b.thumbnailLink,changedBy:b.lastModifyingUserName,lastModifiedOn:b.modifiedDate}}var d=new TemplatesDialog(c,function(b){console.log(arguments)},null,null,null,"user",function(d,e,f){var g=new Date;g.setDate(g.getDate()-7);c.drive.listFiles(null,g,f?!0:!1,function(c){for(var e=[],f=0;f<c.items.length;f++)e.push(b(c.items[f]));d(e)},e)},function(d,e,f,g){c.drive.listFiles(d,null,g?!0:!1,function(c){for(var d=[],
+f=0;f<c.items.length;f++)d.push(b(c.items[f]));e(d)},f)},function(b,d,e){c.drive.getFile(b.id,function(b){d(b.data)},e)},null,function(b){b({Test:[]},1)},!0,!1);c.showDialog(d.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0)}),this.addMenuItem(b,"templates",d))})));this.put("file",new Menu(mxUtils.bind(this,function(b,d){if("1"==urlParams.embed)this.addSubmenu("importFrom",b,d),this.addSubmenu("exportAs",b,d),this.addSubmenu("embed",b,d),"1"==urlParams.libraries&&(this.addMenuItems(b,
+["-"],d),this.addSubmenu("newLibrary",b,d),this.addSubmenu("openLibraryFrom",b,d)),c.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],d),this.addMenuItems(b,["-","pageSetup","print","-","rename"],d),"1"!=urlParams.embedInline&&("1"==urlParams.noSaveBtn?"0"!=urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"],d):(this.addMenuItems(b,["save"],d),"1"==urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"],d))),"1"!=urlParams.noExitBtn&&this.addMenuItems(b,["exit"],
+d);else{var e=this.editorUi.getCurrentFile();if(null!=e&&e.constructor==DriveFile){e.isRestricted()&&this.addMenuItems(b,["exportOptionsDisabled"],d);this.addMenuItems(b,["save","-","share"],d);var f=this.addMenuItem(b,"synchronize",d);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(f,"https://www.diagrams.net/doc/faq/synchronize");b.addSeparator(d)}else this.addMenuItems(b,["new"],d);this.addSubmenu("openFrom",b,d);isLocalStorage&&this.addSubmenu("openRecent",
+b,d);null!=e&&e.constructor==DriveFile?this.addMenuItems(b,["new","-","rename","makeCopy","moveToFolder"],d):(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==e||e.constructor==LocalFile&&null==e.fileHandle||(b.addSeparator(d),f=this.addMenuItem(b,"synchronize",d),(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(f,"https://www.diagrams.net/doc/faq/synchronize")),this.addMenuItems(b,["-","save","saveAs","-"],d),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=
+c.getServiceName()||c.isOfflineApp()||null==e||this.addMenuItems(b,["share","-"],d),this.addMenuItems(b,["rename"],d),c.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(b,["upload"],d):(this.addMenuItems(b,["makeCopy"],d),null!=e&&e.constructor==OneDriveFile&&this.addMenuItems(b,["moveToFolder"],d)));b.addSeparator(d);this.addSubmenu("importFrom",b,d);this.addSubmenu("exportAs",b,d);b.addSeparator(d);this.addSubmenu("embed",b,d);this.addSubmenu("publish",
+b,d);b.addSeparator(d);this.addSubmenu("newLibrary",b,d);this.addSubmenu("openLibraryFrom",b,d);c.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],d);null!=e&&null!=c.fileNode&&"1"!=urlParams.embedInline&&(e=null!=e.getTitle()?e.getTitle():c.defaultFilename,/(\.html)$/i.test(e)||/(\.svg)$/i.test(e)||this.addMenuItems(b,["-","properties"]));this.addMenuItems(b,["-","pageSetup"],d);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["print"],d);this.addMenuItems(b,["-",
+"close"])}})));b.prototype.execute=function(){var b=this.ui.editor.graph;this.customFonts=this.prevCustomFonts;this.prevCustomFonts=this.ui.menus.customFonts;this.ui.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts));this.extFonts=this.previousExtFonts;for(var c=b.extFonts,d=0;null!=c&&d<c.length;d++){var e=document.getElementById("extFont_"+c[d].name);null!=e&&e.parentNode.removeChild(e)}b.extFonts=[];for(d=0;null!=this.previousExtFonts&&d<this.previousExtFonts.length;d++)this.ui.editor.graph.addExtFont(this.previousExtFonts[d].name,
+this.previousExtFonts[d].url);this.previousExtFonts=c};this.put("fontFamily",new Menu(mxUtils.bind(this,function(d,e){for(var f=mxUtils.bind(this,function(f,g,k,l,m){var n=c.editor.graph;l=this.styleChange(d,l||f,"1"!=urlParams["ext-fonts"]?[mxConstants.STYLE_FONTFAMILY,"fontSource","FType"]:[mxConstants.STYLE_FONTFAMILY],"1"!=urlParams["ext-fonts"]?[f,null!=g?encodeURIComponent(g):null,null]:[f],null,e,function(){"1"!=urlParams["ext-fonts"]?n.setFont(f,g):(document.execCommand("fontname",!1,f),n.addExtFont(f,
+g));c.fireEvent(new mxEventObject("styleChanged","keys","1"!=urlParams["ext-fonts"]?[mxConstants.STYLE_FONTFAMILY,"fontSource","FType"]:[mxConstants.STYLE_FONTFAMILY],"values","1"!=urlParams["ext-fonts"]?[f,null!=g?encodeURIComponent(g):null,null]:[f],"cells",[n.cellEditor.getEditingCell()]))},function(){n.updateLabelElements(n.getSelectionCells(),function(b){b.removeAttribute("face");b.style.fontFamily=null;"PRE"==b.nodeName&&n.replaceElement(b,"div")});"1"==urlParams["ext-fonts"]&&n.addExtFont(f,
+g)});k&&(k=document.createElement("span"),k.className="geSprite geSprite-delete",k.style.cursor="pointer",k.style.display="inline-block",l.firstChild.nextSibling.nextSibling.appendChild(k),mxEvent.addListener(k,mxClient.IS_POINTER?"pointerup":"mouseup",mxUtils.bind(this,function(d){if("1"!=urlParams["ext-fonts"]){delete Graph.recentCustomFonts[f.toLowerCase()];for(var e=0;e<this.customFonts.length;e++)if(this.customFonts[e].name==f&&this.customFonts[e].url==g){this.customFonts.splice(e,1);c.fireEvent(new mxEventObject("customFontsChanged"));
+break}}else{var k=mxUtils.clone(this.editorUi.editor.graph.extFonts);if(null!=k&&0<k.length)for(e=0;e<k.length;e++)if(k[e].name==f){k.splice(e,1);break}for(var l=mxUtils.clone(this.customFonts),e=0;e<l.length;e++)if(l[e].name==f){l.splice(e,1);break}e=new b(this.editorUi,k,l);this.editorUi.editor.graph.model.execute(e)}this.editorUi.hideCurrentMenu();mxEvent.consume(d)})));Graph.addFont(f,g);l.firstChild.nextSibling.style.fontFamily=f;null!=m&&l.setAttribute("title",m)}),g={},k=0;k<this.defaultFonts.length;k++){var l=
+this.defaultFonts[k];"string"===typeof l?f(l):null!=l.fontFamily&&null!=l.fontUrl&&(g[encodeURIComponent(l.fontFamily)+"@"+encodeURIComponent(l.fontUrl)]=!0,f(l.fontFamily,l.fontUrl))}d.addSeparator(e);if("1"!=urlParams["ext-fonts"]){for(var l=function(b){var c=encodeURIComponent(b.name)+(null==b.url?"":"@"+encodeURIComponent(b.url));if(!g[c]){for(var d=b.name,e=0;null!=n[d.toLowerCase()];)d=b.name+" ("+ ++e+")";null==m[c]&&(p.push({name:b.name,url:b.url,label:d,title:b.url}),n[d.toLowerCase()]=b,
+m[c]=b)}},m={},n={},p=[],k=0;k<this.customFonts.length;k++)l(this.customFonts[k]);for(var q in Graph.recentCustomFonts)l(Graph.recentCustomFonts[q]);p.sort(function(b,c){return b.label<c.label?-1:b.label>c.label?1:0});if(0<p.length){for(k=0;k<p.length;k++)f(p[k].name,p[k].url,!0,p[k].label,p[k].url);d.addSeparator(e)}d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){Graph.recentCustomFonts={};this.customFonts=[];c.fireEvent(new mxEventObject("customFontsChanged"))}),e);d.addSeparator(e)}else{q=
+this.editorUi.editor.graph.extFonts;if(null!=q&&0<q.length){for(var l={},t=!1,k=0;k<this.customFonts.length;k++)l[this.customFonts[k].name]=!0;for(k=0;k<q.length;k++)l[q[k].name]||(this.customFonts.push(q[k]),t=!0);t&&this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts))}if(0<this.customFonts.length){for(k=0;k<this.customFonts.length;k++)q=this.customFonts[k].name,l=this.customFonts[k].url,f(q,l,!0),this.editorUi.editor.graph.addExtFont(q,l,!0);d.addSeparator(e);
+d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){var d=new b(this.editorUi,[],[]);c.editor.graph.model.execute(d)}),e);d.addSeparator(e)}}d.addItem(mxResources.get("custom")+"...",null,mxUtils.bind(this,function(){var b=this.editorUi.editor.graph,c=b.getStylesheet().getDefaultVertexStyle()[mxConstants.STYLE_FONTFAMILY],d="s",e=null;if("1"!=urlParams["ext-fonts"]&&b.isEditing()){var f=b.getSelectedEditingElement();null!=f&&(f=mxUtils.getCurrentStyle(f),null!=f&&(c=Graph.stripQuotes(f.fontFamily),
+e=Graph.getFontUrl(c,null),null!=e&&(Graph.isGoogleFontUrl(e)?(e=null,d="g"):d="w")))}else f=b.getView().getState(b.getSelectionCell()),null!=f&&(c=f.style[mxConstants.STYLE_FONTFAMILY]||c,"1"!=urlParams["ext-fonts"]?(f=f.style.fontSource,null!=f&&(f=decodeURIComponent(f),Graph.isGoogleFontUrl(f)?d="g":(d="w",e=f))):(d=f.style.FType||d,"w"==d&&(e=this.editorUi.editor.graph.extFonts,f=null,null!=e&&(f=e.find(function(b){return b.name==c})),e=null!=f?f.url:mxResources.get("urlNotFound",null,"URL not found"))));
+null!=e&&e.substring(0,PROXY_URL.length)==PROXY_URL&&(e=decodeURIComponent(e.substr((PROXY_URL+"?url=").length)));var g=null;document.activeElement==b.cellEditor.textarea&&(g=b.cellEditor.saveSelection());d=new FontDialog(this.editorUi,c,e,d,mxUtils.bind(this,function(c,d,e){null!=g&&(b.cellEditor.restoreSelection(g),g=null);if(null!=c&&0<c.length)if("1"!=urlParams["ext-fonts"]&&b.isEditing())b.setFont(c,d);else{b.getModel().beginUpdate();try{b.stopEditing(!1);"1"!=urlParams["ext-fonts"]?(b.setCellStyles(mxConstants.STYLE_FONTFAMILY,
+c),b.setCellStyles("fontSource",null!=d?encodeURIComponent(d):null),b.setCellStyles("FType",null)):(b.setCellStyles(mxConstants.STYLE_FONTFAMILY,c),"s"!=e&&(b.setCellStyles("FType",e),0==d.indexOf("http://")&&(d=PROXY_URL+"?url="+encodeURIComponent(d)),this.editorUi.editor.graph.addExtFont(c,d)));e=!0;for(var f=0;f<this.customFonts.length;f++)if(this.customFonts[f].name==c){e=!1;break}e&&(this.customFonts.push({name:c,url:d}),this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",
+this.customFonts)))}finally{b.getModel().endUpdate()}}}));this.editorUi.showDialog(d.container,380,Editor.enableWebFonts?250:180,!0,!0);d.init()}),e,null,!0)})))}})();function DiagramPage(b,e){this.node=b;null!=e?this.node.setAttribute("id",e):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
DiagramPage.prototype.setName=function(b){null==b?this.node.removeAttribute("name"):this.node.setAttribute("name",b)};function RenamePage(b,e,d){this.ui=b;this.page=e;this.previous=this.name=d}RenamePage.prototype.execute=function(){var b=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=b;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};
function MovePage(b,e,d){this.ui=b;this.oldIndex=e;this.newIndex=d}MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var b=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=b;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};
function SelectPage(b,e,d){this.ui=b;this.previousPage=this.page=e;this.neverShown=!0;null!=e&&(this.neverShown=null==e.viewState,this.ui.updatePageRoot(e),null!=d&&(e.viewState=d,this.neverShown=!1))}
@@ -12224,7 +12228,7 @@ c,d){var e=m.menus.get(b),f=t.addMenu(mxResources.get(b),mxUtils.bind(this,funct
k.style.boxSizing="border-box";k.style.height="30px";k.style.padding="6px";k.style.position="relative";k.style.verticalAlign="top";k.style.top="0px";"1"==urlParams.sketch&&(k.style.borderStyle="none",k.style.boxShadow="none",k.style.padding="6px",k.style.margin="0px");null!=m.statusContainer?p.insertBefore(k,m.statusContainer):p.appendChild(k);null!=g?(k.style.backgroundImage="url("+g+")",k.style.backgroundPosition="center center",k.style.backgroundRepeat="no-repeat",k.style.backgroundSize="24px 24px",
k.style.width="34px"):mxUtils.write(k,b);mxEvent.addListener(k,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(k,"click",function(b){"disabled"!=k.getAttribute("disabled")&&c(b);mxEvent.consume(b)});null==d&&(k.style.marginRight="4px");null!=e&&k.setAttribute("title",e);null!=f&&(b=function(){f.isEnabled()?(k.removeAttribute("disabled"),k.style.cursor="pointer"):(k.setAttribute("disabled","disabled"),k.style.cursor="default")},
f.addListener("stateChanged",b),n.addListener("enabledChanged",b),b());return k}function g(b,c,d){d=document.createElement("div");d.className="geMenuItem";d.style.display="inline-block";d.style.verticalAlign="top";d.style.marginRight="6px";d.style.padding="0 4px 0 4px";d.style.height="30px";d.style.position="relative";d.style.top="0px";"1"==urlParams.sketch&&(d.style.boxShadow="none");for(var e=0;e<b.length;e++)null!=b[e]&&("1"==urlParams.sketch&&(b[e].style.padding="10px 8px",b[e].style.width="30px"),
-b[e].style.margin="0px",b[e].style.boxShadow="none",d.appendChild(b[e]));null!=c&&mxUtils.setOpacity(d,c);null!=m.statusContainer&&"1"!=urlParams.sketch?p.insertBefore(d,m.statusContainer):p.appendChild(d);return d}function k(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(V.style.left=58>C.offsetTop-C.offsetHeight/2?"70px":"10px");else{for(var b=p.firstChild;null!=b;){var d=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=d}q=p.firstChild;c=window.innerWidth||
+b[e].style.margin="0px",b[e].style.boxShadow="none",d.appendChild(b[e]));null!=c&&mxUtils.setOpacity(d,c);null!=m.statusContainer&&"1"!=urlParams.sketch?p.insertBefore(d,m.statusContainer):p.appendChild(d);return d}function k(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(V.style.left=58>B.offsetTop-B.offsetHeight/2?"70px":"10px");else{for(var b=p.firstChild;null!=b;){var d=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=d}q=p.firstChild;c=window.innerWidth||
document.documentElement.clientWidth||document.body.clientWidth;var b=1E3>c||"1"==urlParams.sketch,k=null;b||(k=e("diagram"));d=b?e("diagram",null,Editor.drawLogoImage):null;null!=d&&(k=d);g([k,f(mxResources.get("shapes"),m.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),m.actions.get("image"),b?Editor.shapesImage:null),f(mxResources.get("format"),m.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+m.actions.get("formatPanel").shortcut+")",m.actions.get("image"),
b?Editor.formatImage:null)],b?60:null);d=e("insert",!0,b?A:null);g([d,f(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=c&&(g([ja,ua],60),520<=c&&g([ya,640<=c?f("",sa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",sa,Editor.zoomInImage):null,640<=c?f("",X.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",X,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
mxEvent.addGestureListeners(k,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&m.appIconClicked(b)}),null,null));d=m.menus.get("language");null!=d&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=c&&"1"!=urlParams.sketch?(null==wa&&(d=t.addMenu("",d.funct),d.setAttribute("title",mxResources.get("language")),d.className="geToolbarButton",d.style.backgroundImage="url("+Editor.globeImage+")",
@@ -12237,44 +12241,44 @@ p);m.statusContainer=m.createStatusContainer();m.statusContainer.style.position=
if(null!=b&&null!=b.getTitle()){var c=b.getMode();"google"==c?c="googleDrive":"github"==c?c="gitHub":"gitlab"==c?c="gitLab":"onedrive"==c&&(c="oneDrive");c=mxResources.get(c);p.setAttribute("title",b.getTitle()+(null!=c?" ("+c+")":""))}else p.removeAttribute("title")};m.setStatusText(m.editor.getStatus());p.appendChild(m.statusContainer);m.buttonContainer=document.createElement("div");m.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";
p.appendChild(m.buttonContainer);m.menubarContainer=m.buttonContainer;m.tabContainer=document.createElement("div");m.tabContainer.className="geTabContainer";m.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";var l=m.diagramContainer.parentNode,x=document.createElement("div");x.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";m.diagramContainer.style.top="1"==urlParams.sketch?
"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){x.style.top="20px";m.titlebar=document.createElement("div");m.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var y=document.createElement("div");y.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;";m.titlebar.appendChild(y);l.appendChild(m.titlebar)}var z=
-m.menus.get("viewZoom"),A="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,B="1"==urlParams.sketch?document.createElement("div"):null,C="1"==urlParams.sketch?document.createElement("div"):null,V="1"==urlParams.sketch?document.createElement("div"):null,y=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();n.refresh();n.view.validateBackground()});m.addListener("darkModeChanged",y);m.addListener("sketchModeChanged",y);var oa=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)V.style.left=
-"10px",V.style.top="10px",C.style.left="10px",C.style.top="60px",B.style.top="10px",B.style.right="12px",B.style.left="",m.diagramContainer.setAttribute("data-bounds",m.diagramContainer.style.top+" "+m.diagramContainer.style.left+" "+m.diagramContainer.style.width+" "+m.diagramContainer.style.height),m.diagramContainer.style.top="0px",m.diagramContainer.style.left="0px",m.diagramContainer.style.bottom="0px",m.diagramContainer.style.right="0px",m.diagramContainer.style.width="",m.diagramContainer.style.height=
+m.menus.get("viewZoom"),A="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,C="1"==urlParams.sketch?document.createElement("div"):null,B="1"==urlParams.sketch?document.createElement("div"):null,V="1"==urlParams.sketch?document.createElement("div"):null,y=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();n.refresh();n.view.validateBackground()});m.addListener("darkModeChanged",y);m.addListener("sketchModeChanged",y);var oa=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)V.style.left=
+"10px",V.style.top="10px",B.style.left="10px",B.style.top="60px",C.style.top="10px",C.style.right="12px",C.style.left="",m.diagramContainer.setAttribute("data-bounds",m.diagramContainer.style.top+" "+m.diagramContainer.style.left+" "+m.diagramContainer.style.width+" "+m.diagramContainer.style.height),m.diagramContainer.style.top="0px",m.diagramContainer.style.left="0px",m.diagramContainer.style.bottom="0px",m.diagramContainer.style.right="0px",m.diagramContainer.style.width="",m.diagramContainer.style.height=
"";else{var b=m.diagramContainer.getAttribute("data-bounds");if(null!=b){m.diagramContainer.style.background="transparent";m.diagramContainer.removeAttribute("data-bounds");var c=n.getGraphBounds(),b=b.split(" ");m.diagramContainer.style.top=b[0];m.diagramContainer.style.left=b[1];m.diagramContainer.style.width=c.width+50+"px";m.diagramContainer.style.height=c.height+46+"px";m.diagramContainer.style.bottom="";m.diagramContainer.style.right="";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",
-rect:m.diagramContainer.getBoundingClientRect()}),"*");m.refresh()}V.style.left=m.diagramContainer.offsetLeft+"px";V.style.top=m.diagramContainer.offsetTop-V.offsetHeight-4+"px";C.style.display="";C.style.left=m.diagramContainer.offsetLeft-C.offsetWidth-4+"px";C.style.top=m.diagramContainer.offsetTop+"px";B.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-B.offsetWidth+"px";B.style.top=V.style.top;B.style.right="";m.bottomResizer.style.left=m.diagramContainer.offsetLeft+(m.diagramContainer.offsetWidth-
+rect:m.diagramContainer.getBoundingClientRect()}),"*");m.refresh()}V.style.left=m.diagramContainer.offsetLeft+"px";V.style.top=m.diagramContainer.offsetTop-V.offsetHeight-4+"px";B.style.display="";B.style.left=m.diagramContainer.offsetLeft-B.offsetWidth-4+"px";B.style.top=m.diagramContainer.offsetTop+"px";C.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-C.offsetWidth+"px";C.style.top=V.style.top;C.style.right="";m.bottomResizer.style.left=m.diagramContainer.offsetLeft+(m.diagramContainer.offsetWidth-
m.bottomResizer.offsetWidth)/2+"px";m.bottomResizer.style.top=m.diagramContainer.offsetTop+m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight/2-1+"px";m.rightResizer.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-m.rightResizer.offsetWidth/2-1+"px";m.rightResizer.style.top=m.diagramContainer.offsetTop+(m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight)/2+"px"}m.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";m.rightResizer.style.visibility=
-m.bottomResizer.style.visibility;p.style.display="none";V.style.visibility="";B.style.visibility=""}),ra=mxUtils.bind(this,function(){ia.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";oa()}),y=mxUtils.bind(this,function(){ra();b(m,!0);m.initFormatWindow();var c=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(c.x+
-c.width+4,c.y)});m.addListener("inlineFullscreenChanged",ra);m.addListener("editInlineStart",y);"1"==urlParams.embedInline&&m.addListener("darkModeChanged",y);m.addListener("editInlineStop",mxUtils.bind(this,function(b){m.diagramContainer.style.width="10px";m.diagramContainer.style.height="10px";m.diagramContainer.style.border="";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";V.style.visibility="hidden";B.style.visibility="hidden";C.style.display="none"}));if(null!=
-m.hoverIcons){var da=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||da.apply(this,arguments)}}if(null!=n.freehand){var qa=n.freehand.createStyle;n.freehand.createStyle=function(b){return qa.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){C.className="geToolbarContainer";B.className="geToolbarContainer";V.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=C;var P=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
+m.bottomResizer.style.visibility;p.style.display="none";V.style.visibility="";C.style.visibility=""}),ra=mxUtils.bind(this,function(){ia.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";oa()}),y=mxUtils.bind(this,function(){ra();b(m,!0);m.initFormatWindow();var c=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(c.x+
+c.width+4,c.y)});m.addListener("inlineFullscreenChanged",ra);m.addListener("editInlineStart",y);"1"==urlParams.embedInline&&m.addListener("darkModeChanged",y);m.addListener("editInlineStop",mxUtils.bind(this,function(b){m.diagramContainer.style.width="10px";m.diagramContainer.style.height="10px";m.diagramContainer.style.border="";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";V.style.visibility="hidden";C.style.visibility="hidden";B.style.display="none"}));if(null!=
+m.hoverIcons){var da=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||da.apply(this,arguments)}}if(null!=n.freehand){var qa=n.freehand.createStyle;n.freehand.createStyle=function(b){return qa.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){B.className="geToolbarContainer";C.className="geToolbarContainer";V.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=B;var P=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
"inline-block"});mxEvent.addListener(p,"mouseleave",function(){P||(m.statusContainer.style.display="none")});var T=mxUtils.bind(this,function(b){null!=m.notificationBtn&&(null!=b?m.notificationBtn.setAttribute("title",b):m.notificationBtn.removeAttribute("title"))});"1"!=urlParams.embed?(p.style.visibility=14>p.clientWidth?"hidden":"",m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus());if(0==m.statusContainer.children.length||1==m.statusContainer.children.length&&
"function"===typeof m.statusContainer.firstChild.getAttribute&&null==m.statusContainer.firstChild.getAttribute("class")){var b=null!=m.statusContainer.firstChild&&"function"===typeof m.statusContainer.firstChild.getAttribute?m.statusContainer.firstChild.getAttribute("title"):m.editor.getStatus();T(b);var c=m.getCurrentFile(),c=null!=c?c.savingStatusKey:DrawioFile.prototype.savingStatusKey;b==mxResources.get(c)+"..."?(m.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(c))+
'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",P=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",P=!1)}else m.statusContainer.style.display="inline-block",T(null),P=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));S=e("diagram",null,Editor.menuImage);S.style.boxShadow="none";S.style.padding="6px";S.style.margin="0px";
V.appendChild(S);mxEvent.disableContextMenu(S);mxEvent.addGestureListeners(S,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(c-240,280)+"px";m.statusContainer.style.display=
"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var Z=document.createElement("a");Z.style.padding="0px";Z.style.boxShadow="none";Z.className="geMenuItem";Z.style.display="inline-block";Z.style.width="40px";Z.style.height="12px";Z.style.marginBottom="-2px";Z.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";Z.style.backgroundPosition="top center";
-Z.style.backgroundRepeat="no-repeat";Z.setAttribute("title","Minimize");var U=!1,ma=mxUtils.bind(this,function(){C.innerHTML="";if(!U){var b=function(b,d,e){b=f("",b.funct,null,d,b,e);b.style.width="40px";b.style.opacity="0.7";return c(b,null,"pointer")},c=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";C.appendChild(b);mxUtils.br(C);return b};c(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
+Z.style.backgroundRepeat="no-repeat";Z.setAttribute("title","Minimize");var U=!1,ma=mxUtils.bind(this,function(){B.innerHTML="";if(!U){var b=function(b,d,e){b=f("",b.funct,null,d,b,e);b.style.width="40px";b.style.opacity="0.7";return c(b,null,"pointer")},c=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";B.appendChild(b);mxUtils.br(B);return b};c(m.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)");c(m.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"));c(m.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");c(m.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var b=new mxCell("",new mxGeometry(0,0,n.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,0),!1);
b.geometry.points=[];b.geometry.relative=!0;b.edge=!0;c(m.sidebar.createEdgeTemplateFromCells([b],b.geometry.width,b.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));b=b.clone();b.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";b.geometry.width=n.defaultEdgeLength+20;b.geometry.setTerminalPoint(new mxPoint(0,20),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,20),!1);b=c(m.sidebar.createEdgeTemplateFromCells([b],
b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var d=m.actions.get("toggleShapes");b(d,mxResources.get("shapes")+" ("+d.shortcut+")",A);S=e("table",null,Editor.calendarImage);S.style.boxShadow="none";S.style.opacity="0.7";S.style.padding="6px";
-S.style.margin="0px";S.style.width="37px";c(S,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.addImage)}"1"!=urlParams.embedInline&&C.appendChild(Z)});mxEvent.addListener(Z,"click",mxUtils.bind(this,function(){U?(mxUtils.setPrefixedStyle(C.style,"transform","translate(0, -50%)"),C.style.padding="8px 6px 4px",C.style.top="50%",C.style.bottom="",C.style.height="",Z.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Z.style.width="40px",Z.style.height=
-"12px",Z.setAttribute("title","Minimize"),U=!1,ma()):(C.innerHTML="",C.appendChild(Z),mxUtils.setPrefixedStyle(C.style,"transform","translate(0, 0)"),C.style.top="",C.style.bottom="12px",C.style.padding="0px",C.style.height="24px",Z.style.height="24px",Z.style.backgroundImage="url("+Editor.plusImage+")",Z.setAttribute("title",mxResources.get("insert")),Z.style.width="24px",U=!0)}));ma();m.addListener("darkModeChanged",ma);m.addListener("sketchModeChanged",ma)}else m.editor.addListener("statusChanged",
+S.style.margin="0px";S.style.width="37px";c(S,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.addImage)}"1"!=urlParams.embedInline&&B.appendChild(Z)});mxEvent.addListener(Z,"click",mxUtils.bind(this,function(){U?(mxUtils.setPrefixedStyle(B.style,"transform","translate(0, -50%)"),B.style.padding="8px 6px 4px",B.style.top="50%",B.style.bottom="",B.style.height="",Z.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Z.style.width="40px",Z.style.height=
+"12px",Z.setAttribute("title","Minimize"),U=!1,ma()):(B.innerHTML="",B.appendChild(Z),mxUtils.setPrefixedStyle(B.style,"transform","translate(0, 0)"),B.style.top="",B.style.bottom="12px",B.style.padding="0px",B.style.height="24px",Z.style.height="24px",Z.style.backgroundImage="url("+Editor.plusImage+")",Z.setAttribute("title",mxResources.get("insert")),Z.style.width="24px",U=!0)}));ma();m.addListener("darkModeChanged",ma);m.addListener("sketchModeChanged",ma)}else m.editor.addListener("statusChanged",
mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=z){var ga=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},sa=m.actions.get("zoomIn"),X=m.actions.get("zoomOut"),ca=m.actions.get("resetView"),y=m.actions.get("fullscreen"),fa=m.actions.get("undo"),ha=m.actions.get("redo"),ja=f("",fa.funct,null,mxResources.get("undo")+" ("+fa.shortcut+")",fa,Editor.undoImage),ua=
-f("",ha.funct,null,mxResources.get("redo")+" ("+ha.shortcut+")",ha,Editor.redoImage),ia=f("",y.funct,null,mxResources.get("fullscreen"),y,Editor.fullscreenImage);if(null!=B){z=function(){ba.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};ca=function(){ba.innerHTML="";null!=m.currentPage&&mxUtils.write(ba,m.currentPage.getName())};ia.parentNode.removeChild(ia);var na=m.actions.get("delete"),la=f("",na.funct,null,mxResources.get("delete"),
+f("",ha.funct,null,mxResources.get("redo")+" ("+ha.shortcut+")",ha,Editor.redoImage),ia=f("",y.funct,null,mxResources.get("fullscreen"),y,Editor.fullscreenImage);if(null!=C){z=function(){ba.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};ca=function(){ba.innerHTML="";null!=m.currentPage&&mxUtils.write(ba,m.currentPage.getName())};ia.parentNode.removeChild(ia);var na=m.actions.get("delete"),la=f("",na.funct,null,mxResources.get("delete"),
na,Editor.trashImage);la.style.opacity="0.1";V.appendChild(la);na.addListener("stateChanged",function(){la.style.opacity=na.enabled?"":"0.1"});var ka=function(){ja.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";ua.style.display=ja.style.display;ja.style.opacity=fa.enabled?"":"0.1";ua.style.opacity=ha.enabled?"":"0.1"};V.appendChild(ja);V.appendChild(ua);fa.addListener("stateChanged",ka);ha.addListener("stateChanged",ka);ka();null!=urlParams.layers&&(ka=m.actions.get("layers"),
-ka=f("",ka.funct,null,mxResources.get("layers"),ka,Editor.layersImage),ka.style.opacity="0.4",B.appendChild(ka));null!=urlParams.tags&&(ka=m.actions.get("tags"),ka=f("",ka.funct,null,mxResources.get("tags"),ka,Editor.tagsImage),ka.style.opacity="0.4",B.appendChild(ka));var ba=this.createPageMenuTab(!1,!0);ba.style.display="none";ba.style.position="";ba.style.marginLeft="";ba.style.top="";ba.style.left="";ba.style.height="100%";ba.style.lineHeight="";ba.style.borderStyle="none";ba.style.padding="3px 0";
-ba.style.margin="0px";ba.style.background="";ba.style.border="";ba.style.boxShadow="none";ba.style.verticalAlign="top";ba.style.width="auto";ba.style.maxWidth="160px";ba.style.position="relative";ba.style.padding="6px";ba.style.textOverflow="ellipsis";ba.style.opacity="0.8";m.editor.addListener("pageSelected",ca);m.editor.addListener("pageRenamed",ca);m.editor.addListener("fileLoaded",ca);ca();null!=m.currentPage&&(mxUtils.write(S,m.currentPage.getName()),console.log("initial page not emptry"));B.appendChild(ba);
-m.addListener("fileDescriptorChanged",z);m.addListener("pagesVisibleChanged",z);z();z=f("",X.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",X,Editor.zoomOutImage);B.appendChild(z);var S=document.createElement("div");S.innerHTML="100%";S.setAttribute("title",mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");S.style.display="inline-block";S.style.cursor="pointer";S.style.textAlign="center";S.style.whiteSpace="nowrap";S.style.paddingRight="10px";
-S.style.textDecoration="none";S.style.verticalAlign="top";S.style.padding="6px 0";S.style.fontSize="14px";S.style.width="40px";S.style.opacity="0.4";B.appendChild(S);mxEvent.addListener(S,"click",ga);ga=f("",sa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",sa,Editor.zoomInImage);B.appendChild(ga);y.visible&&(B.appendChild(ia),mxEvent.addListener(document,"fullscreenchange",function(){ia.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:
-Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(y=m.actions.get("exit"),B.appendChild(f("",y.funct,null,mxResources.get("exit"),y,Editor.closeImage)));m.tabContainer.style.visibility="hidden";p.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;";V.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;";
-B.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(V);x.appendChild(B);C.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;";x.appendChild(C);window.setTimeout(function(){mxUtils.setPrefixedStyle(C.style,
+ka=f("",ka.funct,null,mxResources.get("layers"),ka,Editor.layersImage),ka.style.opacity="0.4",C.appendChild(ka));null!=urlParams.tags&&(ka=m.actions.get("tags"),ka=f("",ka.funct,null,mxResources.get("tags"),ka,Editor.tagsImage),ka.style.opacity="0.4",C.appendChild(ka));var ba=this.createPageMenuTab(!1,!0);ba.style.display="none";ba.style.position="";ba.style.marginLeft="";ba.style.top="";ba.style.left="";ba.style.height="100%";ba.style.lineHeight="";ba.style.borderStyle="none";ba.style.padding="3px 0";
+ba.style.margin="0px";ba.style.background="";ba.style.border="";ba.style.boxShadow="none";ba.style.verticalAlign="top";ba.style.width="auto";ba.style.maxWidth="160px";ba.style.position="relative";ba.style.padding="6px";ba.style.textOverflow="ellipsis";ba.style.opacity="0.8";m.editor.addListener("pageSelected",ca);m.editor.addListener("pageRenamed",ca);m.editor.addListener("fileLoaded",ca);ca();null!=m.currentPage&&(mxUtils.write(S,m.currentPage.getName()),console.log("initial page not emptry"));C.appendChild(ba);
+m.addListener("fileDescriptorChanged",z);m.addListener("pagesVisibleChanged",z);z();z=f("",X.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",X,Editor.zoomOutImage);C.appendChild(z);var S=document.createElement("div");S.innerHTML="100%";S.setAttribute("title",mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");S.style.display="inline-block";S.style.cursor="pointer";S.style.textAlign="center";S.style.whiteSpace="nowrap";S.style.paddingRight="10px";
+S.style.textDecoration="none";S.style.verticalAlign="top";S.style.padding="6px 0";S.style.fontSize="14px";S.style.width="40px";S.style.opacity="0.4";C.appendChild(S);mxEvent.addListener(S,"click",ga);ga=f("",sa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",sa,Editor.zoomInImage);C.appendChild(ga);y.visible&&(C.appendChild(ia),mxEvent.addListener(document,"fullscreenchange",function(){ia.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:
+Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(y=m.actions.get("exit"),C.appendChild(f("",y.funct,null,mxResources.get("exit"),y,Editor.closeImage)));m.tabContainer.style.visibility="hidden";p.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;";V.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;";
+C.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(V);x.appendChild(C);B.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;";x.appendChild(B);window.setTimeout(function(){mxUtils.setPrefixedStyle(B.style,
"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var ya=f("",ga,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",ca,Editor.zoomFitImage);p.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";S=t.addMenu("100%",z.funct);S.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");S.style.whiteSpace="nowrap";S.style.paddingRight=
"10px";S.style.textDecoration="none";S.style.textDecoration="none";S.style.overflow="hidden";S.style.visibility="hidden";S.style.textAlign="center";S.style.cursor="pointer";S.style.height=parseInt(m.tabContainerHeight)-1+"px";S.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";S.style.position="absolute";S.style.display="block";S.style.fontSize="12px";S.style.width="59px";S.style.right="0px";S.style.bottom="0px";S.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";S.style.backgroundPosition=
"right 6px center";S.style.backgroundRepeat="no-repeat";x.appendChild(S)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML="";mxUtils.write(b,Math.round(100*m.editor.graph.view.scale)+"%")});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(S);var va=m.setGraphEnabled;m.setGraphEnabled=function(){va.apply(this,arguments);null!=this.tabContainer&&(S.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom=
-"hidden"!=this.tabContainer.style.visibility&&null==B?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=c)&&"1"!=urlParams.embedInline&&b(this,!0);null==B&&x.appendChild(m.tabContainer);var wa=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&
-m.actions.outlineWindow.window.fit();null!=m.actions.layersWindow&&m.actions.layersWindow.window.fit();null!=m.menus.tagsWindow&&m.menus.tagsWindow.window.fit();null!=m.menus.findWindow&&m.menus.findWindow.window.fit();null!=m.menus.findReplaceWindow&&m.menus.findReplaceWindow.window.fit()});if("1"==urlParams.embedInline){document.body.style.cursor="text";C.style.transform="";mxEvent.addGestureListeners(m.diagramContainer.parentNode,function(b){mxEvent.getSource(b)==m.diagramContainer.parentNode&&
+"hidden"!=this.tabContainer.style.visibility&&null==C?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=c)&&"1"!=urlParams.embedInline&&b(this,!0);null==C&&x.appendChild(m.tabContainer);var wa=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&
+m.actions.outlineWindow.window.fit();null!=m.actions.layersWindow&&m.actions.layersWindow.window.fit();null!=m.menus.tagsWindow&&m.menus.tagsWindow.window.fit();null!=m.menus.findWindow&&m.menus.findWindow.window.fit();null!=m.menus.findReplaceWindow&&m.menus.findReplaceWindow.window.fit()});if("1"==urlParams.embedInline){document.body.style.cursor="text";B.style.transform="";mxEvent.addGestureListeners(m.diagramContainer.parentNode,function(b){mxEvent.getSource(b)==m.diagramContainer.parentNode&&
(m.embedExitPoint=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),m.sendEmbeddedSvgExport())});l=document.createElement("div");l.style.position="absolute";l.style.width="10px";l.style.height="10px";l.style.borderRadius="5px";l.style.border="1px solid gray";l.style.background="#ffffff";l.style.cursor="row-resize";m.diagramContainer.parentNode.appendChild(l);m.bottomResizer=l;var xa=null,ta=null,za=null,Aa=null;mxEvent.addGestureListeners(l,function(b){Aa=parseInt(m.diagramContainer.style.height);
ta=mxEvent.getClientY(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});l=l.cloneNode(!1);l.style.cursor="col-resize";m.diagramContainer.parentNode.appendChild(l);m.rightResizer=l;mxEvent.addGestureListeners(l,function(b){za=parseInt(m.diagramContainer.style.width);xa=mxEvent.getClientX(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});mxEvent.addGestureListeners(document.body,null,function(b){var c=!1;null!=xa&&(m.diagramContainer.style.width=Math.max(20,za+mxEvent.getClientX(b)-xa)+"px",
c=!0);null!=ta&&(m.diagramContainer.style.height=Math.max(20,Aa+mxEvent.getClientY(b)-ta)+"px",c=!0);c&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:m.diagramContainer.getBoundingClientRect()}),"*"),oa(),m.refresh())},function(b){null==xa&&null==ta||mxEvent.consume(b);ta=xa=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility=
-"hidden";V.style.visibility="hidden";B.style.visibility="hidden";C.style.display="none"}"1"==urlParams.prefetchFonts&&m.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)}})();(function(){var b=mxGuide.prototype.move;mxGuide.prototype.move=function(c,d,e,n){var f=d.y,g=d.x,k=!1,p=!1;if(null!=this.states&&null!=c&&null!=d){var q=this,t=new mxCellState,v=this.graph.getView().scale,u=Math.max(2,this.getGuideTolerance()/2);t.x=c.x+g;t.y=c.y+f;t.width=c.width;t.height=c.height;for(var x=[],z=[],A=0;A<this.states.length;A++){var B=this.states[A];B instanceof mxCellState&&(n||!this.graph.isCellSelected(B.cell))&&((t.x>=B.x&&t.x<=B.x+B.width||B.x>=t.x&&B.x<=t.x+t.width)&&(t.y>
+"hidden";V.style.visibility="hidden";C.style.visibility="hidden";B.style.display="none"}"1"==urlParams.prefetchFonts&&m.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)}})();(function(){var b=mxGuide.prototype.move;mxGuide.prototype.move=function(c,d,e,n){var f=d.y,g=d.x,k=!1,p=!1;if(null!=this.states&&null!=c&&null!=d){var q=this,t=new mxCellState,v=this.graph.getView().scale,u=Math.max(2,this.getGuideTolerance()/2);t.x=c.x+g;t.y=c.y+f;t.width=c.width;t.height=c.height;for(var x=[],z=[],A=0;A<this.states.length;A++){var B=this.states[A];B instanceof mxCellState&&(n||!this.graph.isCellSelected(B.cell))&&((t.x>=B.x&&t.x<=B.x+B.width||B.x>=t.x&&B.x<=t.x+t.width)&&(t.y>
B.y+B.height+4||t.y+t.height+4<B.y)?x.push(B):(t.y>=B.y&&t.y<=B.y+B.height||B.y>=t.y&&B.y<=t.y+t.height)&&(t.x>B.x+B.width+4||t.x+t.width+4<B.x)&&z.push(B))}var y=0,C=0,H=B=0,D=0,E=0,F=0,K=0,J=5*v;if(1<x.length){x.push(t);x.sort(function(b,c){return b.y-c.y});var I=!1,A=t==x[0],v=t==x[x.length-1];if(!A&&!v)for(A=1;A<x.length-1;A++)if(t==x[A]){v=x[A-1];A=x[A+1];B=C=H=(A.y-v.y-v.height-t.height)/2;break}for(A=0;A<x.length-1;A++){var v=x[A],G=x[A+1],Q=t==v||t==G,G=G.y-v.y-v.height,I=I|t==v;if(0==C&&
0==y)C=G,y=1;else if(Math.abs(C-G)<=(Q||1==A&&I?u:0))y+=1;else if(1<y&&I){x=x.slice(0,A+1);break}else if(3<=x.length-A&&!I)y=0,B=C=0!=H?H:0,x.splice(0,0==A?1:A),A=-1;else break;0!=B||Q||(C=B=G)}3==x.length&&x[1]==t&&(B=0)}if(1<z.length){z.push(t);z.sort(function(b,c){return b.x-c.x});I=!1;A=t==z[0];v=t==z[z.length-1];if(!A&&!v)for(A=1;A<z.length-1;A++)if(t==z[A]){v=z[A-1];A=z[A+1];F=E=K=(A.x-v.x-v.width-t.width)/2;break}for(A=0;A<z.length-1;A++){v=z[A];G=z[A+1];Q=t==v||t==G;G=G.x-v.x-v.width;I|=t==
v;if(0==E&&0==D)E=G,D=1;else if(Math.abs(E-G)<=(Q||1==A&&I?u:0))D+=1;else if(1<D&&I){z=z.slice(0,A+1);break}else if(3<=z.length-A&&!I)D=0,F=E=0!=K?K:0,z.splice(0,0==A?1:A),A=-1;else break;0!=F||Q||(E=F=G)}3==z.length&&z[1]==t&&(F=0)}u=function(b,c,d,e){var f=[],g;e?(e=J,g=0):(e=0,g=J);f.push(new mxPoint(b.x-e,b.y-g));f.push(new mxPoint(b.x+e,b.y+g));f.push(b);f.push(c);f.push(new mxPoint(c.x-e,c.y-g));f.push(new mxPoint(c.x+e,c.y+g));if(null!=d)return d.points=f,d;b=new mxPolyline(f,mxConstants.GUIDE_COLOR,
diff --git a/src/main/webapp/js/diagramly/App.js b/src/main/webapp/js/diagramly/App.js
index e5202b19..40423078 100644
--- a/src/main/webapp/js/diagramly/App.js
+++ b/src/main/webapp/js/diagramly/App.js
@@ -3372,7 +3372,7 @@ App.prototype.start = function()
}), null, null, null, null, urlParams['browser'] == '1',
null, null, true, rowLimit, null, null, null,
this.editor.fileExtensions);
- this.showDialog(dlg.container, 420, (serviceCount > rowLimit) ? 390 : 270,
+ this.showDialog(dlg.container, 420, (serviceCount > rowLimit) ? 390 : 280,
true, false, mxUtils.bind(this, function(cancel)
{
if (cancel && this.getCurrentFile() == null)
@@ -4561,7 +4561,7 @@ App.prototype.saveFile = function(forceDialog, success)
this.hideDialog();
}), mxResources.get('saveAs'), mxResources.get('download'), null, null, allowTab,
null, true, rowLimit, null, null, null, this.editor.fileExtensions, false);
- this.showDialog(dlg.container, 420, (serviceCount > rowLimit) ? 390 : 270, true, true);
+ this.showDialog(dlg.container, 420, (serviceCount > rowLimit) ? 390 : 280, true, true);
dlg.init();
}
}
diff --git a/src/main/webapp/js/diagramly/Dialogs.js b/src/main/webapp/js/diagramly/Dialogs.js
index 4c4c61da..70a7dd2a 100644
--- a/src/main/webapp/js/diagramly/Dialogs.js
+++ b/src/main/webapp/js/diagramly/Dialogs.js
@@ -312,7 +312,6 @@ var SplashDialog = function(editorUi)
}
}
- var serviceCount = editorUi.getServiceCount();
var logo = document.createElement('img');
logo.setAttribute('border', '0');
logo.setAttribute('align', 'absmiddle');
@@ -6047,8 +6046,6 @@ var RevisionDialog = function(editorUi, revs, restoreFn)
}
}, null, null, null, null, null, true, null, mxResources.get('merge'));
- dlg.textarea.style.width = '600px';
- dlg.textarea.style.height = '380px';
editorUi.showDialog(dlg.container, 620, 460, true, true);
dlg.init();
}
diff --git a/src/main/webapp/js/diagramly/Editor.js b/src/main/webapp/js/diagramly/Editor.js
index 5e423be1..ba43e0fa 100644
--- a/src/main/webapp/js/diagramly/Editor.js
+++ b/src/main/webapp/js/diagramly/Editor.js
@@ -303,6 +303,14 @@
* Common properties for all edges.
*/
Editor.commonProperties = [
+ {name: 'enumerate', dispName: 'Enumerate', type: 'bool', defVal: false, onChange: function(graph)
+ {
+ graph.refresh();
+ }},
+ {name: 'enumerateValue', dispName: 'Enumerate Value', type: 'string', defVal: '', isVisible: function(state, format)
+ {
+ return mxUtils.getValue(state.style, 'enumerate', '0') == '1';
+ }},
{name: 'comic', dispName: 'Comic', type: 'bool', defVal: false, isVisible: function(state, format)
{
return mxUtils.getValue(state.style, 'sketch', '0') != '1';
@@ -526,14 +534,6 @@
return (state.vertices.length > 0) ? model.isVertex(model.getParent(state.vertices[0])) : false;
}},
{name: 'editable', dispName: 'Editable', type: 'bool', defVal: true},
- {name: 'enumerate', dispName: 'Enumerate', type: 'bool', defVal: false, onChange: function(graph)
- {
- graph.refresh();
- }},
- {name: 'enumerateValue', dispName: 'Enumerate Value', type: 'string', defVal: '', isVisible: function(state, format)
- {
- return mxUtils.getValue(state.style, 'enumerate', '0') == '1';
- }},
{name: 'metaEdit', dispName: 'Edit Dialog', type: 'bool', defVal: false},
{name: 'backgroundOutline', dispName: 'Background Outline', type: 'bool', defVal: false},
{name: 'movable', dispName: 'Movable', type: 'bool', defVal: true},
@@ -6565,72 +6565,79 @@
mxGraphView.prototype.resetValidationState = function()
{
graphViewResetValidationState.apply(this, arguments);
- this.numberCounter = 0;
+ this.enumerationState = 0;
};
/**
* Adds shape number update the validation step.
*/
- var graphViewValidateCellState = mxGraphView.prototype.validateCellState;
+ var graphViewStateValidated = mxGraphView.prototype.stateValidated;
- mxGraphView.prototype.validateCellState = function(cell, recurse)
+ mxGraphView.prototype.stateValidated = function(state)
+ {
+ if (state.shape != null)
+ {
+ this.redrawEnumerationState(state);
+ }
+
+ return graphViewStateValidated.apply(this, arguments);
+ };
+
+ /**
+ * Returns the markup to be used for the enumeration shape.
+ */
+ mxGraphView.prototype.createEnumerationValue = function(state)
{
- var state = graphViewValidateCellState.apply(this, arguments);
- recurse = (recurse != null) ? recurse : true;
- var enumerate = (state != null && this.graph.model.isVertex(state.cell)) ?
- mxUtils.getValue(state.style, 'enumerate', 0) == '1' : false;
+ var value = mxUtils.getValue(state.style, 'enumerateValue', '');
- if (recurse)
+ if (value == '')
{
- this.redrawNumberShape(state, enumerate);
+ value = ++this.enumerationState;
}
-
- return state;
+
+ return '<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">' +
+ mxUtils.htmlEntities(value) + '</div>';
};
/**
* Adds drawing and update of the shape number.
*/
- mxGraphView.prototype.redrawNumberShape = function(state, enumerate)
+ mxGraphView.prototype.redrawEnumerationState = function(state)
{
- if (enumerate && this.graph.model.isVertex(state.cell) &&
- state.shape != null && state.secondLabel == null)
- {
+ var enumerate = mxUtils.getValue(state.style, 'enumerate', 0) == '1';
+
+ if (enumerate && state.secondLabel == null)
+ {
state.secondLabel = new mxText('', new mxRectangle(),
mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM);
-
- // Styles the label
state.secondLabel.size = 12;
+ state.secondLabel.state = state;
state.secondLabel.dialect = mxConstants.DIALECT_STRICTHTML;
+
this.graph.cellRenderer.initializeLabel(state, state.secondLabel);
}
-
- if (state != null && state.secondLabel != null)
+ else if (!enumerate && state.secondLabel != null)
{
- if (!enumerate)
- {
- state.secondLabel.destroy();
- state.secondLabel = null;
- }
- else
- {
- var enumValue = mxUtils.getValue(state.style, 'enumerateValue', '');
+ state.secondLabel.destroy();
+ state.secondLabel = null;
+ }
- if (enumValue == '')
- {
- enumValue = ++this.numberCounter;
- }
+ var shape = state.secondLabel;
- var value = '<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">' +
- mxUtils.htmlEntities(enumValue) + '</div>';
-
- var scale = this.graph.getView().getScale();
- var bounds = new mxRectangle(state.x + state.width - 4 * scale, state.y + 4 * scale, 0, 0);
- state.secondLabel.value = value;
- state.secondLabel.state = state;
- state.secondLabel.scale = scale;
- state.secondLabel.bounds = bounds;
- state.secondLabel.redraw();
+ if (shape != null)
+ {
+ var s = state.view.scale;
+ var value = this.createEnumerationValue(state);
+ var bounds = this.graph.model.isVertex(state.cell) ?
+ new mxRectangle(state.x + state.width - 4 * s, state.y + 4 * s, 0, 0) :
+ mxRectangle.fromPoint(state.view.getPoint(state));
+
+ if (!shape.bounds.equals(bounds) || shape.value != value || shape.scale != s)
+ {
+ shape.bounds = bounds;
+ shape.value = value;
+ shape.scale = s;
+ shape.redraw();
}
}
};
diff --git a/src/main/webapp/js/diagramly/EditorUi.js b/src/main/webapp/js/diagramly/EditorUi.js
index 6d070dc2..c027213d 100644
--- a/src/main/webapp/js/diagramly/EditorUi.js
+++ b/src/main/webapp/js/diagramly/EditorUi.js
@@ -3698,12 +3698,9 @@
}
Editor.sketchFontFamily = 'Architects Daughter';
- Editor.sketchFontSource = 'https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter';
- Editor.sketchFonts = [
- {'fontFamily': Editor.sketchFontFamily,
- 'fontUrl': decodeURIComponent(Editor.sketchFontSource)},
- {'fontFamily': 'Rock Salt', 'fontUrl': 'https://fonts.googleapis.com/css?family=Rock+Salt'},
- {'fontFamily': 'Permanent Marker', 'fontUrl': 'https://fonts.googleapis.com/css?family=Permanent+Marker'}];
+ Editor.sketchFontSource = encodeURIComponent(STYLE_PATH + '/fonts/ArchitectsDaughter-Regular.ttf');
+ Editor.sketchFonts = [{'fontFamily': Editor.sketchFontFamily,
+ 'fontUrl': decodeURIComponent(Editor.sketchFontSource)}];
// Implements the sketch-min UI
if (urlParams['sketch'] == '1')
@@ -4353,8 +4350,6 @@
EditorUi.prototype.showTextDialog = function(title, text)
{
var dlg = new TextareaDialog(this, title, text, null, null, mxResources.get('close'));
- dlg.textarea.style.width = '600px';
- dlg.textarea.style.height = '380px';
this.showDialog(dlg.container, 620, 460, true, true, null, null, null, null, true);
dlg.init();
document.execCommand('selectall', false, null);
@@ -4609,7 +4604,7 @@
this.hideDialog();
}), mxResources.get('saveAs'), mxResources.get('download'), false, allowBrowser, allowTab,
null, count > 1, rowLimit, data, mimeType, base64Encoded);
- var height = (this.isServices(count)) ? ((count > rowLimit) ? 390 : 270) : 160;
+ var height = (this.isServices(count)) ? ((count > rowLimit) ? 390 : 280) : 160;
this.showDialog(dlg.container, 420, height, true, true);
dlg.init();
};
@@ -5020,7 +5015,7 @@
}), mxResources.get('saveAs'), mxResources.get('download'), false, false, allowTab,
null, count > 1, rowLimit, data, mimeType, base64Encoded);
- var height = (this.isServices(count)) ? ((count > 4) ? 390 : 270) : 160;
+ var height = (this.isServices(count)) ? ((count > 4) ? 390 : 280) : 160;
this.showDialog(dlg.container, 420, height, true, true);
dlg.init();
};
diff --git a/src/main/webapp/js/diagramly/Init.js b/src/main/webapp/js/diagramly/Init.js
index 7c5b3c55..3fa286e2 100644
--- a/src/main/webapp/js/diagramly/Init.js
+++ b/src/main/webapp/js/diagramly/Init.js
@@ -265,17 +265,17 @@ window.uiTheme = window.uiTheme || (function()
{
if (ui == null)
{
- var iw = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
+ var iw = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
- if (iw <= 768)
- {
+ if (iw <= 768)
+ {
if (urlParams['pages'] == null)
{
urlParams['pages'] = '1';
}
ui = 'sketch';
- }
+ }
}
}
catch (e)
diff --git a/src/main/webapp/js/diagramly/Menus.js b/src/main/webapp/js/diagramly/Menus.js
index 46b16673..3e12ce5a 100644
--- a/src/main/webapp/js/diagramly/Menus.js
+++ b/src/main/webapp/js/diagramly/Menus.js
@@ -1046,6 +1046,7 @@
showSplash.style['float'] = 'right';
showSplash.style.cursor = 'pointer';
showSplash.style.userSelect = 'none';
+ showSplash.style.marginTop = '-4px';
showSplash.appendChild(splashCb);
mxUtils.write(showSplash, mxResources.get('showStartScreen'));
@@ -1167,8 +1168,6 @@
'https://www.diagrams.net/doc/faq/configure-diagram-editor',
buttons, splashCb.parentNode);
- dlg.textarea.style.width = '600px';
- dlg.textarea.style.height = '380px';
editorUi.showDialog(dlg.container, 620, 460, true, false);
dlg.init();
});
@@ -1331,8 +1330,6 @@
}, null, null, null, null, null, true, null, null,
'https://www.diagrams.net/doc/faq/apply-layouts');
- dlg.textarea.style.width = '600px';
- dlg.textarea.style.height = '380px';
editorUi.showDialog(dlg.container, 620, 460, true, true);
dlg.init();
});
@@ -1835,8 +1832,6 @@
}
});
- dlg.textarea.style.width = '600px';
- dlg.textarea.style.height = '380px';
editorUi.showDialog(dlg.container, 620, 460, true, true);
dlg.init();
}));
@@ -1885,10 +1880,6 @@
}
}, null, 'Close', null, null, null, true, null, 'Patch', null, buttons);
- dlg.textarea.style.width = '600px';
- dlg.textarea.style.height = '380px';
-
-
if (snapshot == null)
{
snapshot = editorUi.getPagesForNode(mxUtils.parseXml(
diff --git a/src/main/webapp/js/grapheditor/Actions.js b/src/main/webapp/js/grapheditor/Actions.js
index e5e32551..972f2fed 100644
--- a/src/main/webapp/js/grapheditor/Actions.js
+++ b/src/main/webapp/js/grapheditor/Actions.js
@@ -891,6 +891,10 @@ Actions.prototype.init = function()
}
}
}, null, null, Editor.ctrlKey + '+Shift+Y');
+ this.addAction('snapToGrid', function()
+ {
+ graph.snapCellsToGrid(graph.getSelectionCells(), graph.gridSize);
+ });
this.addAction('formattedText', function()
{
graph.stopEditing();
diff --git a/src/main/webapp/js/grapheditor/Dialogs.js b/src/main/webapp/js/grapheditor/Dialogs.js
index 95c6e602..a301941d 100644
--- a/src/main/webapp/js/grapheditor/Dialogs.js
+++ b/src/main/webapp/js/grapheditor/Dialogs.js
@@ -437,28 +437,42 @@ var TextareaDialog = function(editorUi, title, url, fn, cancelFn, cancelTitle, w
w = (w != null) ? w : 300;
h = (h != null) ? h : 120;
noHide = (noHide != null) ? noHide : false;
- var row, td;
-
- var table = document.createElement('table');
- var tbody = document.createElement('tbody');
-
- row = document.createElement('tr');
-
- td = document.createElement('td');
- td.style.fontSize = '10pt';
- mxUtils.write(td, title);
+
+ var div = document.createElement('div');
+ div.style.position = 'absolute';
+ div.style.top = '20px';
+ div.style.bottom = '20px';
+ div.style.left = '20px';
+ div.style.right = '20px';
+
+ var top = document.createElement('div');
+
+ top.style.position = 'absolute';
+ top.style.left = '0px';
+ top.style.right = '0px';
+
+ var main = top.cloneNode(false);
+ var buttons = top.cloneNode(false);
+
+ top.style.top = '0px';
+ top.style.height = '20px';
+ main.style.top = '20px';
+ main.style.bottom = '64px';
+ buttons.style.bottom = '0px';
+ buttons.style.height = '60px';
+ buttons.style.textAlign = 'center';
+
+ mxUtils.write(top, title);
+
+ div.appendChild(top);
+ div.appendChild(main);
+ div.appendChild(buttons);
if (header != null)
{
- td.appendChild(header);
+ top.appendChild(header);
}
- row.appendChild(td);
- tbody.appendChild(row);
-
- row = document.createElement('tr');
- td = document.createElement('td');
-
var nameInput = document.createElement('textarea');
if (noWrap)
@@ -473,8 +487,13 @@ var TextareaDialog = function(editorUi, title, url, fn, cancelFn, cancelTitle, w
mxUtils.write(nameInput, url || '');
nameInput.style.resize = 'none';
- nameInput.style.width = w + 'px';
- nameInput.style.height = h + 'px';
+ nameInput.style.outline = 'none';
+ nameInput.style.position = 'absolute';
+ nameInput.style.boxSizing = 'border-box';
+ nameInput.style.top = '0px';
+ nameInput.style.left = '0px';
+ nameInput.style.height = '100%';
+ nameInput.style.width = '100%';
this.textarea = nameInput;
@@ -484,17 +503,8 @@ var TextareaDialog = function(editorUi, title, url, fn, cancelFn, cancelTitle, w
nameInput.scrollTop = 0;
};
- td.appendChild(nameInput);
- row.appendChild(td);
-
- tbody.appendChild(row);
+ main.appendChild(nameInput);
- row = document.createElement('tr');
- td = document.createElement('td');
- td.style.paddingTop = '14px';
- td.style.whiteSpace = 'nowrap';
- td.setAttribute('align', 'right');
-
if (helpLink != null)
{
var helpBtn = mxUtils.button(mxResources.get('help'), function()
@@ -503,7 +513,7 @@ var TextareaDialog = function(editorUi, title, url, fn, cancelFn, cancelTitle, w
});
helpBtn.className = 'geBtn';
- td.appendChild(helpBtn);
+ buttons.appendChild(helpBtn);
}
if (customButtons != null)
@@ -524,7 +534,7 @@ var TextareaDialog = function(editorUi, title, url, fn, cancelFn, cancelTitle, w
customBtn.className = 'geBtn';
- td.appendChild(customBtn);
+ buttons.appendChild(customBtn);
})(customButtons[i][0], customButtons[i][1], customButtons[i][2]);
}
}
@@ -544,12 +554,12 @@ var TextareaDialog = function(editorUi, title, url, fn, cancelFn, cancelTitle, w
if (editorUi.editor.cancelFirst)
{
- td.appendChild(cancelBtn);
+ buttons.appendChild(cancelBtn);
}
if (addButtons != null)
{
- addButtons(td, nameInput);
+ addButtons(buttons, nameInput);
}
if (fn != null)
@@ -566,7 +576,7 @@ var TextareaDialog = function(editorUi, title, url, fn, cancelFn, cancelTitle, w
genericBtn.setAttribute('title', 'Ctrl+Enter');
genericBtn.className = 'geBtn gePrimaryBtn';
- td.appendChild(genericBtn);
+ buttons.appendChild(genericBtn);
mxEvent.addListener(nameInput, 'keypress', function(e)
{
@@ -579,13 +589,10 @@ var TextareaDialog = function(editorUi, title, url, fn, cancelFn, cancelTitle, w
if (!editorUi.editor.cancelFirst)
{
- td.appendChild(cancelBtn);
+ buttons.appendChild(cancelBtn);
}
- row.appendChild(td);
- tbody.appendChild(row);
- table.appendChild(tbody);
- this.container = table;
+ this.container = div;
};
/**
diff --git a/src/main/webapp/js/grapheditor/EditorUi.js b/src/main/webapp/js/grapheditor/EditorUi.js
index 7bcd0a0d..91e433e7 100644
--- a/src/main/webapp/js/grapheditor/EditorUi.js
+++ b/src/main/webapp/js/grapheditor/EditorUi.js
@@ -3245,8 +3245,10 @@ EditorUi.prototype.initCanvas = function()
forcedZoom = force;
var factor = graph.zoomFactor;
- // Slower zoom for pinch gesture on trackpad
- if (evt.deltaY != null && Math.round(evt.deltaY) != evt.deltaY)
+ // Slower zoom for pinch gesture on trackpad with max delta to
+ // filter out mouse wheel events in Brave browser for Windows
+ if (evt.deltaY != null && Math.abs(evt.deltaY) < 40 &&
+ Math.round(evt.deltaY) != evt.deltaY)
{
factor = 1 + (Math.abs(evt.deltaY) / 20) * (factor - 1);
}
@@ -4053,7 +4055,8 @@ EditorUi.prototype.updateActionStates = function()
'editStyle', 'editTooltip', 'editLink', 'backgroundColor', 'borderColor',
'edit', 'toFront', 'toBack', 'solid', 'dashed', 'pasteSize',
'dotted', 'fillColor', 'gradientColor', 'shadow', 'fontColor',
- 'formattedText', 'rounded', 'toggleRounded', 'sharp', 'strokeColor'];
+ 'formattedText', 'rounded', 'toggleRounded', 'strokeColor',
+ 'sharp', 'snapToGrid'];
for (var i = 0; i < actions.length; i++)
{
@@ -4064,13 +4067,13 @@ EditorUi.prototype.updateActionStates = function()
this.actions.get('pasteSize').setEnabled(this.copiedSize != null && ss.vertices.length > 0);
this.actions.get('pasteData').setEnabled(this.copiedValue != null && ss.cells.length > 0);
this.actions.get('setAsDefaultStyle').setEnabled(graph.getSelectionCount() == 1);
- this.actions.get('copySize').setEnabled(graph.getSelectionCount() == 1);
this.actions.get('lockUnlock').setEnabled(!graph.isSelectionEmpty());
this.actions.get('bringForward').setEnabled(ss.cells.length == 1);
this.actions.get('sendBackward').setEnabled(ss.cells.length == 1);
this.actions.get('rotation').setEnabled(ss.vertices.length == 1);
this.actions.get('wordWrap').setEnabled(ss.vertices.length == 1);
this.actions.get('autosize').setEnabled(ss.vertices.length == 1);
+ this.actions.get('copySize').setEnabled(ss.vertices.length == 1);
this.actions.get('clearWaypoints').setEnabled(ss.connections);
this.actions.get('curved').setEnabled(ss.edges.length > 0);
this.actions.get('turn').setEnabled(ss.resizable);
@@ -4114,7 +4117,7 @@ EditorUi.prototype.updateActionStates = function()
this.menus.get('distribute').setEnabled(ss.unlocked &&
ss.vertices.length > 1);
this.menus.get('align').setEnabled(ss.unlocked &&
- ss.vertices.length > 1);
+ ss.cells.length > 0);
this.updatePasteActionStates();
};
diff --git a/src/main/webapp/js/grapheditor/Format.js b/src/main/webapp/js/grapheditor/Format.js
index 396b4dcb..cdf287ad 100644
--- a/src/main/webapp/js/grapheditor/Format.js
+++ b/src/main/webapp/js/grapheditor/Format.js
@@ -606,6 +606,7 @@ BaseFormatPanel.prototype.addAction = function(div, name)
*/
BaseFormatPanel.prototype.addActions = function(div, names)
{
+ var lastBr = null;
var last = null;
var count = 0;
@@ -622,17 +623,14 @@ BaseFormatPanel.prototype.addActions = function(div, names)
last.style.marginRight = '2px';
last.style.width = '104px';
btn.style.width = '104px';
+ lastBr.parentNode.removeChild(lastBr);
}
+ lastBr = mxUtils.br(div);
last = btn;
}
}
- if (count > 0)
- {
- mxUtils.br(div);
- }
-
return count;
};
@@ -1452,6 +1450,7 @@ ArrangePanel.prototype.init = function()
if (ss.cells.length > 0)
{
this.container.appendChild(this.addLayerOps(this.createPanel()));
+
// Special case that adds two panels
this.addGeometry(this.container);
this.addEdgeGeometry(this.container);
@@ -1461,16 +1460,15 @@ ArrangePanel.prototype.init = function()
this.container.appendChild(this.addAngle(this.createPanel()));
}
- if (!ss.containsLabel && ss.edges.length == 0 &&
- ss.style.shape != 'rectangle' &&
- ss.style.shape != 'label')
+ if (!ss.containsLabel)
{
this.container.appendChild(this.addFlip(this.createPanel()));
}
+
+ this.container.appendChild(this.addAlign(this.createPanel()));
if (ss.vertices.length > 1 && !ss.cell && !ss.row)
{
- this.container.appendChild(this.addAlign(this.createPanel()));
this.container.appendChild(this.addDistribute(this.createPanel()));
}
@@ -1736,9 +1734,8 @@ ArrangePanel.prototype.addGroupOps = function(div)
if (!ss.cell && !ss.row)
{
- count += this.addActions(div, ['group', 'ungroup']) +
- this.addActions(div, ['removeFromGroup']) +
- this.addActions(div, ['copySize', 'pasteSize']);
+ count += this.addActions(div, ['group', 'ungroup', 'copySize', 'pasteSize']) +
+ this.addActions(div, ['removeFromGroup']);
}
var copyBtn = null;
@@ -1834,36 +1831,43 @@ ArrangePanel.prototype.addGroupOps = function(div)
*/
ArrangePanel.prototype.addAlign = function(div)
{
+ var ss = this.editorUi.getSelectionState();
var graph = this.editorUi.editor.graph;
div.style.paddingTop = '6px';
- div.style.paddingBottom = '12px';
+ div.style.paddingBottom = '8px';
div.appendChild(this.createTitle(mxResources.get('align')));
var stylePanel = document.createElement('div');
stylePanel.style.position = 'relative';
stylePanel.style.whiteSpace = 'nowrap';
stylePanel.style.paddingLeft = '0px';
+ stylePanel.style.paddingBottom = '2px';
stylePanel.style.borderWidth = '0px';
stylePanel.style.width = '220px';
stylePanel.className = 'geToolbarContainer';
-
- var left = this.editorUi.toolbar.addButton('geSprite-alignleft', mxResources.get('left'),
- function() { graph.alignCells(mxConstants.ALIGN_LEFT); }, stylePanel);
- var center = this.editorUi.toolbar.addButton('geSprite-aligncenter', mxResources.get('center'),
- function() { graph.alignCells(mxConstants.ALIGN_CENTER); }, stylePanel);
- var right = this.editorUi.toolbar.addButton('geSprite-alignright', mxResources.get('right'),
- function() { graph.alignCells(mxConstants.ALIGN_RIGHT); }, stylePanel);
-
- var top = this.editorUi.toolbar.addButton('geSprite-aligntop', mxResources.get('top'),
- function() { graph.alignCells(mxConstants.ALIGN_TOP); }, stylePanel);
- var middle = this.editorUi.toolbar.addButton('geSprite-alignmiddle', mxResources.get('middle'),
- function() { graph.alignCells(mxConstants.ALIGN_MIDDLE); }, stylePanel);
- var bottom = this.editorUi.toolbar.addButton('geSprite-alignbottom', mxResources.get('bottom'),
- function() { graph.alignCells(mxConstants.ALIGN_BOTTOM); }, stylePanel);
-
- this.styleButtons([left, center, right, top, middle, bottom]);
- right.style.marginRight = '10px';
+
+ if (ss.vertices.length > 1)
+ {
+ var left = this.editorUi.toolbar.addButton('geSprite-alignleft', mxResources.get('left'),
+ function() { graph.alignCells(mxConstants.ALIGN_LEFT); }, stylePanel);
+ var center = this.editorUi.toolbar.addButton('geSprite-aligncenter', mxResources.get('center'),
+ function() { graph.alignCells(mxConstants.ALIGN_CENTER); }, stylePanel);
+ var right = this.editorUi.toolbar.addButton('geSprite-alignright', mxResources.get('right'),
+ function() { graph.alignCells(mxConstants.ALIGN_RIGHT); }, stylePanel);
+
+ var top = this.editorUi.toolbar.addButton('geSprite-aligntop', mxResources.get('top'),
+ function() { graph.alignCells(mxConstants.ALIGN_TOP); }, stylePanel);
+ var middle = this.editorUi.toolbar.addButton('geSprite-alignmiddle', mxResources.get('middle'),
+ function() { graph.alignCells(mxConstants.ALIGN_MIDDLE); }, stylePanel);
+ var bottom = this.editorUi.toolbar.addButton('geSprite-alignbottom', mxResources.get('bottom'),
+ function() { graph.alignCells(mxConstants.ALIGN_BOTTOM); }, stylePanel);
+
+ this.styleButtons([left, center, right, top, middle, bottom]);
+ right.style.marginRight = '10px';
+ }
+
div.appendChild(stylePanel);
+ this.addActions(div, ['snapToGrid']);
return div;
};
@@ -1878,6 +1882,7 @@ ArrangePanel.prototype.addFlip = function(div)
var graph = editor.graph;
div.style.paddingTop = '6px';
div.style.paddingBottom = '10px';
+ var ss = this.editorUi.getSelectionState();
var span = document.createElement('div');
span.style.marginTop = '2px';
@@ -1888,7 +1893,7 @@ ArrangePanel.prototype.addFlip = function(div)
var btn = mxUtils.button(mxResources.get('horizontal'), function(evt)
{
- graph.toggleCellStyles(mxConstants.STYLE_FLIPH, false);
+ graph.flipCells(ss.cells, true);
})
btn.setAttribute('title', mxResources.get('horizontal'));
@@ -1898,7 +1903,7 @@ ArrangePanel.prototype.addFlip = function(div)
var btn = mxUtils.button(mxResources.get('vertical'), function(evt)
{
- graph.toggleCellStyles(mxConstants.STYLE_FLIPV, false);
+ graph.flipCells(ss.cells, false);
})
btn.setAttribute('title', mxResources.get('vertical'));
@@ -6319,7 +6324,8 @@ DiagramFormatPanel.prototype.addView = function(div)
}, function(color)
{
var change = new ChangePageSetup(ui, color);
- change.ignoreImage = true;
+ change.ignoreImage = color != null &&
+ color != mxConstants.NONE;
graph.model.execute(change);
}, '#ffffff',
diff --git a/src/main/webapp/js/grapheditor/Graph.js b/src/main/webapp/js/grapheditor/Graph.js
index 5e52bd7a..2e50741a 100644
--- a/src/main/webapp/js/grapheditor/Graph.js
+++ b/src/main/webapp/js/grapheditor/Graph.js
@@ -4017,9 +4017,44 @@ Graph.prototype.selectTableRange = function(startCell, endCell)
/**
* Returns the cells for the given table range.
*/
-Graph.prototype.getTableRange = function(start, end)
+Graph.prototype.snapCellsToGrid = function(cells, gridSize)
{
+ this.getModel().beginUpdate();
+ try
+ {
+ for (var i = 0; i < cells.length; i++)
+ {
+ var cell = cells[i];
+ var geo = this.getCellGeometry(cell);
+
+ if (geo != null)
+ {
+ geo = geo.clone();
+
+ if (this.getModel().isVertex(cell))
+ {
+ geo.x = Math.round(geo.x / gridSize) * gridSize;
+ geo.y = Math.round(geo.y / gridSize) * gridSize;
+ geo.width = Math.round(geo.width / gridSize) * gridSize;
+ geo.height = Math.round(geo.height / gridSize) * gridSize;
+ }
+ else if (this.getModel().isEdge(cell) && geo.points != null)
+ {
+ for (var j = 0; j < geo.points.length; j++)
+ {
+ geo.points[j].x = Math.round(geo.points[j].x / gridSize) * gridSize;
+ geo.points[j].y = Math.round(geo.points[j].y / gridSize) * gridSize;
+ }
+ }
+ this.getModel().setGeometry(cell, geo);
+ }
+ }
+ }
+ finally
+ {
+ this.getModel().endUpdate();
+ }
};
/**
@@ -7548,7 +7583,7 @@ mxStencilRegistry.parseStencilSet = function(root, postStencilLoad, install)
/**
* These overrides are only added if mxVertexHandler is defined (ie. not in embedded graph)
*/
-if (typeof mxVertexHandler != 'undefined')
+if (typeof mxVertexHandler !== 'undefined')
{
(function()
{
@@ -10445,6 +10480,149 @@ if (typeof mxVertexHandler != 'undefined')
};
/**
+ * Flips the given cells horizontally or vertically.
+ */
+ Graph.prototype.flipEdge = function(cell, horizontal, c)
+ {
+ var geo = this.getCellGeometry(cell);
+
+ if (geo != null)
+ {
+ geo = geo.clone();
+
+ if (geo.points != null)
+ {
+ for (var i = 0; i < geo.points.length; i++)
+ {
+ if (horizontal)
+ {
+ geo.points[i].x = c + (c - geo.points[i].x);
+ }
+ else
+ {
+ geo.points[i].y = c + (c - geo.points[i].y);
+ }
+ }
+ }
+
+ var flipTerminalPoint = function(pt)
+ {
+ if (pt != null)
+ {
+ if (horizontal)
+ {
+ pt.x = c + (c - pt.x);
+ }
+ else
+ {
+ pt.y = c + (c - pt.y);
+ }
+ }
+ };
+
+ flipTerminalPoint(geo.getTerminalPoint(true));
+ flipTerminalPoint(geo.getTerminalPoint(false));
+
+ this.model.setGeometry(cell, geo);
+ }
+ };
+
+ /**
+ * Flips the given cells horizontally or vertically.
+ */
+ Graph.prototype.flipChildren = function(cell, horizontal, c)
+ {
+ this.model.beginUpdate();
+ try
+ {
+ var childCount = this.model.getChildCount(cell);
+
+ for (var i = 0; i < childCount; i++)
+ {
+ var child = this.model.getChildAt(cell, i);
+
+ if (this.model.isEdge(child))
+ {
+ this.flipEdge(child, horizontal, c);
+ }
+ else
+ {
+ var geo = this.getCellGeometry(child);
+
+ if (geo != null)
+ {
+ geo = geo.clone();
+
+ if (horizontal)
+ {
+ geo.x = c + (c - geo.x - geo.width);
+ }
+ else
+ {
+ geo.y = c + (c - geo.y - geo.height);
+ }
+
+ this.model.setGeometry(child, geo);
+ }
+ }
+ }
+ }
+ finally
+ {
+ this.model.endUpdate();
+ }
+ };
+
+ /**
+ * Flips the given cells horizontally or vertically.
+ */
+ Graph.prototype.flipCells = function(cells, horizontal)
+ {
+ this.model.beginUpdate();
+ try
+ {
+ cells = this.model.getTopmostCells(cells);
+ var vertices = [];
+
+ for (var i = 0; i < cells.length; i++)
+ {
+ if (this.model.isEdge(cells[i]))
+ {
+ var state = this.view.getState(cells[i]);
+
+ if (state != null)
+ {
+ this.flipEdge(cells[i], horizontal, ((horizontal ? state.getCenterX() :
+ state.getCenterY()) / this.view.scale) - ((horizontal) ?
+ state.origin.x : state.origin.y) - ((horizontal) ?
+ this.view.translate.x : this.view.translate.y));
+ }
+ }
+ else
+ {
+ var geo = this.getCellGeometry(cells[i]);
+
+ if (geo != null)
+ {
+ this.flipChildren(cells[i], horizontal, horizontal ?
+ geo.getCenterX() - geo.x :
+ geo.getCenterY() - geo.y);
+ }
+
+ vertices.push(cells[i]);
+ }
+ }
+
+ this.toggleCellStyles(horizontal ? mxConstants.STYLE_FLIPH :
+ mxConstants.STYLE_FLIPV, false, vertices);
+ }
+ finally
+ {
+ this.model.endUpdate();
+ }
+ };
+
+ /**
* Deletes the given cells and returns the cells to be selected.
*/
Graph.prototype.deleteCells = function(cells, includeEdges)
diff --git a/src/main/webapp/js/grapheditor/Menus.js b/src/main/webapp/js/grapheditor/Menus.js
index 243a8b06..28373d75 100644
--- a/src/main/webapp/js/grapheditor/Menus.js
+++ b/src/main/webapp/js/grapheditor/Menus.js
@@ -258,13 +258,16 @@ Menus.prototype.init = function()
})));
this.put('align', new Menu(mxUtils.bind(this, function(menu, parent)
{
- menu.addItem(mxResources.get('leftAlign'), null, function() { graph.alignCells(mxConstants.ALIGN_LEFT); }, parent);
- menu.addItem(mxResources.get('center'), null, function() { graph.alignCells(mxConstants.ALIGN_CENTER); }, parent);
- menu.addItem(mxResources.get('rightAlign'), null, function() { graph.alignCells(mxConstants.ALIGN_RIGHT); }, parent);
+ var ss = this.editorUi.getSelectionState();
+ var enabled = ss.vertices.length > 1;
+ menu.addItem(mxResources.get('leftAlign'), null, function() { graph.alignCells(mxConstants.ALIGN_LEFT); }, parent, null, enabled);
+ menu.addItem(mxResources.get('center'), null, function() { graph.alignCells(mxConstants.ALIGN_CENTER); }, parent, null, enabled);
+ menu.addItem(mxResources.get('rightAlign'), null, function() { graph.alignCells(mxConstants.ALIGN_RIGHT); }, parent, null, enabled);
menu.addSeparator(parent);
- menu.addItem(mxResources.get('topAlign'), null, function() { graph.alignCells(mxConstants.ALIGN_TOP); }, parent);
- menu.addItem(mxResources.get('middle'), null, function() { graph.alignCells(mxConstants.ALIGN_MIDDLE); }, parent);
- menu.addItem(mxResources.get('bottomAlign'), null, function() { graph.alignCells(mxConstants.ALIGN_BOTTOM); }, parent);
+ menu.addItem(mxResources.get('topAlign'), null, function() { graph.alignCells(mxConstants.ALIGN_TOP); }, parent, null, enabled);
+ menu.addItem(mxResources.get('middle'), null, function() { graph.alignCells(mxConstants.ALIGN_MIDDLE); }, parent, null, enabled);
+ menu.addItem(mxResources.get('bottomAlign'), null, function() { graph.alignCells(mxConstants.ALIGN_BOTTOM); }, parent, null, enabled);
+ this.addMenuItems(menu, ['-', 'snapToGrid'], parent);
})));
this.put('distribute', new Menu(mxUtils.bind(this, function(menu, parent)
{
diff --git a/src/main/webapp/js/viewer-static.min.js b/src/main/webapp/js/viewer-static.min.js
index a5f6da7f..43e41943 100644
--- a/src/main/webapp/js/viewer-static.min.js
+++ b/src/main/webapp/js/viewer-static.min.js
@@ -202,7 +202,7 @@ a),DRAWIO_GITLAB_URL=a);a=urlParams["gitlab-id"];null!=a&&(DRAWIO_GITLAB_ID=a);w
if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==urlParams.local||"1"==urlParams.lockdown)urlParams.picker="0",urlParams.gapi="0",urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0";
"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.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:"16.2.7",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.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:"16.3.0",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]"!==
@@ -229,7 +229,7 @@ unescape(c)):mxResources.resources[d]=c}}}},get:function(a,b,c){a=mxResources.re
mxRectangle.prototype.height=null;mxRectangle.prototype.setRect=function(a,b,c,d){this.x=a;this.y=b;this.width=c;this.height=d};mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2};mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2};
mxRectangle.prototype.add=function(a){if(null!=a){var b=Math.min(this.x,a.x),c=Math.min(this.y,a.y),d=Math.max(this.x+this.width,a.x+a.width);a=Math.max(this.y+this.height,a.y+a.height);this.x=b;this.y=c;this.width=d-b;this.height=a-c}};mxRectangle.prototype.intersect=function(a){if(null!=a){var b=this.x+this.width,c=a.x+a.width,d=this.y+this.height,e=a.y+a.height;this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.width=Math.min(b,c)-this.x;this.height=Math.min(d,e)-this.y}};
mxRectangle.prototype.grow=function(a){this.x-=a;this.y-=a;this.width+=2*a;this.height+=2*a;return this};mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)};mxRectangle.prototype.rotate90=function(){var a=(this.width-this.height)/2;this.x+=a;this.y-=a;a=this.width;this.width=this.height;this.height=a};mxRectangle.prototype.equals=function(a){return null!=a&&a.x==this.x&&a.y==this.y&&a.width==this.width&&a.height==this.height};
-mxRectangle.fromRectangle=function(a){return new mxRectangle(a.x,a.y,a.width,a.height)};
+mxRectangle.fromPoint=function(a){return new mxRectangle(a.x,a.y,0,0)};mxRectangle.fromRectangle=function(a){return new mxRectangle(a.x,a.y,a.width,a.height)};
var mxEffects={animateChanges:function(a,b,c){var d=0,e=function(){for(var g=!1,k=0;k<b.length;k++){var l=b[k];if(l instanceof mxGeometryChange||l instanceof mxTerminalChange||l instanceof mxValueChange||l instanceof mxChildChange||l instanceof mxStyleChange){var m=a.getView().getState(l.cell||l.child,!1);if(null!=m)if(g=!0,l.constructor!=mxGeometryChange||a.model.isEdge(l.cell))mxUtils.setOpacity(m.shape.node,100*d/10);else{var n=a.getView().scale,p=(l.geometry.x-l.previous.x)*n,q=(l.geometry.y-
l.previous.y)*n,r=(l.geometry.width-l.previous.width)*n,n=(l.geometry.height-l.previous.height)*n;0==d?(m.x-=p,m.y-=q,m.width-=r,m.height-=n):(m.x+=p/10,m.y+=q/10,m.width+=r/10,m.height+=n/10);a.cellRenderer.redraw(m);mxEffects.cascadeOpacity(a,l.cell,100*d/10)}}}10>d&&g?(d++,window.setTimeout(e,f)):null!=c&&c()},f=30;e()},cascadeOpacity:function(a,b,c){for(var d=a.model.getChildCount(b),e=0;e<d;e++){var f=a.model.getChildAt(b,e),g=a.getView().getState(f);null!=g&&(mxUtils.setOpacity(g.shape.node,
c),mxEffects.cascadeOpacity(a,f,c))}b=a.model.getEdges(b);if(null!=b)for(e=0;e<b.length;e++)d=a.getView().getState(b[e]),null!=d&&mxUtils.setOpacity(d.shape.node,c)},fadeOut:function(a,b,c,d,e,f){d=d||40;e=e||30;var g=b||100;mxUtils.setOpacity(a,g);if(f||null==f){var k=function(){g=Math.max(g-d,0);mxUtils.setOpacity(a,g);0<g?window.setTimeout(k,e):(a.style.visibility="hidden",c&&a.parentNode&&a.parentNode.removeChild(a))};window.setTimeout(k,e)}else a.style.visibility="hidden",c&&a.parentNode&&a.parentNode.removeChild(a)}},
@@ -2113,8 +2113,8 @@ e.height==g.format.height?(d.value=g.key,l.setAttribute("checked","checked"),l.d
d.value="custom",k.style.display="none",p.style.display="")}}c="format-"+c;var l=document.createElement("input");l.setAttribute("name",c);l.setAttribute("type","radio");l.setAttribute("value","portrait");var q=document.createElement("input");q.setAttribute("name",c);q.setAttribute("type","radio");q.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";var k=
document.createElement("div");k.style.marginLeft="4px";k.style.width="210px";k.style.height="24px";l.style.marginRight="6px";k.appendChild(l);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));k.appendChild(c);q.style.marginLeft="10px";q.style.marginRight="6px";k.appendChild(q);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));k.appendChild(g);var p=document.createElement("div");p.style.marginLeft=
"4px";p.style.width="210px";p.style.height="24px";var m=document.createElement("input");m.setAttribute("size","7");m.style.textAlign="right";p.appendChild(m);mxUtils.write(p," in x ");var v=document.createElement("input");v.setAttribute("size","7");v.style.textAlign="right";p.appendChild(v);mxUtils.write(p," in");k.style.display="none";p.style.display="none";for(var u={},t=PageSetupDialog.getFormats(),z=0;z<t.length;z++){var y=t[z];u[y.key]=y;var F=document.createElement("option");F.setAttribute("value",
-y.key);mxUtils.write(F,y.title);d.appendChild(F)}var D=!1;n();b.appendChild(d);mxUtils.br(b);b.appendChild(k);b.appendChild(p);var E=e,H=function(b,g){var c=u[d.value];null!=c.format?(m.value=c.format.width/100,v.value=c.format.height/100,p.style.display="none",k.style.display=""):(k.style.display="none",p.style.display="");c=parseFloat(m.value);if(isNaN(c)||0>=c)m.value=e.width/100;c=parseFloat(v.value);if(isNaN(c)||0>=c)v.value=e.height/100;c=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
-Math.floor(100*parseFloat(v.value)));"custom"!=d.value&&q.checked&&(c=new mxRectangle(0,0,c.height,c.width));g&&D||c.width==E.width&&c.height==E.height||(E=c,null!=f&&f(E))};mxEvent.addListener(c,"click",function(b){l.checked=!0;H(b);mxEvent.consume(b)});mxEvent.addListener(g,"click",function(b){q.checked=!0;H(b);mxEvent.consume(b)});mxEvent.addListener(m,"blur",H);mxEvent.addListener(m,"click",H);mxEvent.addListener(v,"blur",H);mxEvent.addListener(v,"click",H);mxEvent.addListener(q,"change",H);mxEvent.addListener(l,
+y.key);mxUtils.write(F,y.title);d.appendChild(F)}var D=!1;n();b.appendChild(d);mxUtils.br(b);b.appendChild(k);b.appendChild(p);var E=e,H=function(b,c){var g=u[d.value];null!=g.format?(m.value=g.format.width/100,v.value=g.format.height/100,p.style.display="none",k.style.display=""):(k.style.display="none",p.style.display="");g=parseFloat(m.value);if(isNaN(g)||0>=g)m.value=e.width/100;g=parseFloat(v.value);if(isNaN(g)||0>=g)v.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
+Math.floor(100*parseFloat(v.value)));"custom"!=d.value&&q.checked&&(g=new mxRectangle(0,0,g.height,g.width));c&&D||g.width==E.width&&g.height==E.height||(E=g,null!=f&&f(E))};mxEvent.addListener(c,"click",function(b){l.checked=!0;H(b);mxEvent.consume(b)});mxEvent.addListener(g,"click",function(b){q.checked=!0;H(b);mxEvent.consume(b)});mxEvent.addListener(m,"blur",H);mxEvent.addListener(m,"click",H);mxEvent.addListener(v,"blur",H);mxEvent.addListener(v,"click",H);mxEvent.addListener(q,"change",H);mxEvent.addListener(l,
"change",H);mxEvent.addListener(d,"change",function(b){D="custom"==d.value;H(b,!0)});H();return{set:function(b){e=b;n(null,null,!0)},get:function(){return E},widthInput:m,heightInput:v}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
@@ -2153,7 +2153,7 @@ q="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeig
{};this.fireEvent(new mxEventObject("styleChanged","keys",g,"values",c,"cells",[b]))}catch(S){this.handleError(S)}};this.clearDefaultStyle=function(){f.currentEdgeStyle=mxUtils.clone(f.defaultEdgeStyle);f.currentVertexStyle=mxUtils.clone(f.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var k=["fontFamily","fontSource","fontSize","fontColor"];for(c=0;c<k.length;c++)0>mxUtils.indexOf(l,k[c])&&l.push(k[c]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),
p=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(c=0;c<p.length;c++)for(e=0;e<p[c].length;e++)l.push(p[c][e]);for(c=0;c<q.length;c++)0>mxUtils.indexOf(l,q[c])&&l.push(q[c]);var m=function(b,c,g,k,e,m,x){k=null!=k?k:f.currentVertexStyle;e=null!=e?e:f.currentEdgeStyle;m=null!=m?m:!0;g=null!=g?g:f.getModel();if(x){x=[];
for(var v=0;v<b.length;v++)x=x.concat(g.getDescendants(b[v]));b=x}g.beginUpdate();try{for(v=0;v<b.length;v++){var t=b[v],u;if(c)u=["fontSize","fontFamily","fontColor"];else{var n=g.getStyle(t),y=null!=n?n.split(";"):[];u=l.slice();for(var q=0;q<y.length;q++){var z=y[q],O=z.indexOf("=");if(0<=O){var A=z.substring(0,O),X=mxUtils.indexOf(u,A);0<=X&&u.splice(X,1);for(x=0;x<p.length;x++){var K=p[x];if(0<=mxUtils.indexOf(K,A))for(var S=0;S<K.length;S++){var F=mxUtils.indexOf(u,K[S]);0<=F&&u.splice(F,1)}}}}}var H=
-g.isEdge(t);x=H?e:k;for(var G=g.getStyle(t),q=0;q<u.length;q++){var A=u[q],ba=x[A];null!=ba&&"edgeStyle"!=A&&("shape"!=A||H)&&(!H||m||0>mxUtils.indexOf(d,A))&&(G=mxUtils.setStyle(G,A,ba))}Editor.simpleLabels&&(G=mxUtils.setStyle(mxUtils.setStyle(G,"html",null),"whiteSpace",null));g.setStyle(t,G)}}finally{g.endUpdate()}return b};f.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});f.addListener("textInserted",function(b,d){m(d.getProperty("cells"),!0)});
+g.isEdge(t);x=H?e:k;for(var G=g.getStyle(t),q=0;q<u.length;q++){var A=u[q],ca=x[A];null!=ca&&"edgeStyle"!=A&&("shape"!=A||H)&&(!H||m||0>mxUtils.indexOf(d,A))&&(G=mxUtils.setStyle(G,A,ca))}Editor.simpleLabels&&(G=mxUtils.setStyle(mxUtils.setStyle(G,"html",null),"whiteSpace",null));g.setStyle(t,G)}}finally{g.endUpdate()}return b};f.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});f.addListener("textInserted",function(b,d){m(d.getProperty("cells"),!0)});
this.insertHandler=m;this.createDivs();this.createUi();this.refresh();var v=mxUtils.bind(this,function(b){null==b&&(b=window.event);return f.isEditing()||null!=b&&this.isSelectionAllowed(b)});this.container==document.body&&(this.menubarContainer.onselectstart=v,this.menubarContainer.onmousedown=v,this.toolbarContainer.onselectstart=v,this.toolbarContainer.onmousedown=v,this.diagramContainer.onselectstart=v,this.diagramContainer.onmousedown=v,this.sidebarContainer.onselectstart=v,this.sidebarContainer.onmousedown=
v,this.formatContainer.onselectstart=v,this.formatContainer.onmousedown=v,this.footerContainer.onselectstart=v,this.footerContainer.onmousedown=v,null!=this.tabContainer&&(this.tabContainer.onselectstart=v));!this.editor.chromeless||this.editor.editable?(c=function(b){if(null!=b){var d=mxEvent.getSource(b);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)return!0;d=d.parentNode}}return v(b)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,
"contextmenu",c):this.diagramContainer.oncontextmenu=c):f.panningHandler.usePopupTrigger=!1;f.init(this.diagramContainer);mxClient.IS_SVG&&null!=f.view.getDrawPane()&&(c=f.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=f.graphHandler){var u=f.graphHandler.start;f.graphHandler.start=function(){null!=I.hoverIcons&&I.hoverIcons.reset();u.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,
@@ -2213,13 +2213,13 @@ e==mxConstants.ARROW_DIAMOND_THIN?"1"==f?"geSprite geSprite-"+b+"thindiamond":"g
e?"geSprite geSprite-"+b+"eronetoone":"ERmany"==e?"geSprite geSprite-"+b+"ermany":"ERoneToMany"==e?"geSprite geSprite-"+b+"eronetomany":"ERzeroToOne"==e?"geSprite geSprite-"+b+"eroneopt":"ERzeroToMany"==e?"geSprite geSprite-"+b+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null};
EditorUi.prototype.updatePasteActionStates=function(){var b=this.editor.graph,c=this.actions.get("paste"),e=this.actions.get("pasteHere");c.setEnabled(this.editor.graph.cellEditor.isContentEditing()||(!mxClient.IS_FF&&null!=navigator.clipboard||!mxClipboard.isEmpty())&&b.isEnabled()&&!b.isCellLocked(b.getDefaultParent()));e.setEnabled(c.isEnabled())};
EditorUi.prototype.initClipboard=function(){var b=this,c=mxClipboard.cut;mxClipboard.cut=function(e){e.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);b.updatePasteActionStates()};mxClipboard.copy=function(c){var e=null;if(c.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var e=e||c.getSelectionCells(),e=c.getExportableCells(c.model.getTopmostCells(e)),d={},k=c.createCellLookup(e),g=c.cloneCells(e,null,d),f=new mxGraphModel,m=f.getChildAt(f.getRoot(),
-0),l=0;l<g.length;l++){f.add(m,g[l]);var u=c.view.getState(e[l]);if(null!=u){var t=c.getCellGeometry(g[l]);null!=t&&t.relative&&!f.isEdge(e[l])&&null==k[mxObjectIdentity.get(f.getParent(e[l]))]&&(t.offset=null,t.relative=!1,t.x=u.x/u.view.scale-u.view.translate.x,t.y=u.y/u.view.scale-u.view.translate.y)}}c.updateCustomLinks(c.createCellMapping(d,k),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}b.updatePasteActionStates();return e};var e=mxClipboard.paste;mxClipboard.paste=function(c){var f=
+0),l=0;l<g.length;l++){f.add(m,g[l]);var n=c.view.getState(e[l]);if(null!=n){var t=c.getCellGeometry(g[l]);null!=t&&t.relative&&!f.isEdge(e[l])&&null==k[mxObjectIdentity.get(f.getParent(e[l]))]&&(t.offset=null,t.relative=!1,t.x=n.x/n.view.scale-n.view.translate.x,t.y=n.y/n.view.scale-n.view.translate.y)}}c.updateCustomLinks(c.createCellMapping(d,k),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}b.updatePasteActionStates();return e};var e=mxClipboard.paste;mxClipboard.paste=function(c){var f=
null;c.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):f=e.apply(this,arguments);b.updatePasteActionStates();return f};var f=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){f.apply(this,arguments);b.updatePasteActionStates()};var n=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(c,e){n.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 b=this.graph.getPageLayout(),d=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+b.x*d.width),this.scale*(this.translate.y+b.y*d.height),this.scale*b.width*d.width,
this.scale*b.height*d.height)};b.getPreferredPageSize=function(b,d,c){b=this.getPageLayout();d=this.getPageSize();return new mxRectangle(0,0,b.width*d.width,b.height*d.height)};var c=null,e=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(d,c,g,k){if(null!=b.container&&!b.isViewer()){g=null!=g?g:0;k=null!=k?k:0;var e=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),f=mxUtils.hasScrollbars(b.container),m=b.view.translate,p=b.view.scale,l=mxRectangle.fromRectangle(e);
-l.x=l.x/p-m.x;l.y=l.y/p-m.y;l.width/=p;l.height/=p;var m=b.container.scrollTop,v=b.container.scrollLeft,u=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)u+=3;var t=b.container.offsetWidth-u,u=b.container.offsetHeight-u;d=d?Math.max(.3,Math.min(c||1,t/l.width)):p;c=(t-d*l.width)/2/d;var n=0==this.lightboxVerticalDivider?0:(u-d*l.height)/this.lightboxVerticalDivider/d;f&&(c=Math.max(c,0),n=Math.max(n,0));if(f||e.width<t||e.height<u)b.view.scaleAndTranslate(d,Math.floor(c-
-l.x),Math.floor(n-l.y)),b.container.scrollTop=m*d/p,b.container.scrollLeft=v*d/p;else if(0!=g||0!=k)e=b.view.translate,b.view.setTranslate(Math.floor(e.x+g/p),Math.floor(e.y+k/p))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var f=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",f);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",f)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
+l.x=l.x/p-m.x;l.y=l.y/p-m.y;l.width/=p;l.height/=p;var m=b.container.scrollTop,v=b.container.scrollLeft,n=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)n+=3;var t=b.container.offsetWidth-n,n=b.container.offsetHeight-n;d=d?Math.max(.3,Math.min(c||1,t/l.width)):p;c=(t-d*l.width)/2/d;var u=0==this.lightboxVerticalDivider?0:(n-d*l.height)/this.lightboxVerticalDivider/d;f&&(c=Math.max(c,0),u=Math.max(u,0));if(f||e.width<t||e.height<n)b.view.scaleAndTranslate(d,Math.floor(c-
+l.x),Math.floor(u-l.y)),b.container.scrollTop=m*d/p,b.container.scrollLeft=v*d/p;else if(0!=g||0!=k)e=b.view.translate,b.view.setTranslate(Math.floor(e.x+g/p),Math.floor(e.y+k/p))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var f=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",f);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",f)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var n=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 l=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",l);l();var q=0,l=mxUtils.bind(this,function(b,d,c){q++;var g=document.createElement("span");g.style.paddingLeft="8px";g.style.paddingRight=
@@ -2247,8 +2247,8 @@ this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cu
G.removeAttribute("filter")),M=new mxPoint(b.container.scrollLeft,b.container.scrollTop),d=c||null==L?b.container.scrollLeft+b.container.clientWidth/2:L.x+b.container.scrollLeft-b.container.offsetLeft,k=c||null==L?b.container.scrollTop+b.container.clientHeight/2:L.y+b.container.scrollTop-b.container.offsetTop,G.style.transformOrigin=d+"px "+k+"px",G.style.transform="scale("+this.cumulativeZoomFactor+")",A.style.transformOrigin=d+"px "+k+"px",A.style.transform="scale("+this.cumulativeZoomFactor+")",
null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(d=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(d.style,"transform-origin",(c||null==L?b.container.clientWidth/2+b.container.scrollLeft-d.offsetLeft+"px":L.x+b.container.scrollLeft-d.offsetLeft-b.container.offsetLeft+"px")+" "+(c||null==L?b.container.clientHeight/2+b.container.scrollTop-d.offsetTop+"px":L.y+b.container.scrollTop-d.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(d.style,"transform",
"scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=e.hoverIcons&&e.hoverIcons.reset());U(g)};mxEvent.addGestureListeners(b.container,function(b){null!=I&&window.clearTimeout(I)},null,function(d){1!=b.cumulativeZoomFactor&&U(0)});mxEvent.addListener(b.container,"scroll",function(d){null==I||b.isMouseDown||1==b.cumulativeZoomFactor||U(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,c,g,k,e){b.fireEvent(new mxEventObject("wheel"));
-if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!g&&b.isScrollWheelEvent(d))g=b.view.getTranslate(),k=40/b.view.scale,mxEvent.isShiftDown(d)?b.view.setTranslate(g.x+(c?-k:k),g.y):b.view.setTranslate(g.x,g.y+(c?k:-k));else if(g||b.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==b.container)return b.tooltipHandler.hideTooltip(),L=null!=k&&null!=e?new mxPoint(k,e):new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)),K=g,g=b.zoomFactor,null!=d.deltaY&&Math.round(d.deltaY)!=
-d.deltaY&&(g=1+Math.abs(d.deltaY)/20*(g-1)),b.lazyZoom(c,null,null,g),mxEvent.consume(d),!1;f=f.parentNode}}),b.container);b.panningHandler.zoomGraph=function(d){b.cumulativeZoomFactor=d.scale;b.lazyZoom(0<d.scale,!0);mxEvent.consume(d)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
+if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!g&&b.isScrollWheelEvent(d))g=b.view.getTranslate(),k=40/b.view.scale,mxEvent.isShiftDown(d)?b.view.setTranslate(g.x+(c?-k:k),g.y):b.view.setTranslate(g.x,g.y+(c?k:-k));else if(g||b.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==b.container)return b.tooltipHandler.hideTooltip(),L=null!=k&&null!=e?new mxPoint(k,e):new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)),K=g,g=b.zoomFactor,null!=d.deltaY&&40>Math.abs(d.deltaY)&&
+Math.round(d.deltaY)!=d.deltaY&&(g=1+Math.abs(d.deltaY)/20*(g-1)),b.lazyZoom(c,null,null,g),mxEvent.consume(d),!1;f=f.parentNode}}),b.container);b.panningHandler.zoomGraph=function(d){b.cumulativeZoomFactor=d.scale;b.lazyZoom(0<d.scale,!0);mxEvent.consume(d)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),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 c=urlParams.border,e=60;null!=c&&(e=parseInt(c));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(e,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))};
@@ -2273,13 +2273,13 @@ EditorUi.prototype.setPageFormat=function(b,c){c=null!=c?c:"1"==urlParams.sketch
EditorUi.prototype.setPageScale=function(b){this.editor.graph.pageScale=b;this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct();this.fireEvent(new mxEventObject("pageScaleChanged"))};EditorUi.prototype.setGridColor=function(b){this.editor.graph.view.gridColor=b;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("gridColorChanged"))};
EditorUi.prototype.addUndoListener=function(){var b=this.actions.get("undo"),c=this.actions.get("redo"),e=this.editor.undoManager,f=mxUtils.bind(this,function(){b.setEnabled(this.canUndo());c.setEnabled(this.canRedo())});e.addListener(mxEvent.ADD,f);e.addListener(mxEvent.UNDO,f);e.addListener(mxEvent.REDO,f);e.addListener(mxEvent.CLEAR,f);var n=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){n.apply(this,arguments);f()};var l=this.editor.graph.cellEditor.stopEditing;
this.editor.graph.cellEditor.stopEditing=function(b,d){l.apply(this,arguments);f()};f()};
-EditorUi.prototype.updateActionStates=function(){for(var b=this.editor.graph,c=this.getSelectionState(),e=b.isEnabled()&&!b.isCellLocked(b.getDefaultParent()),f="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" "),n=0;n<f.length;n++)this.actions.get(f[n]).setEnabled(0<c.cells.length);this.actions.get("grid").setEnabled(!this.editor.chromeless||
-this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<c.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<c.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==b.getSelectionCount());this.actions.get("copySize").setEnabled(1==b.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!b.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==c.cells.length);this.actions.get("sendBackward").setEnabled(1==
-c.cells.length);this.actions.get("rotation").setEnabled(1==c.vertices.length);this.actions.get("wordWrap").setEnabled(1==c.vertices.length);this.actions.get("autosize").setEnabled(1==c.vertices.length);this.actions.get("clearWaypoints").setEnabled(c.connections);this.actions.get("curved").setEnabled(0<c.edges.length);this.actions.get("turn").setEnabled(c.resizable);this.actions.get("group").setEnabled(!c.row&&!c.cell&&(1<c.cells.length||1==c.vertices.length&&0==b.model.getChildCount(c.cells[0])&&
-!b.isContainer(c.vertices[0])));this.actions.get("ungroup").setEnabled(!c.row&&!c.cell&&!c.table&&0<c.vertices.length&&(b.isContainer(c.vertices[0])||0<b.getModel().getChildCount(c.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==c.cells.length&&b.getModel().isVertex(b.getModel().getParent(c.cells[0])));this.actions.get("collapsible").setEnabled(1==c.vertices.length&&(0<b.model.getChildCount(c.vertices[0])||b.isContainer(c.vertices[0])));this.actions.get("exitGroup").setEnabled(null!=
-b.view.currentRoot);this.actions.get("home").setEnabled(null!=b.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==c.cells.length&&b.isValidRoot(c.cells[0]));this.actions.get("editLink").setEnabled(1==c.cells.length);this.actions.get("openLink").setEnabled(1==c.cells.length&&null!=b.getLinkForCell(c.cells[0]));this.actions.get("guides").setEnabled(b.isEnabled());this.actions.get("selectVertices").setEnabled(e);this.actions.get("selectEdges").setEnabled(e);this.actions.get("selectAll").setEnabled(e);
-this.actions.get("selectNone").setEnabled(e);f=1==c.vertices.length&&b.isCellFoldable(c.vertices[0]);this.actions.get("expand").setEnabled(f);this.actions.get("collapse").setEnabled(f);this.menus.get("navigation").setEnabled(0<c.cells.length||null!=b.view.currentRoot);this.menus.get("layout").setEnabled(e);this.menus.get("insert").setEnabled(e);this.menus.get("direction").setEnabled(c.unlocked&&1==c.vertices.length);this.menus.get("distribute").setEnabled(c.unlocked&&1<c.vertices.length);this.menus.get("align").setEnabled(c.unlocked&&
-1<c.vertices.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
+EditorUi.prototype.updateActionStates=function(){for(var b=this.editor.graph,c=this.getSelectionState(),e=b.isEnabled()&&!b.isCellLocked(b.getDefaultParent()),f="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded strokeColor sharp snapToGrid".split(" "),n=0;n<f.length;n++)this.actions.get(f[n]).setEnabled(0<c.cells.length);
+this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<c.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<c.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==b.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!b.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==c.cells.length);this.actions.get("sendBackward").setEnabled(1==
+c.cells.length);this.actions.get("rotation").setEnabled(1==c.vertices.length);this.actions.get("wordWrap").setEnabled(1==c.vertices.length);this.actions.get("autosize").setEnabled(1==c.vertices.length);this.actions.get("copySize").setEnabled(1==c.vertices.length);this.actions.get("clearWaypoints").setEnabled(c.connections);this.actions.get("curved").setEnabled(0<c.edges.length);this.actions.get("turn").setEnabled(c.resizable);this.actions.get("group").setEnabled(!c.row&&!c.cell&&(1<c.cells.length||
+1==c.vertices.length&&0==b.model.getChildCount(c.cells[0])&&!b.isContainer(c.vertices[0])));this.actions.get("ungroup").setEnabled(!c.row&&!c.cell&&!c.table&&0<c.vertices.length&&(b.isContainer(c.vertices[0])||0<b.getModel().getChildCount(c.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==c.cells.length&&b.getModel().isVertex(b.getModel().getParent(c.cells[0])));this.actions.get("collapsible").setEnabled(1==c.vertices.length&&(0<b.model.getChildCount(c.vertices[0])||b.isContainer(c.vertices[0])));
+this.actions.get("exitGroup").setEnabled(null!=b.view.currentRoot);this.actions.get("home").setEnabled(null!=b.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==c.cells.length&&b.isValidRoot(c.cells[0]));this.actions.get("editLink").setEnabled(1==c.cells.length);this.actions.get("openLink").setEnabled(1==c.cells.length&&null!=b.getLinkForCell(c.cells[0]));this.actions.get("guides").setEnabled(b.isEnabled());this.actions.get("selectVertices").setEnabled(e);this.actions.get("selectEdges").setEnabled(e);
+this.actions.get("selectAll").setEnabled(e);this.actions.get("selectNone").setEnabled(e);f=1==c.vertices.length&&b.isCellFoldable(c.vertices[0]);this.actions.get("expand").setEnabled(f);this.actions.get("collapse").setEnabled(f);this.menus.get("navigation").setEnabled(0<c.cells.length||null!=b.view.currentRoot);this.menus.get("layout").setEnabled(e);this.menus.get("insert").setEnabled(e);this.menus.get("direction").setEnabled(c.unlocked&&1==c.vertices.length);this.menus.get("distribute").setEnabled(c.unlocked&&
+1<c.vertices.length);this.menus.get("align").setEnabled(c.unlocked&&0<c.cells.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
EditorUi.prototype.refresh=function(b){b=null!=b?b:!0;var c=this.container.clientWidth,e=this.container.clientHeight;this.container==document.body&&(c=document.body.clientWidth||document.documentElement.clientWidth,e=document.documentElement.clientHeight);var f=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&&(f=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var n=Math.max(0,Math.min(this.hsplitPosition,c-this.splitSize-
20)),c=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",c+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",c+=this.toolbarHeight);0<c&&(c+=1);var l=0;if(null!=this.sidebarFooterContainer){var q=this.footerHeight+f,l=Math.max(0,Math.min(e-c-q,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=n+"px";this.sidebarFooterContainer.style.height=l+"px";
this.sidebarFooterContainer.style.bottom=q+"px"}e=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=c+"px";this.sidebarContainer.style.width=n+"px";this.formatContainer.style.top=c+"px";this.formatContainer.style.width=e+"px";this.formatContainer.style.display=null!=this.format?"":"none";var q=this.getDiagramContainerOffset(),d=null!=this.hsplit.parentNode?n+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
@@ -2344,20 +2344,20 @@ mxImageShape.prototype.getImageDataUri=function(){var b=this.image;if("data:imag
Graph=function(b,c,e,f,n,l){mxGraph.call(this,b,c,e,f);this.themes=n||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=l?l:!1;b=this.baseUrl;c=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=b.indexOf("/",c+2),0<c&&(this.domainUrl=b.substring(0,c)),c=b.lastIndexOf("/"),0<c&&(this.domainPathUrl=b.substring(0,c+1)));this.isHtmlLabel=function(b){b=this.getCurrentCellStyle(b);
return null!=b?"1"==b.html||"wrap"==b[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var q=null,d=null,k=null,g=null,p=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,c){if("mouseDown"==c.getProperty("eventName")&&this.isEnabled()){var e=c.getProperty("event"),f=e.getState(),l=this.view.scale;if(!mxEvent.isAltDown(e.getEvent())&&null!=f)if(this.model.isEdge(f.cell))if(q=new mxPoint(e.getGraphX(),e.getGraphY()),p=this.isCellSelected(f.cell),k=f,d=e,null!=f.text&&null!=
f.text.boundingBox&&mxUtils.contains(f.text.boundingBox,e.getGraphX(),e.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var m=this.selectionCellsHandler.getHandler(f.cell);null!=m&&null!=m.bends&&0<m.bends.length&&(g=m.getHandleForEvent(e))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(e.getEvent())&&(m=this.selectionCellsHandler.getHandler(f.cell),null==m||null==m.getHandleForEvent(e))){var x=new mxRectangle(e.getGraphX()-1,e.getGraphY()-1),v=mxEvent.isTouchEvent(e.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+2)/2,m=v+2;x.grow(v);if(this.isTableCell(f.cell)&&!this.isCellSelected(f.cell)&&!(mxUtils.contains(f,e.getGraphX()-m,e.getGraphY()-m)&&mxUtils.contains(f,e.getGraphX()-m,e.getGraphY()+m)&&mxUtils.contains(f,e.getGraphX()+m,e.getGraphY()+m)&&mxUtils.contains(f,e.getGraphX()+m,e.getGraphY()-m))){var t=this.model.getParent(f.cell),m=this.model.getParent(t);if(!this.isCellSelected(m)){var v=v*l,u=2*v;if(this.model.getChildAt(m,0)!=t&&mxUtils.intersects(x,new mxRectangle(f.x,
-f.y-v,f.width,u))||this.model.getChildAt(t,0)!=f.cell&&mxUtils.intersects(x,new mxRectangle(f.x-v,f.y,u,f.height))||mxUtils.intersects(x,new mxRectangle(f.x,f.y+f.height-v,f.width,u))||mxUtils.intersects(x,new mxRectangle(f.x+f.width-v,f.y,u,f.height)))t=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,e.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m&&(v=m.getHandleForEvent(e),null!=v&&(m.start(e.getGraphX(),e.getGraphY(),v),m.blockDelayedSelection=!t,e.consume()))}}for(;!e.isConsumed()&&
+1:(mxShape.prototype.svgStrokeTolerance+2)/2,m=v+2;x.grow(v);if(this.isTableCell(f.cell)&&!this.isCellSelected(f.cell)&&!(mxUtils.contains(f,e.getGraphX()-m,e.getGraphY()-m)&&mxUtils.contains(f,e.getGraphX()-m,e.getGraphY()+m)&&mxUtils.contains(f,e.getGraphX()+m,e.getGraphY()+m)&&mxUtils.contains(f,e.getGraphX()+m,e.getGraphY()-m))){var n=this.model.getParent(f.cell),m=this.model.getParent(n);if(!this.isCellSelected(m)){var v=v*l,t=2*v;if(this.model.getChildAt(m,0)!=n&&mxUtils.intersects(x,new mxRectangle(f.x,
+f.y-v,f.width,t))||this.model.getChildAt(n,0)!=f.cell&&mxUtils.intersects(x,new mxRectangle(f.x-v,f.y,t,f.height))||mxUtils.intersects(x,new mxRectangle(f.x,f.y+f.height-v,f.width,t))||mxUtils.intersects(x,new mxRectangle(f.x+f.width-v,f.y,t,f.height)))n=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,e.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m&&(v=m.getHandleForEvent(e),null!=v&&(m.start(e.getGraphX(),e.getGraphY(),v),m.blockDelayedSelection=!n,e.consume()))}}for(;!e.isConsumed()&&
null!=f&&(this.isTableCell(f.cell)||this.isTableRow(f.cell)||this.isTable(f.cell));)this.isSwimlane(f.cell)&&(m=this.getActualStartSize(f.cell),(0<m.x||0<m.width)&&mxUtils.intersects(x,new mxRectangle(f.x+(m.x-m.width-1)*l+(0==m.x?f.width:0),f.y,1,f.height))||(0<m.y||0<m.height)&&mxUtils.intersects(x,new mxRectangle(f.x,f.y+(m.y-m.height-1)*l+(0==m.y?f.height:0),f.width,1)))&&(this.selectCellForEvent(f.cell,e.getEvent()),m=this.selectionCellsHandler.getHandler(f.cell),null!=m&&(v=mxEvent.CUSTOM_HANDLE-
-m.customHandles.length+1,m.start(e.getGraphX(),e.getGraphY(),v),e.consume())),f=this.view.getState(this.model.getParent(f.cell))}}}));this.addMouseListener({mouseDown:function(b,d){},mouseMove:mxUtils.bind(this,function(b,c){var e=this.selectionCellsHandler.handlers.map,f;for(f in e)if(null!=e[f].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(c.getEvent())){var m=this.tolerance;if(null!=q&&null!=k&&null!=d){if(e=k,Math.abs(q.x-c.getGraphX())>m||Math.abs(q.y-
-c.getGraphY())>m){var l=this.selectionCellsHandler.getHandler(e.cell);null==l&&this.model.isEdge(e.cell)&&(l=this.createHandler(e));if(null!=l&&null!=l.bends&&0<l.bends.length){f=l.getHandleForEvent(d);var x=this.view.getEdgeStyle(e),m=x==mxEdgeStyle.EntityRelation;p||g!=mxEvent.LABEL_HANDLE||(f=g);if(m&&0!=f&&f!=l.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!m||null==e.visibleSourceState&&null==e.visibleTargetState||(this.graphHandler.reset(),c.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=
-e.visibleSourceState||f==l.bends.length-1||null!=e.visibleTargetState)m||f==mxEvent.LABEL_HANDLE||(m=e.absolutePoints,null!=m&&(null==x&&null==f||x==mxEdgeStyle.OrthConnector)&&(f=g,null==f&&(f=new mxRectangle(q.x,q.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,m[0].x,m[0].y)?f=0:mxUtils.contains(f,m[m.length-1].x,m[m.length-1].y)?f=l.bends.length-1:null!=x&&(2==m.length||3==m.length&&(0==Math.round(m[0].x-m[1].x)&&0==Math.round(m[1].x-m[2].x)||0==Math.round(m[0].y-m[1].y)&&
-0==Math.round(m[1].y-m[2].y)))?f=2:(f=mxUtils.findNearestSegment(e,q.x,q.y),f=null==x?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),l.start(c.getGraphX(),c.getGraphX(),f),c.consume(),this.graphHandler.reset()}null!=l&&(this.selectionCellsHandler.isHandlerActive(l)?this.isCellSelected(e.cell)||(this.selectionCellsHandler.handlers.put(e.cell,l),this.selectCellForEvent(e.cell,c.getEvent())):this.isCellSelected(e.cell)||l.destroy());p=!1;q=d=k=g=null}}else if(e=c.getState(),null!=
-e&&this.isCellEditable(e.cell)){l=null;if(this.model.isEdge(e.cell)){if(f=new mxRectangle(c.getGraphX(),c.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),m=e.absolutePoints,null!=m)if(null!=e.text&&null!=e.text.boundingBox&&mxUtils.contains(e.text.boundingBox,c.getGraphX(),c.getGraphY()))l="move";else if(mxUtils.contains(f,m[0].x,m[0].y)||mxUtils.contains(f,m[m.length-1].x,m[m.length-1].y))l="pointer";else if(null!=e.visibleSourceState||null!=e.visibleTargetState)f=this.view.getEdgeStyle(e),
-l="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(e)&&(f=mxUtils.findNearestSegment(e,c.getGraphX(),c.getGraphY()),f<m.length-1&&0<=f&&(l=0==Math.round(m[f].x-m[f+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(c.getEvent())){m=mxShape.prototype.svgStrokeTolerance/2;f=new mxRectangle(c.getGraphX(),c.getGraphY());f.grow(m);if(this.isTableCell(e.cell)&&(m=this.model.getParent(e.cell),x=this.model.getParent(m),!this.isCellSelected(x)))if(mxUtils.intersects(f,new mxRectangle(e.x,
-e.y-2,e.width,4))&&this.model.getChildAt(x,0)!=m||mxUtils.intersects(f,new mxRectangle(e.x,e.y+e.height-2,e.width,4)))l="row-resize";else if(mxUtils.intersects(f,new mxRectangle(e.x-2,e.y,4,e.height))&&this.model.getChildAt(m,0)!=e.cell||mxUtils.intersects(f,new mxRectangle(e.x+e.width-2,e.y,4,e.height)))l="col-resize";for(m=e;null==l&&null!=m&&(this.isTableCell(m.cell)||this.isTableRow(m.cell)||this.isTable(m.cell));){if(this.isSwimlane(m.cell)){var x=this.getActualStartSize(m.cell),v=this.view.scale;
-(0<x.x||0<x.width)&&mxUtils.intersects(f,new mxRectangle(m.x+(x.x-x.width-1)*v+(0==x.x?m.width*v:0),m.y,1,m.height))?l="col-resize":(0<x.y||0<x.height)&&mxUtils.intersects(f,new mxRectangle(m.x,m.y+(x.y-x.height-1)*v+(0==x.y?m.height:0),m.width,1))&&(l="row-resize")}m=this.view.getState(this.model.getParent(m.cell))}}null!=l&&e.setCursor(l)}}}),mouseUp:mxUtils.bind(this,function(b,c){g=q=d=k=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(b){var d=mxCellRenderer.prototype.getLabelValue.apply(this,
+m.customHandles.length+1,m.start(e.getGraphX(),e.getGraphY(),v),e.consume())),f=this.view.getState(this.model.getParent(f.cell))}}}));this.addMouseListener({mouseDown:function(b,d){},mouseMove:mxUtils.bind(this,function(b,c){var e=this.selectionCellsHandler.handlers.map,f;for(f in e)if(null!=e[f].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(c.getEvent())){var l=this.tolerance;if(null!=q&&null!=k&&null!=d){if(e=k,Math.abs(q.x-c.getGraphX())>l||Math.abs(q.y-
+c.getGraphY())>l){var m=this.selectionCellsHandler.getHandler(e.cell);null==m&&this.model.isEdge(e.cell)&&(m=this.createHandler(e));if(null!=m&&null!=m.bends&&0<m.bends.length){f=m.getHandleForEvent(d);var x=this.view.getEdgeStyle(e),l=x==mxEdgeStyle.EntityRelation;p||g!=mxEvent.LABEL_HANDLE||(f=g);if(l&&0!=f&&f!=m.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!l||null==e.visibleSourceState&&null==e.visibleTargetState||(this.graphHandler.reset(),c.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=
+e.visibleSourceState||f==m.bends.length-1||null!=e.visibleTargetState)l||f==mxEvent.LABEL_HANDLE||(l=e.absolutePoints,null!=l&&(null==x&&null==f||x==mxEdgeStyle.OrthConnector)&&(f=g,null==f&&(f=new mxRectangle(q.x,q.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,l[0].x,l[0].y)?f=0:mxUtils.contains(f,l[l.length-1].x,l[l.length-1].y)?f=m.bends.length-1:null!=x&&(2==l.length||3==l.length&&(0==Math.round(l[0].x-l[1].x)&&0==Math.round(l[1].x-l[2].x)||0==Math.round(l[0].y-l[1].y)&&
+0==Math.round(l[1].y-l[2].y)))?f=2:(f=mxUtils.findNearestSegment(e,q.x,q.y),f=null==x?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),m.start(c.getGraphX(),c.getGraphX(),f),c.consume(),this.graphHandler.reset()}null!=m&&(this.selectionCellsHandler.isHandlerActive(m)?this.isCellSelected(e.cell)||(this.selectionCellsHandler.handlers.put(e.cell,m),this.selectCellForEvent(e.cell,c.getEvent())):this.isCellSelected(e.cell)||m.destroy());p=!1;q=d=k=g=null}}else if(e=c.getState(),null!=
+e&&this.isCellEditable(e.cell)){m=null;if(this.model.isEdge(e.cell)){if(f=new mxRectangle(c.getGraphX(),c.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),l=e.absolutePoints,null!=l)if(null!=e.text&&null!=e.text.boundingBox&&mxUtils.contains(e.text.boundingBox,c.getGraphX(),c.getGraphY()))m="move";else if(mxUtils.contains(f,l[0].x,l[0].y)||mxUtils.contains(f,l[l.length-1].x,l[l.length-1].y))m="pointer";else if(null!=e.visibleSourceState||null!=e.visibleTargetState)f=this.view.getEdgeStyle(e),
+m="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(e)&&(f=mxUtils.findNearestSegment(e,c.getGraphX(),c.getGraphY()),f<l.length-1&&0<=f&&(m=0==Math.round(l[f].x-l[f+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(c.getEvent())){l=mxShape.prototype.svgStrokeTolerance/2;f=new mxRectangle(c.getGraphX(),c.getGraphY());f.grow(l);if(this.isTableCell(e.cell)&&(l=this.model.getParent(e.cell),x=this.model.getParent(l),!this.isCellSelected(x)))if(mxUtils.intersects(f,new mxRectangle(e.x,
+e.y-2,e.width,4))&&this.model.getChildAt(x,0)!=l||mxUtils.intersects(f,new mxRectangle(e.x,e.y+e.height-2,e.width,4)))m="row-resize";else if(mxUtils.intersects(f,new mxRectangle(e.x-2,e.y,4,e.height))&&this.model.getChildAt(l,0)!=e.cell||mxUtils.intersects(f,new mxRectangle(e.x+e.width-2,e.y,4,e.height)))m="col-resize";for(l=e;null==m&&null!=l&&(this.isTableCell(l.cell)||this.isTableRow(l.cell)||this.isTable(l.cell));){if(this.isSwimlane(l.cell)){var x=this.getActualStartSize(l.cell),v=this.view.scale;
+(0<x.x||0<x.width)&&mxUtils.intersects(f,new mxRectangle(l.x+(x.x-x.width-1)*v+(0==x.x?l.width*v:0),l.y,1,l.height))?m="col-resize":(0<x.y||0<x.height)&&mxUtils.intersects(f,new mxRectangle(l.x,l.y+(x.y-x.height-1)*v+(0==x.y?l.height:0),l.width,1))&&(m="row-resize")}l=this.view.getState(this.model.getParent(l.cell))}}null!=m&&e.setCursor(m)}}}),mouseUp:mxUtils.bind(this,function(b,c){g=q=d=k=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(b){var d=mxCellRenderer.prototype.getLabelValue.apply(this,
arguments);b.view.graph.isHtmlLabel(b.cell)&&(d=1!=b.style.html?mxUtils.htmlEntities(d,!1):b.view.graph.sanitizeHtml(d));return d};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(b,d){return!1};this.alternateEdgeStyle="vertical";null==f&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var b=m.apply(this,arguments);if(this.graph.pageVisible){for(var d=[],c=this.graph.pageFormat,g=this.graph.pageScale,k=c.width*g,c=c.height*g,g=this.graph.view.translate,e=this.graph.view.scale,f=this.graph.getPageLayout(),p=0;p<f.width;p++)d.push(new mxRectangle(((f.x+
-p)*k+g.x)*e,(f.y*c+g.y)*e,k*e,c*e));for(p=1;p<f.height;p++)d.push(new mxRectangle((f.x*k+g.x)*e,((f.y+p)*c+g.y)*e,k*e,c*e));b=d.concat(b)}return b};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(b,d){return null==b.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(b){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,
+this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(b,d){return!1};this.alternateEdgeStyle="vertical";null==f&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var b=m.apply(this,arguments);if(this.graph.pageVisible){for(var d=[],c=this.graph.pageFormat,g=this.graph.pageScale,k=c.width*g,c=c.height*g,g=this.graph.view.translate,e=this.graph.view.scale,f=this.graph.getPageLayout(),l=0;l<f.width;l++)d.push(new mxRectangle(((f.x+
+l)*k+g.x)*e,(f.y*c+g.y)*e,k*e,c*e));for(l=1;l<f.height;l++)d.push(new mxRectangle((f.x*k+g.x)*e,((f.y+l)*c+g.y)*e,k*e,c*e));b=d.concat(b)}return b};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(b,d){return null==b.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(b){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,
arguments)};var v=this.graphHandler.getCells;this.graphHandler.getCells=function(b){for(var d=v.apply(this,arguments),c=new mxDictionary,g=[],k=0;k<d.length;k++){var e=this.graph.isTableCell(b)&&this.graph.isTableCell(d[k])&&this.graph.isCellSelected(d[k])?this.graph.model.getParent(d[k]):this.graph.isTableRow(b)&&this.graph.isTableRow(d[k])&&this.graph.isCellSelected(d[k])?d[k]:this.graph.getCompositeParent(d[k]);null==e||c.get(e)||(c.put(e,!0),g.push(e))}return g};var u=this.graphHandler.start;
this.graphHandler.start=function(b,d,c,g){var k=!1;this.graph.isTableCell(b)&&(this.graph.isCellSelected(b)?k=!0:b=this.graph.model.getParent(b));k||this.graph.isTableRow(b)&&this.graph.isCellSelected(b)||(b=this.graph.getCompositeParent(b));u.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(b,d){d=this.graph.getCompositeParent(d);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var t=new mxRubberband(this);this.getRubberband=function(){return t};
var z=(new Date).getTime(),y=0,F=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var b=this.currentState;F.apply(this,arguments);b!=this.currentState?(z=(new Date).getTime(),y=0):y=(new Date).getTime()-z};var D=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(b){return null!=this.currentState&&b.getState()==this.currentState&&2E3<y||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect",
@@ -2401,8 +2401,8 @@ Graph.prototype.isShadowState=function(b){return"image"!=mxUtils.getValue(b.styl
b){var g={},k;for(k in b){var e=b[k];null!=e&&(g[k]=!0,null==d[k]&&c?d[k]=e:d[k]!=e&&delete d[k])}for(k in d)g[k]||delete d[k]}};Graph.prototype.getStartEditingCell=function(b,d){var c=this.getCellStyle(b),c=parseInt(mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE,0));this.isTable(b)&&(!this.isSwimlane(b)||0==c)&&""==this.getLabel(b)&&0<this.model.getChildCount(b)&&(b=this.model.getChildAt(b,0),c=this.getCellStyle(b),c=parseInt(mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(b)&&
(!this.isSwimlane(b)||0==c)&&""==this.getLabel(b)&&0<this.model.getChildCount(b))for(c=0;c<this.model.getChildCount(b);c++){var g=this.model.getChildAt(b,c);if(this.isCellEditable(g)){b=g;break}}return b};Graph.prototype.copyStyle=function(b){return this.getCellStyle(b,!1)};Graph.prototype.pasteStyle=function(b,d,c){c=null!=c?c:Graph.pasteStyles;Graph.removeKeys(b,function(b){return 0>mxUtils.indexOf(c,b)});this.updateCellStyles(b,d)};Graph.prototype.updateCellStyles=function(b,d){this.model.beginUpdate();
try{for(var c=0;c<d.length;c++)if(this.model.isVertex(d[c])||this.model.isEdge(d[c])){var g=this.getCellStyle(d[c],!1),e;for(e in b){var f=b[e];g[e]!=f&&this.setCellStyles(e,f,[d[c]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&
-!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(b,d,c,g,e,f){this.useCssTransforms&&(b=b/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(b,d,c,g,e,f){g=null!=g?g:!0;e=null!=e?e:!0;null==c&&(c=this.getCurrentRoot(),null==c&&(c=this.getModel().getRoot()));if(null!=c)for(var k=this.model.getChildCount(c)-1;0<=k;k--){var m=this.model.getChildAt(c,
-k),l=this.getScaledCellAt(b,d,m,g,e,f);if(null!=l)return l;if(this.isCellVisible(m)&&(e&&this.model.isEdge(m)||g&&this.model.isVertex(m))&&(l=this.view.getState(m),null!=l&&(null==f||!f(l,b,d))&&this.intersects(l,b,d)))return m}return null};Graph.prototype.isRecursiveVertexResize=function(b){return!this.isSwimlane(b.cell)&&0<this.model.getChildCount(b.cell)&&!this.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
+!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(b,d,c,g,e,f){this.useCssTransforms&&(b=b/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(b,d,c,g,e,f){g=null!=g?g:!0;e=null!=e?e:!0;null==c&&(c=this.getCurrentRoot(),null==c&&(c=this.getModel().getRoot()));if(null!=c)for(var k=this.model.getChildCount(c)-1;0<=k;k--){var l=this.model.getChildAt(c,
+k),m=this.getScaledCellAt(b,d,l,g,e,f);if(null!=m)return m;if(this.isCellVisible(l)&&(e&&this.model.isEdge(l)||g&&this.model.isVertex(l))&&(m=this.view.getState(l),null!=m&&(null==f||!f(m,b,d))&&this.intersects(m,b,d)))return l}return null};Graph.prototype.isRecursiveVertexResize=function(b){return!this.isSwimlane(b.cell)&&0<this.model.getChildCount(b.cell)&&!this.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
function(b){for(var d=this.getCellGeometry(b);null!=d&&d.relative;)b=this.getModel().getParent(b),d=this.getCellGeometry(b);return b};Graph.prototype.isPart=function(b){return"1"==mxUtils.getValue(this.getCurrentCellStyle(b),"part","0")||this.isTableCell(b)||this.isTableRow(b)};Graph.prototype.getCompositeParent=function(b){for(;this.isPart(b);){var d=this.model.getParent(b);if(!this.model.isVertex(d))break;b=d}return b};Graph.prototype.filterSelectionCells=function(b){var d=this.getSelectionCells();
if(null!=b){for(var c=[],g=0;g<d.length;g++)b(d[g])||c.push(d[g]);d=c}return d};var b=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(c){if(this.useCssTransforms){var d=this.currentScale,k=this.currentTranslate;c=new mxRectangle((c.x+2*k.x)*d-k.x,(c.y+2*k.y)*d-k.y,c.width*d,c.height*d)}b.apply(this,arguments)};mxCellHighlight.prototype.getStrokeWidth=function(b){b=this.strokeWidth;this.graph.useCssTransforms&&(b/=this.graph.currentScale);return b};mxGraphView.prototype.getGraphBounds=
function(){var b=this.graphBounds;if(this.graph.useCssTransforms)var d=this.graph.currentTranslate,c=this.graph.currentScale,b=new mxRectangle((b.x+d.x)*c,(b.y+d.y)*c,b.width*c,b.height*c);return b};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var c=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=
@@ -2446,15 +2446,17 @@ Graph.prototype.replacePlaceholders=function(b,c,e,f){f=[];if(null!=c){for(var n
null==q&&(q=k.hasAttribute(d)?null!=k.getAttribute(d)?k.getAttribute(d):"":null)),k=this.model.getParent(k);null==q&&(q=this.getGlobalVariable(d));null==q&&null!=e&&(q=e[d])}f.push(c.substring(n,match.index)+(null!=q?q:l));n=match.index+l.length}}f.push(c.substring(n))}return f.join("")};Graph.prototype.restoreSelection=function(b){if(null!=b&&0<b.length){for(var c=[],e=0;e<b.length;e++){var f=this.model.getCell(b[e].id);null!=f&&c.push(f)}this.setSelectionCells(c)}else this.clearSelection()};
Graph.prototype.selectCellForEvent=function(b,c){mxEvent.isShiftDown(c)&&!this.isSelectionEmpty()&&this.selectTableRange(this.getSelectionCell(),b)||mxGraph.prototype.selectCellForEvent.apply(this,arguments)};
Graph.prototype.selectTableRange=function(b,c){var e=!1;if(this.isTableCell(b)&&this.isTableCell(c)){var f=this.model.getParent(b),n=this.model.getParent(f),l=this.model.getParent(c);if(n==this.model.getParent(l)){for(var q=f.getIndex(b),d=n.getIndex(f),k=l.getIndex(c),g=n.getIndex(l),l=Math.max(d,g),f=Math.min(q,k),q=Math.max(q,k),k=[],d=Math.min(d,g);d<=l;d++)for(var g=this.model.getChildAt(n,d),p=f;p<=q;p++)k.push(this.model.getChildAt(g,p));0<k.length&&(1<k.length||1<this.getSelectionCount()||
-!this.isCellSelected(k[0]))&&(this.setSelectionCells(k),e=!0)}}return e};Graph.prototype.getTableRange=function(b,c){};Graph.prototype.selectCellsForConnectVertex=function(b,c,e){2==b.length&&this.model.isVertex(b[1])?(this.setSelectionCell(b[1]),this.scrollCellToVisible(b[1]),null!=e&&(mxEvent.isTouchEvent(c)?e.update(e.getState(this.view.getState(b[1]))):e.reset())):this.setSelectionCells(b)};
+!this.isCellSelected(k[0]))&&(this.setSelectionCells(k),e=!0)}}return e};
+Graph.prototype.snapCellsToGrid=function(b,c){this.getModel().beginUpdate();try{for(var e=0;e<b.length;e++){var f=b[e],n=this.getCellGeometry(f);if(null!=n){n=n.clone();if(this.getModel().isVertex(f))n.x=Math.round(n.x/c)*c,n.y=Math.round(n.y/c)*c,n.width=Math.round(n.width/c)*c,n.height=Math.round(n.height/c)*c;else if(this.getModel().isEdge(f)&&null!=n.points)for(var l=0;l<n.points.length;l++)n.points[l].x=Math.round(n.points[l].x/c)*c,n.points[l].y=Math.round(n.points[l].y/c)*c;this.getModel().setGeometry(f,
+n)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnectVertex=function(b,c,e){2==b.length&&this.model.isVertex(b[1])?(this.setSelectionCell(b[1]),this.scrollCellToVisible(b[1]),null!=e&&(mxEvent.isTouchEvent(c)?e.update(e.getState(this.view.getState(b[1]))):e.reset())):this.setSelectionCells(b)};
Graph.prototype.isCloneConnectSource=function(b){var c=null;null!=this.layoutManager&&(c=this.layoutManager.getLayout(this.model.getParent(b)));return this.isTableRow(b)||this.isTableCell(b)||null!=c&&c.constructor==mxStackLayout};
Graph.prototype.connectVertex=function(b,c,e,f,n,l,q,d){l=l?l:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var k=this.isCloneConnectSource(b),g=k?b:this.getCompositeParent(b),p=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(g.geometry.x,g.geometry.y);c==mxConstants.DIRECTION_NORTH?(p.x+=g.geometry.width/2,p.y-=e):c==
mxConstants.DIRECTION_SOUTH?(p.x+=g.geometry.width/2,p.y+=g.geometry.height+e):(p.x=c==mxConstants.DIRECTION_WEST?p.x-e:p.x+(g.geometry.width+e),p.y+=g.geometry.height/2);var m=this.view.getState(this.model.getParent(b));e=this.view.scale;var v=this.view.translate,g=v.x*e,v=v.y*e;null!=m&&this.model.isVertex(m.cell)&&(g=m.x,v=m.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(p.x+=b.parent.geometry.x,p.y+=b.parent.geometry.y);l=l?null:(new mxRectangle(g+p.x*e,v+p.y*e)).grow(40*e);l=null!=l?
this.getCells(0,0,0,0,null,null,l,null,!0):null;var m=this.view.getState(b),u=null,t=null;if(null!=l){l=l.reverse();for(var z=0;z<l.length;z++)if(!this.isCellLocked(l[z])&&!this.model.isEdge(l[z])&&l[z]!=b)if(!this.model.isAncestor(b,l[z])&&this.isContainer(l[z])&&(null==u||l[z]==this.model.getParent(b)))u=l[z];else if(null==t&&this.isCellConnectable(l[z])&&!this.model.isAncestor(l[z],b)&&!this.isSwimlane(l[z])){var y=this.view.getState(l[z]);null==m||null==y||mxUtils.intersects(m,y)||(t=l[z])}}var F=
!mxEvent.isShiftDown(f)||mxEvent.isControlDown(f)||n;F&&("1"!=urlParams.sketch||n)&&(c==mxConstants.DIRECTION_NORTH?p.y-=b.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=b.geometry.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-b.geometry.width/2:p.x+b.geometry.width/2);var D=[],E=t,t=u;n=mxUtils.bind(this,function(g){if(null==q||null!=g||null==t&&k){this.model.beginUpdate();try{if(null==E&&F){var e=this.getAbsoluteParent(null!=g?g:b),e=k?b:this.getCompositeParent(e);E=null!=g?g:this.duplicateCells([e],
-!1)[0];null!=g&&this.addCells([E],this.model.getParent(b),null,null,null,!0);var m=this.getCellGeometry(E);null!=m&&(null!=g&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?p.y-=m.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=m.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-m.width/2:p.x+m.width/2),m.x=p.x-m.width/2,m.y=p.y-m.height/2);null!=u?(this.addCells([E],u,null,null,null,!0),t=null):F&&!k&&this.addCells([E],this.getDefaultParent(),null,null,null,!0)}var l=mxEvent.isControlDown(f)&&
-mxEvent.isShiftDown(f)&&F||null==t&&k?null:this.insertEdge(this.model.getParent(b),null,"",b,E,this.createCurrentEdgeStyle());if(null!=l&&this.connectionHandler.insertBeforeSource){var v=null;for(g=b;null!=g.parent&&null!=g.geometry&&g.geometry.relative&&g.parent!=l.parent;)g=this.model.getParent(g);null!=g&&null!=g.parent&&g.parent==l.parent&&(v=g.parent.getIndex(g),this.model.add(g.parent,l,v))}null==t&&null!=E&&null!=b.parent&&k&&c==mxConstants.DIRECTION_WEST&&(v=b.parent.getIndex(b),this.model.add(b.parent,
-E,v));null!=l&&D.push(l);null==t&&null!=E&&D.push(E);null==E&&null!=l&&l.geometry.setTerminalPoint(p,!1);null!=l&&this.fireEvent(new mxEventObject("cellsInserted","cells",[l]))}finally{this.model.endUpdate()}}if(null!=d)d(D);else return D});if(null==q||null!=E||!F||null==t&&k)return n(E);q(g+p.x*e,v+p.y*e,n)};
+!1)[0];null!=g&&this.addCells([E],this.model.getParent(b),null,null,null,!0);var l=this.getCellGeometry(E);null!=l&&(null!=g&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?p.y-=l.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=l.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-l.width/2:p.x+l.width/2),l.x=p.x-l.width/2,l.y=p.y-l.height/2);null!=u?(this.addCells([E],u,null,null,null,!0),t=null):F&&!k&&this.addCells([E],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(f)&&
+mxEvent.isShiftDown(f)&&F||null==t&&k?null:this.insertEdge(this.model.getParent(b),null,"",b,E,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var v=null;for(g=b;null!=g.parent&&null!=g.geometry&&g.geometry.relative&&g.parent!=m.parent;)g=this.model.getParent(g);null!=g&&null!=g.parent&&g.parent==m.parent&&(v=g.parent.getIndex(g),this.model.add(g.parent,m,v))}null==t&&null!=E&&null!=b.parent&&k&&c==mxConstants.DIRECTION_WEST&&(v=b.parent.getIndex(b),this.model.add(b.parent,
+E,v));null!=m&&D.push(m);null==t&&null!=E&&D.push(E);null==E&&null!=m&&m.geometry.setTerminalPoint(p,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=d)d(D);else return D});if(null==q||null!=E||!F||null==t&&k)return n(E);q(g+p.x*e,v+p.y*e,n)};
Graph.prototype.getIndexableText=function(){var b=document.createElement("div"),c=[],e,f;for(f in this.model.cells)if(e=this.model.cells[f],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(b.innerHTML=this.sanitizeHtml(this.getLabel(e)),e=mxUtils.extractTextWithWhitespace([b])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&c.push(e);return c.join(" ")};
Graph.prototype.convertValueToString=function(b){var c=this.model.getValue(b);if(null!=c&&"object"==typeof c){var e=null;if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var c=b.getAttribute("placeholder"),f=b;null==e&&null!=f;)null!=f.value&&"object"==typeof f.value&&(e=f.hasAttribute(c)?null!=f.getAttribute(c)?f.getAttribute(c):"":null),f=this.model.getParent(f);else e=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(e=c.getAttribute("label_"+Graph.diagramLanguage)),
null==e&&(e=c.getAttribute("label")||"");return e||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(b){return null!=b&&null!=b.text&&null!=b.text.node?b.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(b){return null!=b.value&&"object"==typeof b.value?(b=b.value.getAttribute("link"),null!=b&&"javascript:"===b.toLowerCase().substring(0,11)&&(b=b.substring(11)),b):null};
@@ -2556,7 +2558,7 @@ mxStencilRegistry.loadStencilSet=function(b,c,e,f){var n=mxStencilRegistry.packa
n.documentElement&&mxStencilRegistry.parseStencilSet(n.documentElement,c,l)}};mxStencilRegistry.loadStencil=function(b,c){if(null!=c)mxUtils.get(b,mxUtils.bind(this,function(b){c(200<=b.getStatus()&&299>=b.getStatus()?b.getXml():null)}));else return mxUtils.load(b).getXml()};mxStencilRegistry.parseStencilSets=function(b){for(var c=0;c<b.length;c++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(b[c]).documentElement)};
mxStencilRegistry.parseStencilSet=function(b,c,e){if("stencils"==b.nodeName)for(var f=b.firstChild;null!=f;)"shapes"==f.nodeName&&mxStencilRegistry.parseStencilSet(f,c,e),f=f.nextSibling;else{e=null!=e?e:!0;var f=b.firstChild,n="";b=b.getAttribute("name");for(null!=b&&(n=b+".");null!=f;){if(f.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=f.getAttribute("name"),null!=b)){var n=n.toLowerCase(),l=b.replace(/ /g,"_");e&&mxStencilRegistry.addStencil(n+l.toLowerCase(),new mxStencil(f));if(null!=c){var q=f.getAttribute("w"),
d=f.getAttribute("h"),q=null==q?80:parseInt(q,10),d=null==d?80:parseInt(d,10);c(n,l,b,q,d)}}f=f.nextSibling}}};
-"undefined"!=typeof mxVertexHandler&&function(){function b(){var b=document.createElement("div");b.className="geHint";b.style.whiteSpace="nowrap";b.style.position="absolute";return b}function c(b,d){switch(d){case mxConstants.POINTS:return b;case mxConstants.MILLIMETERS:return(b/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(b/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(b/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
+"undefined"!==typeof mxVertexHandler&&function(){function b(){var b=document.createElement("div");b.className="geHint";b.style.whiteSpace="nowrap";b.style.position="absolute";return b}function c(b,d){switch(d){case mxConstants.POINTS:return b;case mxConstants.MILLIMETERS:return(b/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(b/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(b/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00a8ff";mxConstants.OUTLINE_COLOR="#00a8ff";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.EDGE_SELECTION_COLOR="#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=
!0;mxGraphHandler.prototype.guidesEnabled=!0;mxGraphHandler.prototype.removeEmptyParents=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(b){return!mxEvent.isAltDown(b)};var e=mxGraphLayout.prototype.isVertexIgnored;mxGraphLayout.prototype.isVertexIgnored=function(b){return e.apply(this,arguments)||this.graph.isTableRow(b)||this.graph.isTableCell(b)};var f=mxGraphLayout.prototype.isEdgeIgnored;mxGraphLayout.prototype.isEdgeIgnored=function(b){return f.apply(this,arguments)||
this.graph.isEdgeIgnored(b)};var n=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(b){return this.graph.isCloneEvent(b)!=n.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var b=new mxEllipse(null,this.highlightColor,this.highlightColor,0);b.opacity=mxConstants.HIGHLIGHT_OPACITY;return b};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
@@ -2571,12 +2573,12 @@ var x=this.getBoundingBoxFromGeometry(b,!0);null!=x&&this.moveCells(b,d-x.x,c-x.
(p.offset=null,p.relative=!1,p.x=m.x/m.view.scale-m.view.translate.x,p.y=m.y/m.view.scale-m.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(d,this.createCellLookup(b)),c);return k.encode(f)};Graph.prototype.isSwimlane=function(b,d){var c=null;null==b||this.model.isEdge(b)||this.model.getParent(b)==this.model.getRoot()||(c=this.getCurrentCellStyle(b,d)[mxConstants.STYLE_SHAPE]);return c==mxConstants.SHAPE_SWIMLANE||"table"==c||"tableRow"==c};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=
function(b){var c=this.model.getParent(b);if(null!=c){var g=this.getCurrentCellStyle(c);if(null!=g.expand)return"0"!=g.expand}return d.apply(this,arguments)&&(null==c||!this.isTable(c))};var k=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(b,d,c,g,e,f,l,m){null==m&&(m=this.model.getParent(b),this.isTable(m)||this.isTableRow(m))&&(m=this.getCellAt(f,l,null,!0,!1));c=null;this.model.beginUpdate();try{c=k.apply(this,[b,d,c,g,e,f,l,m]);this.model.setValue(c,"");var p=this.getChildCells(c,
!0);for(d=0;d<p.length;d++){var x=this.getCellGeometry(p[d]);null!=x&&x.relative&&0<x.x&&this.model.remove(p[d])}var v=this.getChildCells(b,!0);for(d=0;d<v.length;d++)x=this.getCellGeometry(v[d]),null!=x&&x.relative&&0>=x.x&&this.model.remove(v[d]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[c]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[c]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,null,[b]);this.setCellStyles(mxConstants.STYLE_STARTARROW,
-mxConstants.NONE,[b]);var n=this.model.getTerminal(c,!1);if(null!=n){var ha=this.getCurrentCellStyle(n);null!=ha&&"1"==ha.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[b]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[b]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[c]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[c]))}}finally{this.model.endUpdate()}return c};var g=Graph.prototype.selectCell;Graph.prototype.selectCell=function(b,d,c){if(d||c)g.apply(this,arguments);
+mxConstants.NONE,[b]);var n=this.model.getTerminal(c,!1);if(null!=n){var ba=this.getCurrentCellStyle(n);null!=ba&&"1"==ba.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[b]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[b]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[c]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[c]))}}finally{this.model.endUpdate()}return c};var g=Graph.prototype.selectCell;Graph.prototype.selectCell=function(b,d,c){if(d||c)g.apply(this,arguments);
else{var e=this.getSelectionCell(),k=null,f=[],l=mxUtils.bind(this,function(d){if(null!=this.view.getState(d)&&(this.model.isVertex(d)||this.model.isEdge(d)))if(f.push(d),d==e)k=f.length-1;else if(b&&null==e&&0<f.length||null!=k&&b&&f.length>k||!b&&0<k)return;for(var c=0;c<this.model.getChildCount(d);c++)l(this.model.getChildAt(d,c))});l(this.model.root);0<f.length&&(k=null!=k?mxUtils.mod(k+(b?1:-1),f.length):0,this.setSelectionCell(f[k]))}};Graph.prototype.swapUmlLifelines=function(b,d){var c=!1;
if(null!=d&&1==b.length){var g=this.view.getState(d),e=this.view.getState(b[0]);if(null!=g&&null!=e&&"umlLifeline"==g.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(d),g=this.getCellGeometry(b[0]),null!=e&&null!=g)){c=e.clone();e=g.clone();e.x=c.x;e.y=c.y;c.x=g.x;c.y=g.y;this.model.beginUpdate();try{this.model.setGeometry(d,c),this.model.setGeometry(b[0],e)}finally{this.model.endUpdate()}c=!0}}return c};var p=Graph.prototype.moveCells;Graph.prototype.moveCells=function(b,d,c,g,
e,k,f){if(!g&&this.swapUmlLifelines(b,e))return b;f=null!=f?f:{};if(this.isTable(e)){for(var l=[],m=0;m<b.length;m++)this.isTable(b[m])?l=l.concat(this.model.getChildCells(b[m],!0).reverse()):l.push(b[m]);b=l}this.model.beginUpdate();try{l=[];for(m=0;m<b.length;m++)if(null!=e&&this.isTableRow(b[m])){var x=this.model.getParent(b[m]),v=this.getCellGeometry(b[m]);this.isTable(x)&&l.push(x);if(null!=x&&null!=v&&this.isTable(x)&&this.isTable(e)&&(g||x!=e)){if(!g){var n=this.getCellGeometry(x);null!=n&&
-(n=n.clone(),n.height-=v.height,this.model.setGeometry(x,n))}n=this.getCellGeometry(e);null!=n&&(n=n.clone(),n.height+=v.height,this.model.setGeometry(e,n));var t=this.model.getChildCells(e,!0);if(0<t.length){b[m]=g?this.cloneCell(b[m]):b[m];var u=this.model.getChildCells(b[m],!0),ha=this.model.getChildCells(t[0],!0),y=ha.length-u.length;if(0<y)for(var C=0;C<y;C++){var z=this.cloneCell(u[u.length-1]);null!=z&&(z.value="",this.model.add(b[m],z))}else if(0>y)for(C=0;C>y;C--)this.model.remove(u[u.length+
-C-1]);u=this.model.getChildCells(b[m],!0);for(C=0;C<ha.length;C++){var J=this.getCellGeometry(ha[C]),q=this.getCellGeometry(u[C]);null!=J&&null!=q&&(q=q.clone(),q.width=J.width,this.model.setGeometry(u[C],q))}}}}for(var pa=p.apply(this,arguments),m=0;m<l.length;m++)!g&&this.model.contains(l[m])&&0==this.model.getChildCount(l[m])&&this.model.remove(l[m]);g&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(b)),pa)}finally{this.model.endUpdate()}return pa};var m=Graph.prototype.removeCells;
+(n=n.clone(),n.height-=v.height,this.model.setGeometry(x,n))}n=this.getCellGeometry(e);null!=n&&(n=n.clone(),n.height+=v.height,this.model.setGeometry(e,n));var t=this.model.getChildCells(e,!0);if(0<t.length){b[m]=g?this.cloneCell(b[m]):b[m];var ba=this.model.getChildCells(b[m],!0),u=this.model.getChildCells(t[0],!0),y=u.length-ba.length;if(0<y)for(var C=0;C<y;C++){var z=this.cloneCell(ba[ba.length-1]);null!=z&&(z.value="",this.model.add(b[m],z))}else if(0>y)for(C=0;C>y;C--)this.model.remove(ba[ba.length+
+C-1]);ba=this.model.getChildCells(b[m],!0);for(C=0;C<u.length;C++){var J=this.getCellGeometry(u[C]),ma=this.getCellGeometry(ba[C]);null!=J&&null!=ma&&(ma=ma.clone(),ma.width=J.width,this.model.setGeometry(ba[C],ma))}}}}for(var q=p.apply(this,arguments),m=0;m<l.length;m++)!g&&this.model.contains(l[m])&&0==this.model.getChildCount(l[m])&&this.model.remove(l[m]);g&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(b)),q)}finally{this.model.endUpdate()}return q};var m=Graph.prototype.removeCells;
Graph.prototype.removeCells=function(b,d){var c=[];this.model.beginUpdate();try{for(var g=0;g<b.length;g++)if(this.isTableCell(b[g])){var e=this.model.getParent(b[g]),k=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(k)?0>mxUtils.indexOf(b,k)&&0>mxUtils.indexOf(c,k)&&c.push(k):this.labelChanged(b[g],"")}else{if(this.isTableRow(b[g])&&(k=this.model.getParent(b[g]),0>mxUtils.indexOf(b,k)&&0>mxUtils.indexOf(c,k))){for(var f=this.model.getChildCells(k,!0),l=0,p=0;p<
f.length;p++)0<=mxUtils.indexOf(b,f[p])&&l++;l==f.length&&c.push(k)}c.push(b[g])}c=m.apply(this,[c,d])}finally{this.model.endUpdate()}return c};Graph.prototype.updateCustomLinks=function(b,d,c){c=null!=c?c:new Graph;for(var g=0;g<d.length;g++)null!=d[g]&&c.updateCustomLinksForCell(b,d[g],c)};Graph.prototype.updateCustomLinksForCell=function(b,d){this.doUpdateCustomLinksForCell(b,d);for(var c=this.model.getChildCount(d),g=0;g<c;g++)this.updateCustomLinksForCell(b,this.model.getChildAt(d,g))};Graph.prototype.doUpdateCustomLinksForCell=
function(b,d){};Graph.prototype.getAllConnectionConstraints=function(b,d){if(null!=b){var c=mxUtils.getValue(b.style,"points",null);if(null!=c){var g=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var k=e[c];g.push(new mxConnectionConstraint(new mxPoint(k[0],k[1]),2<k.length?"0"!=k[2]:!0,null,3<k.length?k[3]:0,4<k.length?k[4]:0))}}catch(Z){}return g}if(null!=b.shape&&null!=b.shape.bounds){k=b.shape.direction;e=b.shape.bounds;c=b.shape.scale;g=e.width/c;e=e.height/c;if(k==mxConstants.DIRECTION_NORTH||
@@ -2584,13 +2586,13 @@ k==mxConstants.DIRECTION_SOUTH)k=g,g=e,e=k;c=b.shape.getConstraints(b.style,g,e)
this.setCellStyles(mxConstants.STYLE_ELBOW,d,[b])}};Graph.prototype.isValidRoot=function(b){for(var d=this.model.getChildCount(b),c=0,g=0;g<d;g++){var e=this.model.getChildAt(b,g);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(b)};Graph.prototype.isValidDropTarget=function(b,d,c){for(var g=this.getCurrentCellStyle(b),e=!0,k=!0,f=0;f<d.length&&k;f++)e=e&&this.isTable(d[f]),k=k&&this.isTableRow(d[f]);return("1"!=mxUtils.getValue(g,"part","0")||
this.isContainer(b))&&"0"!=mxUtils.getValue(g,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(b))&&!this.isTableRow(b)&&(!this.isTable(b)||k||e)&&!this.isCellLocked(b)};Graph.prototype.createGroupCell=function(){var b=mxGraph.prototype.createGroupCell.apply(this,arguments);b.setStyle("group");return b};Graph.prototype.isExtendParentsOnAdd=function(b){var d=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(d&&null!=b&&null!=this.layoutManager){var c=
this.model.getParent(b);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(d=!1))}return d};Graph.prototype.getPreferredSizeForCell=function(b){var d=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=d&&(d.width+=10,d.height+=4,this.gridEnabled&&(d.width=this.snap(d.width),d.height=this.snap(d.height)));return d};Graph.prototype.turnShapes=function(b,d){var c=this.getModel(),g=[];c.beginUpdate();try{for(var e=0;e<b.length;e++){var k=b[e];if(c.isEdge(k)){var f=
-c.getTerminal(k,!0),l=c.getTerminal(k,!1);c.setTerminal(k,l,!0);c.setTerminal(k,f,!1);var m=c.getGeometry(k);if(null!=m){m=m.clone();null!=m.points&&m.points.reverse();var p=m.getTerminalPoint(!0),x=m.getTerminalPoint(!1);m.setTerminalPoint(p,!1);m.setTerminalPoint(x,!0);c.setGeometry(k,m);var v=this.view.getState(k),n=this.view.getState(f),u=this.view.getState(l);if(null!=v){var t=null!=n?this.getConnectionConstraint(v,n,!0):null,ha=null!=u?this.getConnectionConstraint(v,u,!1):null;this.setConnectionConstraint(k,
-f,!0,ha);this.setConnectionConstraint(k,l,!1,t);var y=mxUtils.getValue(v.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(v.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[k]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,y,[k])}g.push(k)}}else if(c.isVertex(k)&&(m=this.getCellGeometry(k),null!=m)){if(!(this.isTable(k)||this.isTableRow(k)||this.isTableCell(k)||this.isSwimlane(k))){m=m.clone();m.x+=m.width/
+c.getTerminal(k,!0),l=c.getTerminal(k,!1);c.setTerminal(k,l,!0);c.setTerminal(k,f,!1);var m=c.getGeometry(k);if(null!=m){m=m.clone();null!=m.points&&m.points.reverse();var p=m.getTerminalPoint(!0),x=m.getTerminalPoint(!1);m.setTerminalPoint(p,!1);m.setTerminalPoint(x,!0);c.setGeometry(k,m);var v=this.view.getState(k),n=this.view.getState(f),t=this.view.getState(l);if(null!=v){var u=null!=n?this.getConnectionConstraint(v,n,!0):null,ba=null!=t?this.getConnectionConstraint(v,t,!1):null;this.setConnectionConstraint(k,
+f,!0,ba);this.setConnectionConstraint(k,l,!1,u);var y=mxUtils.getValue(v.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(v.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[k]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,y,[k])}g.push(k)}}else if(c.isVertex(k)&&(m=this.getCellGeometry(k),null!=m)){if(!(this.isTable(k)||this.isTableRow(k)||this.isTableCell(k)||this.isSwimlane(k))){m=m.clone();m.x+=m.width/
2-m.height/2;m.y+=m.height/2-m.width/2;var C=m.width;m.width=m.height;m.height=C;c.setGeometry(k,m)}var z=this.view.getState(k);if(null!=z){var J=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],q=mxUtils.getValue(z.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,J[mxUtils.mod(mxUtils.indexOf(J,q)+(d?-1:1),J.length)],[k])}g.push(k)}}}finally{c.endUpdate()}return g};Graph.prototype.stencilHasPlaceholders=
function(b){if(null!=b&&null!=b.fgNode)for(b=b.fgNode.firstChild;null!=b;){if("text"==b.nodeName&&"1"==b.getAttribute("placeholders"))return!0;b=b.nextSibling}return!1};var v=Graph.prototype.processChange;Graph.prototype.processChange=function(b){if(b instanceof mxGeometryChange&&(this.isTableCell(b.cell)||this.isTableRow(b.cell))&&(null==b.previous&&null!=b.geometry||null!=b.previous&&!b.previous.equals(b.geometry))){var d=b.cell;this.isTableCell(d)&&(d=this.model.getParent(d));this.isTableRow(d)&&
(d=this.model.getParent(d));var c=this.view.getState(d);null!=c&&null!=c.shape&&(this.view.invalidate(d),c.shape.bounds=null)}v.apply(this,arguments);b instanceof mxValueChange&&null!=b.cell&&null!=b.cell.value&&"object"==typeof b.cell.value&&this.invalidateDescendantsWithPlaceholders(b.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(b){b=this.model.getDescendants(b);if(0<b.length)for(var d=0;d<b.length;d++){var c=this.view.getState(b[d]);null!=c&&null!=c.shape&&null!=c.shape.stencil&&
this.stencilHasPlaceholders(c.shape.stencil)?this.removeStateForCell(b[d]):this.isReplacePlaceholders(b[d])&&this.view.invalidate(b[d],!1,!1)}};Graph.prototype.replaceElement=function(b,d){for(var c=b.ownerDocument.createElement(null!=d?d:"span"),g=Array.prototype.slice.call(b.attributes);attr=g.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=b.innerHTML;b.parentNode.replaceChild(c,b)};Graph.prototype.processElements=function(b,d){if(null!=b)for(var c=b.getElementsByTagName("*"),g=
-0;g<c.length;g++)d(c[g])};Graph.prototype.updateLabelElements=function(b,d,c){b=null!=b?b:this.getSelectionCells();for(var g=document.createElement("div"),e=0;e<b.length;e++)if(this.isHtmlLabel(b[e])){var k=this.convertValueToString(b[e]);if(null!=k&&0<k.length){g.innerHTML=k;for(var f=g.getElementsByTagName(null!=c?c:"*"),m=0;m<f.length;m++)d(f[m]);g.innerHTML!=k&&this.cellLabelChanged(b[e],g.innerHTML)}}};Graph.prototype.cellLabelChanged=function(b,d,c){d=Graph.zapGremlins(d);this.model.beginUpdate();
+0;g<c.length;g++)d(c[g])};Graph.prototype.updateLabelElements=function(b,d,c){b=null!=b?b:this.getSelectionCells();for(var g=document.createElement("div"),e=0;e<b.length;e++)if(this.isHtmlLabel(b[e])){var k=this.convertValueToString(b[e]);if(null!=k&&0<k.length){g.innerHTML=k;for(var f=g.getElementsByTagName(null!=c?c:"*"),l=0;l<f.length;l++)d(f[l]);g.innerHTML!=k&&this.cellLabelChanged(b[e],g.innerHTML)}}};Graph.prototype.cellLabelChanged=function(b,d,c){d=Graph.zapGremlins(d);this.model.beginUpdate();
try{if(null!=b.value&&"object"==typeof b.value){if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var g=b.getAttribute("placeholder"),e=b;null!=e;){if(e==this.model.getRoot()||null!=e.value&&"object"==typeof e.value&&e.hasAttribute(g)){this.setAttributeForCell(e,g,d);break}e=this.model.getParent(e)}var k=b.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&k.hasAttribute("label_"+Graph.diagramLanguage)?k.setAttribute("label_"+Graph.diagramLanguage,d):
k.setAttribute("label",d);d=k}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(b){if(null!=b){for(var d=new mxDictionary,c=0;c<b.length;c++)d.put(b[c],!0);for(var g=[],c=0;c<b.length;c++){var e=this.model.getParent(b[c]);null==e||d.get(e)||(d.put(e,!0),g.push(e))}for(c=0;c<g.length;c++)if(e=this.view.getState(g[c]),null!=e&&(this.model.isEdge(e.cell)||this.model.isVertex(e.cell))&&this.isCellDeletable(e.cell)&&this.isTransparentState(e)){for(var k=
!0,f=0;f<this.model.getChildCount(e.cell)&&k;f++)d.get(this.model.getChildAt(e.cell,f))||(k=!1);k&&b.push(e.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(b){for(var d=[],c=0;c<b.length;c++)this.isCellDeletable(b[c])&&this.isTransparentState(this.view.getState(b[c]))&&d.push(b[c]);b=d;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(b,d){this.setAttributeForCell(b,"link",d)};Graph.prototype.setTooltipForCell=
@@ -2603,97 +2605,100 @@ b))};Graph.prototype.getFreeInsertPoint=function(){var b=this.view,d=this.getGra
this.container.clientWidth/2)/this.view.scale-this.view.translate.x-b.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/2)/this.view.scale-this.view.translate.y-b.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-b.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-b.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=
function(b,d,c){var g=new mxCell;g.value="Text";g.geometry=new mxGeometry(0,0,0,0);g.vertex=!0;if(null!=c&&this.model.isEdge(c.cell)){g.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";g.geometry.relative=!0;g.connectable=!1;var e=this.view.getRelativePoint(c,b,d);g.geometry.x=Math.round(1E4*e.x)/1E4;g.geometry.y=Math.round(e.y);g.geometry.offset=new mxPoint(0,0);var e=this.view.getPoint(c,g.geometry),k=this.view.scale;g.geometry.offset=new mxPoint(Math.round((b-e.x)/
k),Math.round((d-e.y)/k))}else e=this.view.translate,g.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",g.geometry.width=40,g.geometry.height=20,g.geometry.x=Math.round(b/this.view.scale)-e.x-(null!=c?c.origin.x:0),g.geometry.y=Math.round(d/this.view.scale)-e.y-(null!=c?c.origin.y:0),g.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([g],null!=c?c.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[g])),this.autoSizeCell(g)}finally{this.getModel().endUpdate()}return g};
-Graph.prototype.addClickHandler=function(b,d,c){var g=mxUtils.bind(this,function(){var b=this.container.getElementsByTagName("a");if(null!=b)for(var c=0;c<b.length;c++){var g=this.getAbsoluteUrl(b[c].getAttribute("href"));null!=g&&(b[c].setAttribute("rel",this.linkRelation),b[c].setAttribute("href",g),null!=d&&mxEvent.addGestureListeners(b[c],null,null,d))}});this.model.addListener(mxEvent.CHANGE,g);g();var e=this.container.style.cursor,k=this.getTolerance(),f=this,m={currentState:null,currentLink:null,
+Graph.prototype.addClickHandler=function(b,d,c){var g=mxUtils.bind(this,function(){var b=this.container.getElementsByTagName("a");if(null!=b)for(var c=0;c<b.length;c++){var g=this.getAbsoluteUrl(b[c].getAttribute("href"));null!=g&&(b[c].setAttribute("rel",this.linkRelation),b[c].setAttribute("href",g),null!=d&&mxEvent.addGestureListeners(b[c],null,null,d))}});this.model.addListener(mxEvent.CHANGE,g);g();var e=this.container.style.cursor,k=this.getTolerance(),f=this,l={currentState:null,currentLink:null,
currentTarget:null,highlight:null!=b&&""!=b&&b!=mxConstants.NONE?new mxCellHighlight(f,b,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(b){var d=b.sourceState;if(null==d||null==f.getLinkForCell(d.cell))b=f.getCellAt(b.getGraphX(),b.getGraphY(),null,null,null,function(b,d,c){return null==f.getLinkForCell(b.cell)}),d=null==d||f.model.isAncestor(b,d.cell)?f.view.getState(b):null;d!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=d,null!=this.currentState&&
this.activate(this.currentState))},mouseDown:function(b,d){this.startX=d.getGraphX();this.startY=d.getGraphY();this.scrollLeft=f.container.scrollLeft;this.scrollTop=f.container.scrollTop;null==this.currentLink&&"auto"==f.container.style.overflow&&(f.container.style.cursor="move");this.updateCurrentState(d)},mouseMove:function(b,d){if(f.isMouseDown){if(null!=this.currentLink){var c=Math.abs(this.startX-d.getGraphX()),g=Math.abs(this.startY-d.getGraphY());(c>k||g>k)&&this.clear()}}else{for(c=d.getSource();null!=
-c&&"a"!=c.nodeName.toLowerCase();)c=c.parentNode;null!=c?this.clear():(null!=f.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&f.tooltipHandler.reset(d,!0,this.currentState),(null==this.currentState||d.getState()!=this.currentState&&null!=d.sourceState||!f.intersects(this.currentState,d.getGraphX(),d.getGraphY()))&&this.updateCurrentState(d))}},mouseUp:function(b,g){for(var e=g.getSource(),m=g.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
-f.container.scrollLeft)<k&&Math.abs(this.scrollTop-f.container.scrollTop)<k&&(null==g.sourceState||!g.isSource(g.sourceState.control))&&((mxEvent.isLeftMouseButton(m)||mxEvent.isMiddleMouseButton(m))&&!mxEvent.isPopupTrigger(m)||mxEvent.isTouchEvent(m))&&(null!=this.currentLink?(e=f.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==d||d(m,this.currentLink),mxEvent.isConsumed(m)||(m=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(m)?"_blank":
-e?f.linkTarget:"_top",f.openLink(this.currentLink,m),g.consume())):null!=c&&!g.isConsumed()&&Math.abs(this.scrollLeft-f.container.scrollLeft)<k&&Math.abs(this.scrollTop-f.container.scrollTop)<k&&Math.abs(this.startX-g.getGraphX())<k&&Math.abs(this.startY-g.getGraphY())<k&&c(g.getEvent()));this.clear()},activate:function(b){this.currentLink=f.getAbsoluteUrl(f.getLinkForCell(b.cell));null!=this.currentLink&&(this.currentTarget=f.getLinkTargetForCell(b.cell),f.container.style.cursor="pointer",null!=
-this.highlight&&this.highlight.highlight(b))},clear:function(){null!=f.container&&(f.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=f.tooltipHandler&&f.tooltipHandler.hide()}};f.click=function(b){};f.addMouseListener(m);mxEvent.addListener(document,"mouseleave",function(b){m.clear()})};Graph.prototype.duplicateCells=function(b,d){b=null!=b?b:this.getSelectionCells();d=null!=d?d:!0;for(var c=0;c<b.length;c++)this.isTableCell(b[c])&&
-(b[c]=this.model.getParent(b[c]));b=this.model.getTopmostCells(b);var g=this.getModel(),e=this.gridSize,k=[];g.beginUpdate();try{for(var f={},m=this.createCellLookup(b),l=this.cloneCells(b,!1,f,!0),c=0;c<b.length;c++){var p=g.getParent(b[c]);if(null!=p){var x=this.moveCells([l[c]],e,e,!1)[0];k.push(x);if(d)g.add(p,l[c]);else{var v=p.getIndex(b[c]);g.add(p,l[c],v+1)}if(this.isTable(p)){var n=this.getCellGeometry(l[c]),u=this.getCellGeometry(p);null!=n&&null!=u&&(u=u.clone(),u.height+=n.height,g.setGeometry(p,
-u))}}else k.push(l[c])}this.updateCustomLinks(this.createCellMapping(f,m),l,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",l))}finally{g.endUpdate()}return k};Graph.prototype.insertImage=function(b,d,c){if(null!=b&&null!=this.cellEditor.textarea){for(var g=this.cellEditor.textarea.getElementsByTagName("img"),e=[],k=0;k<g.length;k++)e.push(g[k]);document.execCommand("insertimage",!1,b);b=this.cellEditor.textarea.getElementsByTagName("img");if(b.length==e.length+1)for(k=b.length-
+c&&"a"!=c.nodeName.toLowerCase();)c=c.parentNode;null!=c?this.clear():(null!=f.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&f.tooltipHandler.reset(d,!0,this.currentState),(null==this.currentState||d.getState()!=this.currentState&&null!=d.sourceState||!f.intersects(this.currentState,d.getGraphX(),d.getGraphY()))&&this.updateCurrentState(d))}},mouseUp:function(b,g){for(var e=g.getSource(),l=g.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
+f.container.scrollLeft)<k&&Math.abs(this.scrollTop-f.container.scrollTop)<k&&(null==g.sourceState||!g.isSource(g.sourceState.control))&&((mxEvent.isLeftMouseButton(l)||mxEvent.isMiddleMouseButton(l))&&!mxEvent.isPopupTrigger(l)||mxEvent.isTouchEvent(l))&&(null!=this.currentLink?(e=f.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==d||d(l,this.currentLink),mxEvent.isConsumed(l)||(l=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(l)?"_blank":
+e?f.linkTarget:"_top",f.openLink(this.currentLink,l),g.consume())):null!=c&&!g.isConsumed()&&Math.abs(this.scrollLeft-f.container.scrollLeft)<k&&Math.abs(this.scrollTop-f.container.scrollTop)<k&&Math.abs(this.startX-g.getGraphX())<k&&Math.abs(this.startY-g.getGraphY())<k&&c(g.getEvent()));this.clear()},activate:function(b){this.currentLink=f.getAbsoluteUrl(f.getLinkForCell(b.cell));null!=this.currentLink&&(this.currentTarget=f.getLinkTargetForCell(b.cell),f.container.style.cursor="pointer",null!=
+this.highlight&&this.highlight.highlight(b))},clear:function(){null!=f.container&&(f.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=f.tooltipHandler&&f.tooltipHandler.hide()}};f.click=function(b){};f.addMouseListener(l);mxEvent.addListener(document,"mouseleave",function(b){l.clear()})};Graph.prototype.duplicateCells=function(b,d){b=null!=b?b:this.getSelectionCells();d=null!=d?d:!0;for(var c=0;c<b.length;c++)this.isTableCell(b[c])&&
+(b[c]=this.model.getParent(b[c]));b=this.model.getTopmostCells(b);var g=this.getModel(),e=this.gridSize,k=[];g.beginUpdate();try{for(var f={},l=this.createCellLookup(b),m=this.cloneCells(b,!1,f,!0),c=0;c<b.length;c++){var p=g.getParent(b[c]);if(null!=p){var x=this.moveCells([m[c]],e,e,!1)[0];k.push(x);if(d)g.add(p,m[c]);else{var v=p.getIndex(b[c]);g.add(p,m[c],v+1)}if(this.isTable(p)){var n=this.getCellGeometry(m[c]),t=this.getCellGeometry(p);null!=n&&null!=t&&(t=t.clone(),t.height+=n.height,g.setGeometry(p,
+t))}}else k.push(m[c])}this.updateCustomLinks(this.createCellMapping(f,l),m,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",m))}finally{g.endUpdate()}return k};Graph.prototype.insertImage=function(b,d,c){if(null!=b&&null!=this.cellEditor.textarea){for(var g=this.cellEditor.textarea.getElementsByTagName("img"),e=[],k=0;k<g.length;k++)e.push(g[k]);document.execCommand("insertimage",!1,b);b=this.cellEditor.textarea.getElementsByTagName("img");if(b.length==e.length+1)for(k=b.length-
1;0<=k;k--)if(0==k||b[k]!=e[k-1]){b[k].setAttribute("width",d);b[k].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(b){if(null!=this.cellEditor.textarea)if(0==b.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var d=this.cellEditor.textarea.getElementsByTagName("a"),c=[],g=0;g<d.length;g++)c.push(d[g]);document.execCommand("createlink",!1,mxUtils.trim(b));d=this.cellEditor.textarea.getElementsByTagName("a");if(d.length==c.length+1)for(g=d.length-1;0<=g;g--)if(d[g]!=
c[g-1]){for(d=d[g].getElementsByTagName("a");0<d.length;){for(c=d[0].parentNode;null!=d[0].firstChild;)c.insertBefore(d[0].firstChild,d[0]);c.removeChild(d[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(b))};Graph.prototype.isCellResizable=function(b){var d=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.getCurrentCellStyle(b);return!this.isTableCell(b)&&!this.isTableRow(b)&&(d||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE])};
-Graph.prototype.distributeCells=function(b,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var c=[],g=null,e=null,k=0;k<d.length;k++)if(this.getModel().isVertex(d[k])){var f=this.view.getState(d[k]);if(null!=f){var m=b?f.getCenterX():f.getCenterY(),g=null!=g?Math.max(g,m):m,e=null!=e?Math.min(e,m):m;c.push(f)}}if(2<c.length){c.sort(function(d,c){return b?d.x-c.x:d.y-c.y});f=this.view.translate;m=this.view.scale;e=e/m-(b?f.x:f.y);g=g/m-(b?f.x:f.y);this.getModel().beginUpdate();
-try{for(var l=(g-e)/(c.length-1),g=e,k=1;k<c.length-1;k++){var p=this.view.getState(this.model.getParent(c[k].cell)),x=this.getCellGeometry(c[k].cell),g=g+l;null!=x&&null!=p&&(x=x.clone(),b?x.x=Math.round(g-x.width/2)-p.origin.x:x.y=Math.round(g-x.height/2)-p.origin.y,this.getModel().setGeometry(c[k].cell,x))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(b){return mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)};Graph.prototype.createSvgImageExport=
-function(){var b=new mxImageExport;b.getLinkForCellState=mxUtils.bind(this,function(b,d){return this.getLinkForCell(b.cell)});return b};Graph.prototype.parseBackgroundImage=function(b){var d=null;null!=b&&0<b.length&&(b=JSON.parse(b),d=new mxImage(b.src,b.width,b.height));return d};Graph.prototype.getBackgroundImageObject=function(b){return b};Graph.prototype.getSvg=function(b,d,c,g,e,k,f,m,l,p,x,v,n,u){var t=null;if(null!=u)for(t=new mxDictionary,x=0;x<u.length;x++)t.put(u[x],!0);if(u=this.useCssTransforms)this.useCssTransforms=
-!1,this.view.revalidate(),this.sizeDidChange();try{d=null!=d?d:1;c=null!=c?c:0;e=null!=e?e:!0;k=null!=k?k:!0;f=null!=f?f:!0;p=null!=p?p:!1;var y="page"==n?this.view.getBackgroundPageBounds():k&&null==t||g||"diagram"==n?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),C=this.view.scale;"diagram"==n&&null!=this.backgroundImage&&(y=mxRectangle.fromRectangle(y),y.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*C,(this.view.translate.y+this.backgroundImage.y)*C,this.backgroundImage.width*
+Graph.prototype.distributeCells=function(b,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var c=[],g=null,e=null,k=0;k<d.length;k++)if(this.getModel().isVertex(d[k])){var f=this.view.getState(d[k]);if(null!=f){var l=b?f.getCenterX():f.getCenterY(),g=null!=g?Math.max(g,l):l,e=null!=e?Math.min(e,l):l;c.push(f)}}if(2<c.length){c.sort(function(d,c){return b?d.x-c.x:d.y-c.y});f=this.view.translate;l=this.view.scale;e=e/l-(b?f.x:f.y);g=g/l-(b?f.x:f.y);this.getModel().beginUpdate();
+try{for(var m=(g-e)/(c.length-1),g=e,k=1;k<c.length-1;k++){var p=this.view.getState(this.model.getParent(c[k].cell)),x=this.getCellGeometry(c[k].cell),g=g+m;null!=x&&null!=p&&(x=x.clone(),b?x.x=Math.round(g-x.width/2)-p.origin.x:x.y=Math.round(g-x.height/2)-p.origin.y,this.getModel().setGeometry(c[k].cell,x))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(b){return mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)};Graph.prototype.createSvgImageExport=
+function(){var b=new mxImageExport;b.getLinkForCellState=mxUtils.bind(this,function(b,d){return this.getLinkForCell(b.cell)});return b};Graph.prototype.parseBackgroundImage=function(b){var d=null;null!=b&&0<b.length&&(b=JSON.parse(b),d=new mxImage(b.src,b.width,b.height));return d};Graph.prototype.getBackgroundImageObject=function(b){return b};Graph.prototype.getSvg=function(b,d,c,g,e,k,f,l,m,p,x,v,n,t){var u=null;if(null!=t)for(u=new mxDictionary,x=0;x<t.length;x++)u.put(t[x],!0);if(t=this.useCssTransforms)this.useCssTransforms=
+!1,this.view.revalidate(),this.sizeDidChange();try{d=null!=d?d:1;c=null!=c?c:0;e=null!=e?e:!0;k=null!=k?k:!0;f=null!=f?f:!0;p=null!=p?p:!1;var y="page"==n?this.view.getBackgroundPageBounds():k&&null==u||g||"diagram"==n?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),C=this.view.scale;"diagram"==n&&null!=this.backgroundImage&&(y=mxRectangle.fromRectangle(y),y.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*C,(this.view.translate.y+this.backgroundImage.y)*C,this.backgroundImage.width*
C,this.backgroundImage.height*C)));if(null==y)throw Error(mxResources.get("drawingEmpty"));var z=mxUtils.createXmlDocument(),J=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"svg"):z.createElement("svg");null!=b&&(null!=J.style?J.style.backgroundColor=b:J.setAttribute("style","background-color:"+b));null==z.createElementNS?(J.setAttribute("xmlns",mxConstants.NS_SVG),J.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):J.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);
-b=d/C;var q=Math.max(1,Math.ceil(y.width*b)+2*c)+(p&&0==c?5:0),ha=Math.max(1,Math.ceil(y.height*b)+2*c)+(p&&0==c?5:0);J.setAttribute("version","1.1");J.setAttribute("width",q+"px");J.setAttribute("height",ha+"px");J.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+ha);z.appendChild(J);var da=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"g"):z.createElement("g");J.appendChild(da);var A=this.createSvgCanvas(da);A.foOffset=e?-.5:0;A.textOffset=e?-.5:0;A.imageOffset=e?-.5:0;A.translate(Math.floor(c/
-d-y.x/C),Math.floor(c/d-y.y/C));var K=document.createElement("div"),ca=A.getAlternateText;A.getAlternateText=function(b,d,c,g,e,k,f,m,l,p,x,v,n){if(null!=k&&0<this.state.fontSize)try{mxUtils.isNode(k)?k=k.innerText:(K.innerHTML=k,k=mxUtils.extractTextWithWhitespace(K.childNodes));for(var u=Math.ceil(2*g/this.state.fontSize),t=[],B=0,wa=0;(0==u||B<u)&&wa<k.length;){var Ta=k.charCodeAt(wa);if(10==Ta||13==Ta){if(0<B)break}else t.push(k.charAt(wa)),255>Ta&&B++;wa++}t.length<k.length&&1<k.length-t.length&&
-(k=mxUtils.trim(t.join(""))+"...");return k}catch(Ja){return ca.apply(this,arguments)}else return ca.apply(this,arguments)};var W=this.backgroundImage;if(null!=W){d=C/d;var aa=this.view.translate,G=new mxRectangle((W.x+aa.x)*d,(W.y+aa.y)*d,W.width*d,W.height*d);mxUtils.intersects(y,G)&&A.image(W.x+aa.x,W.y+aa.y,W.width,W.height,W.src,!0)}A.scale(b);A.textEnabled=f;m=null!=m?m:this.createSvgImageExport();var pa=m.drawCellState,O=m.getLinkForCellState;m.getLinkForCellState=function(b,d){var c=O.apply(this,
-arguments);return null==c||b.view.graph.isCustomLink(c)?null:c};m.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};m.drawCellState=function(b,d){for(var c=b.view.graph,g=null!=t?t.get(b.cell):c.isCellSelected(b.cell),e=c.model.getParent(b.cell);!(k&&null==t||g)&&null!=e;)g=null!=t?t.get(e):c.isCellSelected(e),e=c.model.getParent(e);(k&&null==t||g)&&pa.apply(this,arguments)};m.drawState(this.getView().getState(this.model.root),A);this.updateSvgLinks(J,l,!0);
-this.addForeignObjectWarning(A,J);return J}finally{u&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(b,d){if("0"!=urlParams["svg-warning"]&&0<d.getElementsByTagName("foreignObject").length){var c=b.createElement("switch"),g=b.createElement("g");g.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=b.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
+b=d/C;var q=Math.max(1,Math.ceil(y.width*b)+2*c)+(p&&0==c?5:0),ba=Math.max(1,Math.ceil(y.height*b)+2*c)+(p&&0==c?5:0);J.setAttribute("version","1.1");J.setAttribute("width",q+"px");J.setAttribute("height",ba+"px");J.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+ba);z.appendChild(J);var ea=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"g"):z.createElement("g");J.appendChild(ea);var A=this.createSvgCanvas(ea);A.foOffset=e?-.5:0;A.textOffset=e?-.5:0;A.imageOffset=e?-.5:0;A.translate(Math.floor(c/
+d-y.x/C),Math.floor(c/d-y.y/C));var K=document.createElement("div"),da=A.getAlternateText;A.getAlternateText=function(b,d,c,g,e,k,f,l,m,p,x,v,n){if(null!=k&&0<this.state.fontSize)try{mxUtils.isNode(k)?k=k.innerText:(K.innerHTML=k,k=mxUtils.extractTextWithWhitespace(K.childNodes));for(var t=Math.ceil(2*g/this.state.fontSize),u=[],B=0,wa=0;(0==t||B<t)&&wa<k.length;){var Ta=k.charCodeAt(wa);if(10==Ta||13==Ta){if(0<B)break}else u.push(k.charAt(wa)),255>Ta&&B++;wa++}u.length<k.length&&1<k.length-u.length&&
+(k=mxUtils.trim(u.join(""))+"...");return k}catch(Ja){return da.apply(this,arguments)}else return da.apply(this,arguments)};var W=this.backgroundImage;if(null!=W){d=C/d;var aa=this.view.translate,ma=new mxRectangle((W.x+aa.x)*d,(W.y+aa.y)*d,W.width*d,W.height*d);mxUtils.intersects(y,ma)&&A.image(W.x+aa.x,W.y+aa.y,W.width,W.height,W.src,!0)}A.scale(b);A.textEnabled=f;l=null!=l?l:this.createSvgImageExport();var G=l.drawCellState,O=l.getLinkForCellState;l.getLinkForCellState=function(b,d){var c=O.apply(this,
+arguments);return null==c||b.view.graph.isCustomLink(c)?null:c};l.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};l.drawCellState=function(b,d){for(var c=b.view.graph,g=null!=u?u.get(b.cell):c.isCellSelected(b.cell),e=c.model.getParent(b.cell);!(k&&null==u||g)&&null!=e;)g=null!=u?u.get(e):c.isCellSelected(e),e=c.model.getParent(e);(k&&null==u||g)&&G.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),A);this.updateSvgLinks(J,m,!0);
+this.addForeignObjectWarning(A,J);return J}finally{t&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(b,d){if("0"!=urlParams["svg-warning"]&&0<d.getElementsByTagName("foreignObject").length){var c=b.createElement("switch"),g=b.createElement("g");g.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=b.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
d.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var k=b.createElement("text");k.setAttribute("text-anchor","middle");k.setAttribute("font-size","10px");k.setAttribute("x","50%");k.setAttribute("y","100%");mxUtils.write(k,Graph.foreignObjectWarningText);c.appendChild(g);
e.appendChild(k);c.appendChild(e);d.appendChild(c)}};Graph.prototype.updateSvgLinks=function(b,d,c){b=b.getElementsByTagName("a");for(var g=0;g<b.length;g++)if(null==b[g].getAttribute("target")){var e=b[g].getAttribute("href");null==e&&(e=b[g].getAttribute("xlink:href"));null!=e&&(null!=d&&/^https?:\/\//.test(e)?b[g].setAttribute("target",d):c&&this.isCustomLink(e)&&b[g].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(b){b=new mxSvgCanvas2D(b);b.pointerEvents=
!0;return b};Graph.prototype.getSelectedElement=function(){var b=null;if(window.getSelection){var d=window.getSelection();d.getRangeAt&&d.rangeCount&&(b=d.getRangeAt(0).commonAncestorContainer)}else document.selection&&(b=document.selection.createRange().parentElement());return b};Graph.prototype.getSelectedEditingElement=function(){for(var b=this.getSelectedElement();null!=b&&b.nodeType!=mxConstants.NODETYPE_ELEMENT;)b=b.parentNode;null!=b&&b==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&
this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=this.cellEditor.textarea.firstChild);return b};Graph.prototype.getParentByName=function(b,d,c){for(;null!=b&&b.nodeName!=d;){if(b==c)return null;b=b.parentNode}return b};Graph.prototype.getParentByNames=function(b,d,c){for(;null!=b&&!(0<=mxUtils.indexOf(d,b.nodeName));){if(b==c)return null;b=b.parentNode}return b};Graph.prototype.selectNode=function(b){var d=null;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&
-d.rangeCount){var c=document.createRange();c.selectNode(b);d.removeAllRanges();d.addRange(c)}}else(d=document.selection)&&"Control"!=d.type&&(b=d.createRange(),b.collapse(!0),c=d.createRange(),c.setEndPoint("StartToStart",b),c.select())};Graph.prototype.deleteCells=function(b,d){var c=null;if(null!=b&&0<b.length){this.model.beginUpdate();try{for(var g=0;g<b.length;g++){var e=this.model.getParent(b[g]);if(this.isTable(e)){var k=this.getCellGeometry(b[g]),f=this.getCellGeometry(e);null!=k&&null!=f&&
-(f=f.clone(),f.height-=k.height,this.model.setGeometry(e,f))}}var m=this.selectParentAfterDelete?this.model.getParents(b):null;this.removeCells(b,d)}finally{this.model.endUpdate()}if(null!=m)for(c=[],g=0;g<m.length;g++)this.model.contains(m[g])&&(this.model.isVertex(m[g])||this.model.isEdge(m[g]))&&c.push(m[g])}return c};Graph.prototype.insertTableColumn=function(b,d){var c=this.getModel();c.beginUpdate();try{var g=b,e=0;if(this.isTableCell(b))var k=c.getParent(b),g=c.getParent(k),e=mxUtils.indexOf(c.getChildCells(k,
-!0),b);else this.isTableRow(b)?g=c.getParent(b):b=c.getChildCells(g,!0)[0],d||(e=c.getChildCells(b,!0).length-1);for(var f=c.getChildCells(g,!0),m=Graph.minTableColumnWidth,k=0;k<f.length;k++){var l=c.getChildCells(f[k],!0)[e],p=c.cloneCell(l,!1),x=this.getCellGeometry(p);p.value=null;p.style=mxUtils.setStyle(mxUtils.setStyle(p.style,"rowspan",null),"colspan",null);if(null!=x){null!=x.alternateBounds&&(x.width=x.alternateBounds.width,x.height=x.alternateBounds.height,x.alternateBounds=null);var m=
-x.width,v=this.getCellGeometry(f[k]);null!=v&&(x.height=v.height)}c.add(f[k],p,e+(d?0:1))}var n=this.getCellGeometry(g);null!=n&&(n=n.clone(),n.width+=m,c.setGeometry(g,n))}finally{c.endUpdate()}};Graph.prototype.deleteLane=function(b){var d=this.getModel();d.beginUpdate();try{var c=null,c="stackLayout"==this.getCurrentCellStyle(b).childLayout?b:d.getParent(b),g=d.getChildCells(c,!0);0==g.length?d.remove(c):(c==b&&(b=g[g.length-1]),d.remove(b))}finally{d.endUpdate()}};Graph.prototype.insertLane=function(b,
-d){var c=this.getModel();c.beginUpdate();try{var g=null,e=b;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var g=e,k=c.getChildCells(g,!0),e=k[d?0:k.length-1];else g=c.getParent(e);var f=g.getIndex(e),e=c.cloneCell(e,!1);e.value=null;c.add(g,e,f+(d?0:1))}finally{c.endUpdate()}};Graph.prototype.insertTableRow=function(b,d){var c=this.getModel();c.beginUpdate();try{var g=b,e=b;if(this.isTableCell(b))e=c.getParent(b),g=c.getParent(e);else if(this.isTableRow(b))g=c.getParent(b);else var k=
-c.getChildCells(g,!0),e=k[d?0:k.length-1];var f=c.getChildCells(e,!0),m=g.getIndex(e),e=c.cloneCell(e,!1);e.value=null;var l=this.getCellGeometry(e);if(null!=l){for(k=0;k<f.length;k++){b=c.cloneCell(f[k],!1);b.value=null;b.style=mxUtils.setStyle(mxUtils.setStyle(b.style,"rowspan",null),"colspan",null);var p=this.getCellGeometry(b);null!=p&&(null!=p.alternateBounds&&(p.width=p.alternateBounds.width,p.height=p.alternateBounds.height,p.alternateBounds=null),p.height=l.height);e.insert(b)}c.add(g,e,m+
-(d?0:1));var x=this.getCellGeometry(g);null!=x&&(x=x.clone(),x.height+=l.height,c.setGeometry(g,x))}}finally{c.endUpdate()}};Graph.prototype.deleteTableColumn=function(b){var d=this.getModel();d.beginUpdate();try{var c=b,g=b;this.isTableCell(b)&&(g=d.getParent(b));this.isTableRow(g)&&(c=d.getParent(g));var e=d.getChildCells(c,!0);if(0==e.length)d.remove(c);else{this.isTableRow(g)||(g=e[0]);var k=d.getChildCells(g,!0);if(1>=k.length)d.remove(c);else{var f=k.length-1;this.isTableCell(b)&&(f=mxUtils.indexOf(k,
-b));for(g=b=0;g<e.length;g++){var m=d.getChildCells(e[g],!0)[f];d.remove(m);var l=this.getCellGeometry(m);null!=l&&(b=Math.max(b,l.width))}var p=this.getCellGeometry(c);null!=p&&(p=p.clone(),p.width-=b,d.setGeometry(c,p))}}}finally{d.endUpdate()}};Graph.prototype.deleteTableRow=function(b){var d=this.getModel();d.beginUpdate();try{var c=b,g=b;this.isTableCell(b)&&(b=g=d.getParent(b));this.isTableRow(b)&&(c=d.getParent(g));var e=d.getChildCells(c,!0);if(1>=e.length)d.remove(c);else{this.isTableRow(g)||
-(g=e[e.length-1]);d.remove(g);b=0;var k=this.getCellGeometry(g);null!=k&&(b=k.height);var f=this.getCellGeometry(c);null!=f&&(f=f.clone(),f.height-=b,d.setGeometry(c,f))}}finally{d.endUpdate()}};Graph.prototype.insertRow=function(b,d){for(var c=b.tBodies[0],g=c.rows[0].cells,e=0,k=0;k<g.length;k++)var f=g[k].getAttribute("colspan"),e=e+(null!=f?parseInt(f):1);c=c.insertRow(d);for(k=0;k<e;k++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(b,d){b.tBodies[0].deleteRow(d)};
-Graph.prototype.insertColumn=function(b,d){var c=b.tHead;if(null!=c)for(var g=0;g<c.rows.length;g++){var e=document.createElement("th");c.rows[g].appendChild(e);mxUtils.br(e)}c=b.tBodies[0];for(g=0;g<c.rows.length;g++)e=c.rows[g].insertCell(d),mxUtils.br(e);return c.rows[0].cells[0<=d?d:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(b,d){if(0<=d)for(var c=b.tBodies[0].rows,g=0;g<c.length;g++)c[g].cells.length>d&&c[g].deleteCell(d)};Graph.prototype.pasteHtmlAtCaret=function(b){var d;
-if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){d=d.getRangeAt(0);d.deleteContents();var c=document.createElement("div");c.innerHTML=b;b=document.createDocumentFragment();for(var g;g=c.firstChild;)lastNode=b.appendChild(g);d.insertNode(b)}}else(d=document.selection)&&"Control"!=d.type&&d.createRange().pasteHTML(b)};Graph.prototype.createLinkForHint=function(b,d){function c(b,d){b.length>d&&(b=b.substring(0,Math.round(d/2))+"..."+b.substring(b.length-Math.round(d/4)));
-return b}b=null!=b?b:"javascript:void(0);";if(null==d||0==d.length)d=this.isCustomLink(b)?this.getLinkTitle(b):b;var g=document.createElement("a");g.setAttribute("rel",this.linkRelation);g.setAttribute("href",this.getAbsoluteUrl(b));g.setAttribute("title",c(this.isCustomLink(b)?this.getLinkTitle(b):b,80));null!=this.linkTarget&&g.setAttribute("target",this.linkTarget);mxUtils.write(g,c(d,40));this.isCustomLink(b)&&mxEvent.addListener(g,"click",mxUtils.bind(this,function(d){this.customLinkClicked(b);
-mxEvent.consume(d)}));return g};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(b,d){this.popupMenuHandler.hideMenu()});var b=this.updateMouseEvent;this.updateMouseEvent=function(d){d=b.apply(this,arguments);if(mxEvent.isTouchEvent(d.getEvent())&&null==d.getState()){var c=this.getCellAt(d.graphX,d.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,d.graphX,
-d.graphY)||(d.state=this.view.getState(c),null!=d.state&&null!=d.state.shape&&(this.container.style.cursor=d.state.shape.node.style.cursor))}null==d.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return d};var d=!1,c=!1,g=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(b,k,f){b==mxEvent.MOUSE_DOWN&&(k=this.updateMouseEvent(k),d=this.isCellSelected(k.getCell()),c=this.isSelectionEmpty(),g=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=
-mxUtils.bind(this,function(b,e){var k=mxEvent.isMouseEvent(e.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!g&&!k&&(c&&null==e.getCell()&&this.isSelectionEmpty()||d&&this.isCellSelected(e.getCell())));k=!d||k?null:mxUtils.bind(this,function(b){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var d=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(e.getX()+
-d.x+1,e.getY()+d.y+1,b,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[b,e,k])})};mxCellEditor.prototype.isContentEditing=function(){var b=this.graph.view.getState(this.editingCell);return null!=b&&1==b.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var b="";window.getSelection?b=window.getSelection():
-document.getSelection?b=document.getSelection():document.selection&&(b=document.selection.createRange().text);return""!=b};mxCellEditor.prototype.insertTab=function(b){var d=this.textarea.ownerDocument.defaultView.getSelection(),c=d.getRangeAt(0),g="\t";if(null!=b)for(g="";0<b;)g+=" ",b--;b=document.createElement("span");b.style.whiteSpace="pre";b.appendChild(document.createTextNode(g));c.insertNode(b);c.setStartAfter(b);c.setEndAfter(b);d.removeAllRanges();d.addRange(c)};mxCellEditor.prototype.alignText=
-function(b,d){var c=null!=d&&mxEvent.isShiftDown(d);if(c||null!=window.getSelection&&null!=window.getSelection().containsNode){var g=!0;this.graph.processElements(this.textarea,function(b){c||window.getSelection().containsNode(b,!0)?(b.removeAttribute("align"),b.style.textAlign=null):g=!1});g&&this.graph.cellEditor.setAlign(b)}document.execCommand("justify"+b.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var b=window.getSelection();if(b.getRangeAt&&
-b.rangeCount){for(var d=[],c=0,g=b.rangeCount;c<g;++c)d.push(b.getRangeAt(c));return d}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(b){try{if(b)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var d=0,c=b.length;d<c;++d)sel.addRange(b[d])}else document.selection&&b.select&&b.select()}catch(xa){}};var t=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
-function(b){null!=b.text&&(b.text.replaceLinefeeds="0"!=mxUtils.getValue(b.style,"nl2Br","1"));t.apply(this,arguments)};var z=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(b,d){this.isKeepFocusEvent(b)||!mxEvent.isAltDown(b.getEvent())?z.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(b){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var y=mxCellEditor.prototype.startEditing;
-mxCellEditor.prototype.startEditing=function(b,d){b=this.graph.getStartEditingCell(b,d);y.apply(this,arguments);var c=this.graph.view.getState(b);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(b);var c=this.graph.getModel().getParent(b),g=this.graph.getCellGeometry(b);if(this.graph.getModel().isEdge(c)&&null!=g&&g.relative||this.graph.getModel().isEdge(b))this.textarea.style.outline=
-mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var F=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(b){function d(b,c){c.originalNode=b;b=b.firstChild;for(var g=c.firstChild;null!=b&&null!=g;)d(b,g),b=b.nextSibling,g=g.nextSibling;return c}function c(b,d){if(null!=b)if(d.originalNode!=b)g(b);else for(b=b.firstChild,d=d.firstChild;null!=b;){var e=b.nextSibling;null==d?g(b):(c(b,d),d=d.nextSibling);b=e}}function g(b){for(var d=
-b.firstChild;null!=d;){var c=d.nextSibling;g(d);d=c}1==b.nodeType&&("BR"===b.nodeName||null!=b.firstChild)||3==b.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(b)).length?(3==b.nodeType&&mxUtils.setTextContent(b,mxUtils.getTextContent(b).replace(/\n|\r/g,"")),1==b.nodeType&&(b.removeAttribute("style"),b.removeAttribute("class"),b.removeAttribute("width"),b.removeAttribute("cellpadding"),b.removeAttribute("cellspacing"),b.removeAttribute("border"))):b.parentNode.removeChild(b)}F.apply(this,arguments);
-7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(b){var g=d(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]>")?c(this.textarea,g):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var b=this.graph.view.getState(this.editingCell);
-if(null!=b){var d=null!=b&&"0"!=mxUtils.getValue(b.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){l=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<l.length&&"\n"==l.charAt(l.length-1)&&(l=l.substring(0,l.length-1));l=this.graph.sanitizeHtml(d?l.replace(/\n/g,"<br/>"):l,!0);this.textarea.className="mxCellEditor geContentEditable";var g=mxUtils.getValue(b.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),d=mxUtils.getValue(b.style,mxConstants.STYLE_FONTFAMILY,
-mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),k=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,f=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,m=[];(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&m.push("underline");(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,
-0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&m.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(g*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(g)+"px";this.textarea.style.textDecoration=m.join(" ");this.textarea.style.fontWeight=k?"bold":"normal";this.textarea.style.fontStyle=f?"italic":"";this.textarea.style.fontFamily=d;this.textarea.style.textAlign=e;this.textarea.style.padding=
-"0px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML=l,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.innerHTML="");var l=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(l=mxUtils.replaceTrailingNewlines(l,"<div><br></div>"));l=this.graph.sanitizeHtml(d?
-l.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):l,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var g=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(g*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(g)+"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!=l&&(this.textarea.innerHTML=l);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()}};var D=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(b,d){if(null!=this.textarea)if(b=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=
-b){var c=b.view.scale;this.bounds=mxRectangle.fromRectangle(b);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var g=null!=b.text?b.text.margin:null;null==g&&(g=mxUtils.getAlignmentAsPoint(mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(b.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=g.x*this.bounds.width;this.bounds.y+=g.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-
-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+
-"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",D.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(b,d){if("0"==mxUtils.getValue(b.style,"html",
-"0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(b.cell,d);"1"==mxUtils.getValue(b.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d=
-"1"==mxUtils.getValue(b.style,"nl2Br","1")?d.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var E=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(b){this.codeViewMode&&this.toggleViewMode();E.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(ha){}};var H=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(b,d){this.graph.getModel().beginUpdate();
-try{H.apply(this,arguments),""==d&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)&&this.graph.isTransparentState(b)&&this.graph.removeCells([b.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=
-mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getBorderColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,
-mxConstants.STYLE_STROKECOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getMinimumSize=function(b){var d=this.graph.getView().scale;return new mxRectangle(0,0,null==b.text?30:b.text.size*d+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(b,d){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(d.getEvent)};mxGraphView.prototype.formatUnitText=function(b){return b?
-c(b,this.unit):b};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var g=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+this.currentDx)/e-g.x);g=this.roundLength((this.bounds.y+this.currentDy)/e-g.y);e=this.graph.view.unit;this.hint.innerHTML=c(d,e)+", "+c(g,e);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 N=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(b,d){N.apply(this,arguments);var c=this.graph.getCellStyle(b);if(null==c.childLayout){var g=this.graph.model.getParent(b),e=null!=g?this.graph.getCellGeometry(g):null;
-if(null!=e&&(c=this.graph.getCellStyle(g),"stackLayout"==c.childLayout)){var k=parseFloat(mxUtils.getValue(c,"stackBorder",mxStackLayout.prototype.border)),c="1"==mxUtils.getValue(c,"horizontalStack","1"),f=this.graph.getActualStartSize(g),e=e.clone();c?e.height=d.height+f.y+f.height+2*k:e.width=d.width+f.x+f.width+2*k;this.graph.model.setGeometry(g,e)}}};var A=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){c.get(b)||
-(c.put(b,!0),e.push(b))}for(var d=A.apply(this,arguments),c=new mxDictionary,g=this.graph.model,e=[],k=0;k<d.length;k++){var f=d[k];this.graph.isTableCell(f)?b(g.getParent(g.getParent(f))):this.graph.isTableRow(f)&&b(g.getParent(f));b(f)}return e};var G=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=G.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var I=mxEdgeHandler.prototype.createParentHighlightShape;
-mxEdgeHandler.prototype.createParentHighlightShape=function(b){var d=I.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var b=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+b.x/2,this.bounds.y+this.rotationHandleVSpacing-b.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(b,d){return this.graph.isRecursiveVertexResize(b)&&
-!mxEvent.isControlDown(d.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(b,d){return!(!this.graph.isSwimlane(b.cell)&&0<this.graph.model.getChildCount(b.cell)&&!this.graph.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null))&&mxEvent.isControlDown(d.getEvent())||mxEvent.isMetaDown(d.getEvent())};var L=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return L.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 M=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return M.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&
-!this.graph.isTableRow(this.state.cell)};var K=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(b){return b.tableHandle||K.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var O=mxVertexHandler.prototype.getSelectionBorderBounds;
-mxVertexHandler.prototype.getSelectionBorderBounds=function(){return O.apply(this,arguments).grow(-this.getSelectionBorderInset())};var U=null,X=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==U&&(U=mxCellRenderer.defaultShapes.tableLine);var b=X.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var d=function(b,d,c){for(var g=[],e=0;e<b.length;e++){var f=b[e];g.push(null==f?null:new mxPoint((l+f.x+d)*k,(p+f.y+c)*k))}return g},
-c=this,g=this.graph,e=g.model,k=g.view.scale,f=this.state,m=this.selectionBorder,l=this.state.origin.x+g.view.translate.x,p=this.state.origin.y+g.view.translate.y;null==b&&(b=[]);var x=g.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<x.length){for(var v=e.getChildCells(x[0].cell,!0),n=g.getTableLines(this.state.cell,!1,!0),u=g.getTableLines(this.state.cell,!0,!1),e=0;e<x.length;e++)mxUtils.bind(this,function(e){var l=x[e],p=e<x.length-1?x[e+1]:null,p=null!=p?g.getCellGeometry(p.cell):
-null,v=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=u[e]?new U(u[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);p.isDashed=m.isDashed;p.svgStrokeTolerance++;l=new mxHandle(l,"row-resize",null,p);l.tableHandle=!0;var n=0;l.shape.node.parentNode.insertBefore(l.shape.node,l.shape.node.parentNode.firstChild);l.redraw=function(){if(null!=this.shape){this.shape.stroke=0==n?mxConstants.NONE:m.stroke;if(this.shape.constructor==U)this.shape.line=d(u[e],0,n),this.shape.updateBoundsFromLine();
-else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+n*k;this.shape.bounds.x=f.x+(e==x.length-1?0:b.x*k);this.shape.bounds.width=f.width-(e==x.length-1?0:b.width+b.x+k)}this.shape.redraw()}};var t=!1;l.setPosition=function(b,d,c){n=Math.max(Graph.minTableRowHeight-b.height,d.y-b.y-b.height);t=mxEvent.isShiftDown(c.getEvent());null!=v&&t&&(n=Math.min(n,v.height-Graph.minTableRowHeight))};l.execute=function(b){if(0!=n)g.setTableRowHeight(this.state.cell,
-n,!t);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}n=0};l.reset=function(){n=0};b.push(l)})(e);for(e=0;e<v.length;e++)mxUtils.bind(this,function(e){var l=g.view.getState(v[e]),p=g.getCellGeometry(v[e]),x=null!=p.alternateBounds?p.alternateBounds:p;null==l&&(l=new mxCellState(g.view,v[e],g.getCellStyle(v[e])),l.x=f.x+p.x*k,l.y=f.y+p.y*k,l.width=x.width*k,l.height=x.height*k,l.updateCachedBounds());var p=e<v.length-1?
-v[e+1]:null,p=null!=p?g.getCellGeometry(p):null,u=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=n[e]?new U(n[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=m.isDashed;p.svgStrokeTolerance++;l=new mxHandle(l,"col-resize",null,p);l.tableHandle=!0;var t=0;l.shape.node.parentNode.insertBefore(l.shape.node,l.shape.node.parentNode.firstChild);l.redraw=function(){if(null!=this.shape){this.shape.stroke=0==t?mxConstants.NONE:m.stroke;if(this.shape.constructor==
-U)this.shape.line=d(n[e],t,0),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(x.width+t)*k;this.shape.bounds.y=f.y+(e==v.length-1?0:b.y*k);this.shape.bounds.height=f.height-(e==v.length-1?0:(b.height+b.y)*k)}this.shape.redraw()}};var y=!1;l.setPosition=function(b,d,c){t=Math.max(Graph.minTableColumnWidth-x.width,d.x-b.x-x.width);y=mxEvent.isShiftDown(c.getEvent());null==u||y||(t=Math.min(t,u.width-Graph.minTableColumnWidth))};
-l.execute=function(b){if(0!=t)g.setTableColumnWidth(this.state.cell,t,y);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}t=0};l.positionChanged=function(){};l.reset=function(){t=0};b.push(l)})(e)}}return null!=b?b.reverse():null};var ma=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){ma.apply(this,arguments);if(null!=this.moveHandles)for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].style.visibility=
-b?"":"hidden";if(null!=this.cornerHandles)for(d=0;d<this.cornerHandles.length;d++)this.cornerHandles[d].node.style.visibility=b?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var b=this.graph.model;if(null!=this.moveHandles){for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].parentNode.removeChild(this.moveHandles[d]);this.moveHandles=null}this.moveHandles=[];for(d=0;d<b.getChildCount(this.state.cell);d++)mxUtils.bind(this,function(d){if(null!=d&&b.isVertex(d.cell)){var c=
-mxUtils.createImage(Editor.rowMoveImage);c.style.position="absolute";c.style.cursor="pointer";c.style.width="7px";c.style.height="4px";c.style.padding="4px 2px 4px 2px";c.rowState=d;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(b){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(b)&&this.graph.isCellSelected(d.cell)||this.graph.selectCellForEvent(d.cell,b);mxEvent.isPopupTrigger(b)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),
-mxEvent.getClientY(b),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0);mxEvent.consume(b)}),null,mxUtils.bind(this,function(b){mxEvent.isPopupTrigger(b)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(b),mxEvent.getClientY(b),d.cell,b),mxEvent.consume(b))}));this.moveHandles.push(c);this.graph.container.appendChild(c)}})(this.graph.view.getState(b.getChildAt(this.state.cell,d)))};mxVertexHandler.prototype.refresh=
-function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ba=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,0),d=this.tolerance,c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&mxStencilRegistry.getStencil(c);c=this.graph.isTable(this.state.cell)||
-this.graph.cellEditor.getEditingCell()==this.state.cell;if(!c&&null!=this.customHandles)for(var g=0;g<this.customHandles.length;g++)if(null!=this.customHandles[g].shape&&null!=this.customHandles[g].shape.bounds){var e=this.customHandles[g].shape.bounds,k=e.getCenterX(),f=e.getCenterY();if(Math.abs(this.state.x-k)<e.width/2||Math.abs(this.state.y-f)<e.height/2||Math.abs(this.state.x+this.state.width-k)<e.width/2||Math.abs(this.state.y+this.state.height-f)<e.height/2){c=!0;break}}c&&null!=this.sizers&&
-0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=ba.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){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{d=this.state.view.scale;var g=this.state.view.unit;
-this.hint.innerHTML=c(this.roundLength(this.bounds.width/d),g)+" x "+c(this.roundLength(this.bounds.height/d),g)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=d.y+d.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 S=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(b,d){S.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 x=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(b,d){x.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&
-(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,g){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,k=this.graph.view.scale,f=this.roundLength(g.x/k-e.x),e=this.roundLength(g.y/k-e.y),k=this.graph.view.unit;this.hint.innerHTML=c(f,k)+", "+c(e,k);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?
-(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),g.y)+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};Graph.prototype.expandedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="50%" y1="0%" x2="50%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 2 4.5 L 7 4.5 z" stroke="#000"/>');
-Graph.prototype.collapsedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 4.5 2 L 4.5 7 M 2 4.5 L 7 4.5 z" stroke="#000"/>');mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=
-Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.endMainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.secondaryHandle=Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>');HoverIcons.prototype.fixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');
+d.rangeCount){var c=document.createRange();c.selectNode(b);d.removeAllRanges();d.addRange(c)}}else(d=document.selection)&&"Control"!=d.type&&(b=d.createRange(),b.collapse(!0),c=d.createRange(),c.setEndPoint("StartToStart",b),c.select())};Graph.prototype.flipEdge=function(b,d,c){var g=this.getCellGeometry(b);if(null!=g){g=g.clone();if(null!=g.points)for(var e=0;e<g.points.length;e++)d?g.points[e].x=c+(c-g.points[e].x):g.points[e].y=c+(c-g.points[e].y);e=function(b){null!=b&&(d?b.x=c+(c-b.x):b.y=c+
+(c-b.y))};e(g.getTerminalPoint(!0));e(g.getTerminalPoint(!1));this.model.setGeometry(b,g)}};Graph.prototype.flipChildren=function(b,d,c){this.model.beginUpdate();try{for(var g=this.model.getChildCount(b),e=0;e<g;e++){var k=this.model.getChildAt(b,e);if(this.model.isEdge(k))this.flipEdge(k,d,c);else{var f=this.getCellGeometry(k);null!=f&&(f=f.clone(),d?f.x=c+(c-f.x-f.width):f.y=c+(c-f.y-f.height),this.model.setGeometry(k,f))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(b,d){this.model.beginUpdate();
+try{b=this.model.getTopmostCells(b);for(var c=[],g=0;g<b.length;g++)if(this.model.isEdge(b[g])){var e=this.view.getState(b[g]);null!=e&&this.flipEdge(b[g],d,(d?e.getCenterX():e.getCenterY())/this.view.scale-(d?e.origin.x:e.origin.y)-(d?this.view.translate.x:this.view.translate.y))}else{var k=this.getCellGeometry(b[g]);null!=k&&this.flipChildren(b[g],d,d?k.getCenterX()-k.x:k.getCenterY()-k.y);c.push(b[g])}this.toggleCellStyles(d?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,c)}finally{this.model.endUpdate()}};
+Graph.prototype.deleteCells=function(b,d){var c=null;if(null!=b&&0<b.length){this.model.beginUpdate();try{for(var g=0;g<b.length;g++){var e=this.model.getParent(b[g]);if(this.isTable(e)){var k=this.getCellGeometry(b[g]),f=this.getCellGeometry(e);null!=k&&null!=f&&(f=f.clone(),f.height-=k.height,this.model.setGeometry(e,f))}}var l=this.selectParentAfterDelete?this.model.getParents(b):null;this.removeCells(b,d)}finally{this.model.endUpdate()}if(null!=l)for(c=[],g=0;g<l.length;g++)this.model.contains(l[g])&&
+(this.model.isVertex(l[g])||this.model.isEdge(l[g]))&&c.push(l[g])}return c};Graph.prototype.insertTableColumn=function(b,d){var c=this.getModel();c.beginUpdate();try{var g=b,e=0;if(this.isTableCell(b))var k=c.getParent(b),g=c.getParent(k),e=mxUtils.indexOf(c.getChildCells(k,!0),b);else this.isTableRow(b)?g=c.getParent(b):b=c.getChildCells(g,!0)[0],d||(e=c.getChildCells(b,!0).length-1);for(var f=c.getChildCells(g,!0),l=Graph.minTableColumnWidth,k=0;k<f.length;k++){var m=c.getChildCells(f[k],!0)[e],
+p=c.cloneCell(m,!1),x=this.getCellGeometry(p);p.value=null;p.style=mxUtils.setStyle(mxUtils.setStyle(p.style,"rowspan",null),"colspan",null);if(null!=x){null!=x.alternateBounds&&(x.width=x.alternateBounds.width,x.height=x.alternateBounds.height,x.alternateBounds=null);var l=x.width,v=this.getCellGeometry(f[k]);null!=v&&(x.height=v.height)}c.add(f[k],p,e+(d?0:1))}var n=this.getCellGeometry(g);null!=n&&(n=n.clone(),n.width+=l,c.setGeometry(g,n))}finally{c.endUpdate()}};Graph.prototype.deleteLane=function(b){var d=
+this.getModel();d.beginUpdate();try{var c=null,c="stackLayout"==this.getCurrentCellStyle(b).childLayout?b:d.getParent(b),g=d.getChildCells(c,!0);0==g.length?d.remove(c):(c==b&&(b=g[g.length-1]),d.remove(b))}finally{d.endUpdate()}};Graph.prototype.insertLane=function(b,d){var c=this.getModel();c.beginUpdate();try{var g=null,e=b;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var g=e,k=c.getChildCells(g,!0),e=k[d?0:k.length-1];else g=c.getParent(e);var f=g.getIndex(e),e=c.cloneCell(e,!1);
+e.value=null;c.add(g,e,f+(d?0:1))}finally{c.endUpdate()}};Graph.prototype.insertTableRow=function(b,d){var c=this.getModel();c.beginUpdate();try{var g=b,e=b;if(this.isTableCell(b))e=c.getParent(b),g=c.getParent(e);else if(this.isTableRow(b))g=c.getParent(b);else var k=c.getChildCells(g,!0),e=k[d?0:k.length-1];var f=c.getChildCells(e,!0),l=g.getIndex(e),e=c.cloneCell(e,!1);e.value=null;var m=this.getCellGeometry(e);if(null!=m){for(k=0;k<f.length;k++){b=c.cloneCell(f[k],!1);b.value=null;b.style=mxUtils.setStyle(mxUtils.setStyle(b.style,
+"rowspan",null),"colspan",null);var p=this.getCellGeometry(b);null!=p&&(null!=p.alternateBounds&&(p.width=p.alternateBounds.width,p.height=p.alternateBounds.height,p.alternateBounds=null),p.height=m.height);e.insert(b)}c.add(g,e,l+(d?0:1));var x=this.getCellGeometry(g);null!=x&&(x=x.clone(),x.height+=m.height,c.setGeometry(g,x))}}finally{c.endUpdate()}};Graph.prototype.deleteTableColumn=function(b){var d=this.getModel();d.beginUpdate();try{var c=b,g=b;this.isTableCell(b)&&(g=d.getParent(b));this.isTableRow(g)&&
+(c=d.getParent(g));var e=d.getChildCells(c,!0);if(0==e.length)d.remove(c);else{this.isTableRow(g)||(g=e[0]);var k=d.getChildCells(g,!0);if(1>=k.length)d.remove(c);else{var f=k.length-1;this.isTableCell(b)&&(f=mxUtils.indexOf(k,b));for(g=b=0;g<e.length;g++){var l=d.getChildCells(e[g],!0)[f];d.remove(l);var m=this.getCellGeometry(l);null!=m&&(b=Math.max(b,m.width))}var p=this.getCellGeometry(c);null!=p&&(p=p.clone(),p.width-=b,d.setGeometry(c,p))}}}finally{d.endUpdate()}};Graph.prototype.deleteTableRow=
+function(b){var d=this.getModel();d.beginUpdate();try{var c=b,g=b;this.isTableCell(b)&&(b=g=d.getParent(b));this.isTableRow(b)&&(c=d.getParent(g));var e=d.getChildCells(c,!0);if(1>=e.length)d.remove(c);else{this.isTableRow(g)||(g=e[e.length-1]);d.remove(g);b=0;var k=this.getCellGeometry(g);null!=k&&(b=k.height);var f=this.getCellGeometry(c);null!=f&&(f=f.clone(),f.height-=b,d.setGeometry(c,f))}}finally{d.endUpdate()}};Graph.prototype.insertRow=function(b,d){for(var c=b.tBodies[0],g=c.rows[0].cells,
+e=0,k=0;k<g.length;k++)var f=g[k].getAttribute("colspan"),e=e+(null!=f?parseInt(f):1);c=c.insertRow(d);for(k=0;k<e;k++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(b,d){b.tBodies[0].deleteRow(d)};Graph.prototype.insertColumn=function(b,d){var c=b.tHead;if(null!=c)for(var g=0;g<c.rows.length;g++){var e=document.createElement("th");c.rows[g].appendChild(e);mxUtils.br(e)}c=b.tBodies[0];for(g=0;g<c.rows.length;g++)e=c.rows[g].insertCell(d),mxUtils.br(e);return c.rows[0].cells[0<=
+d?d:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(b,d){if(0<=d)for(var c=b.tBodies[0].rows,g=0;g<c.length;g++)c[g].cells.length>d&&c[g].deleteCell(d)};Graph.prototype.pasteHtmlAtCaret=function(b){var d;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){d=d.getRangeAt(0);d.deleteContents();var c=document.createElement("div");c.innerHTML=b;b=document.createDocumentFragment();for(var g;g=c.firstChild;)lastNode=b.appendChild(g);d.insertNode(b)}}else(d=document.selection)&&
+"Control"!=d.type&&d.createRange().pasteHTML(b)};Graph.prototype.createLinkForHint=function(b,d){function c(b,d){b.length>d&&(b=b.substring(0,Math.round(d/2))+"..."+b.substring(b.length-Math.round(d/4)));return b}b=null!=b?b:"javascript:void(0);";if(null==d||0==d.length)d=this.isCustomLink(b)?this.getLinkTitle(b):b;var g=document.createElement("a");g.setAttribute("rel",this.linkRelation);g.setAttribute("href",this.getAbsoluteUrl(b));g.setAttribute("title",c(this.isCustomLink(b)?this.getLinkTitle(b):
+b,80));null!=this.linkTarget&&g.setAttribute("target",this.linkTarget);mxUtils.write(g,c(d,40));this.isCustomLink(b)&&mxEvent.addListener(g,"click",mxUtils.bind(this,function(d){this.customLinkClicked(b);mxEvent.consume(d)}));return g};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(b,d){this.popupMenuHandler.hideMenu()});var b=this.updateMouseEvent;this.updateMouseEvent=
+function(d){d=b.apply(this,arguments);if(mxEvent.isTouchEvent(d.getEvent())&&null==d.getState()){var c=this.getCellAt(d.graphX,d.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,d.graphX,d.graphY)||(d.state=this.view.getState(c),null!=d.state&&null!=d.state.shape&&(this.container.style.cursor=d.state.shape.node.style.cursor))}null==d.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return d};var d=!1,c=!1,g=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(b,
+k,f){b==mxEvent.MOUSE_DOWN&&(k=this.updateMouseEvent(k),d=this.isCellSelected(k.getCell()),c=this.isSelectionEmpty(),g=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(b,e){var k=mxEvent.isMouseEvent(e.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!g&&!k&&(c&&null==e.getCell()&&this.isSelectionEmpty()||
+d&&this.isCellSelected(e.getCell())));k=!d||k?null:mxUtils.bind(this,function(b){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var d=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(e.getX()+d.x+1,e.getY()+d.y+1,b,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[b,e,k])})};mxCellEditor.prototype.isContentEditing=function(){var b=this.graph.view.getState(this.editingCell);return null!=b&&1==b.style.html};mxCellEditor.prototype.isTableSelected=
+function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var b="";window.getSelection?b=window.getSelection():document.getSelection?b=document.getSelection():document.selection&&(b=document.selection.createRange().text);return""!=b};mxCellEditor.prototype.insertTab=function(b){var d=this.textarea.ownerDocument.defaultView.getSelection(),c=d.getRangeAt(0),g="\t";if(null!=b)for(g="";0<b;)g+=" ",b--;b=
+document.createElement("span");b.style.whiteSpace="pre";b.appendChild(document.createTextNode(g));c.insertNode(b);c.setStartAfter(b);c.setEndAfter(b);d.removeAllRanges();d.addRange(c)};mxCellEditor.prototype.alignText=function(b,d){var c=null!=d&&mxEvent.isShiftDown(d);if(c||null!=window.getSelection&&null!=window.getSelection().containsNode){var g=!0;this.graph.processElements(this.textarea,function(b){c||window.getSelection().containsNode(b,!0)?(b.removeAttribute("align"),b.style.textAlign=null):
+g=!1});g&&this.graph.cellEditor.setAlign(b)}document.execCommand("justify"+b.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var b=window.getSelection();if(b.getRangeAt&&b.rangeCount){for(var d=[],c=0,g=b.rangeCount;c<g;++c)d.push(b.getRangeAt(c));return d}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(b){try{if(b)if(window.getSelection){sel=
+window.getSelection();sel.removeAllRanges();for(var d=0,c=b.length;d<c;++d)sel.addRange(b[d])}else document.selection&&b.select&&b.select()}catch(xa){}};var t=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(b){null!=b.text&&(b.text.replaceLinefeeds="0"!=mxUtils.getValue(b.style,"nl2Br","1"));t.apply(this,arguments)};var z=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(b,d){this.isKeepFocusEvent(b)||!mxEvent.isAltDown(b.getEvent())?
+z.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(b){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var y=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(b,d){b=this.graph.getStartEditingCell(b,d);y.apply(this,arguments);var c=this.graph.view.getState(b);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";
+this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(b);var c=this.graph.getModel().getParent(b),g=this.graph.getCellGeometry(b);if(this.graph.getModel().isEdge(c)&&null!=g&&g.relative||this.graph.getModel().isEdge(b))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var F=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(b){function d(b,c){c.originalNode=b;b=b.firstChild;
+for(var g=c.firstChild;null!=b&&null!=g;)d(b,g),b=b.nextSibling,g=g.nextSibling;return c}function c(b,d){if(null!=b)if(d.originalNode!=b)g(b);else for(b=b.firstChild,d=d.firstChild;null!=b;){var e=b.nextSibling;null==d?g(b):(c(b,d),d=d.nextSibling);b=e}}function g(b){for(var d=b.firstChild;null!=d;){var c=d.nextSibling;g(d);d=c}1==b.nodeType&&("BR"===b.nodeName||null!=b.firstChild)||3==b.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(b)).length?(3==b.nodeType&&mxUtils.setTextContent(b,mxUtils.getTextContent(b).replace(/\n|\r/g,
+"")),1==b.nodeType&&(b.removeAttribute("style"),b.removeAttribute("class"),b.removeAttribute("width"),b.removeAttribute("cellpadding"),b.removeAttribute("cellspacing"),b.removeAttribute("border"))):b.parentNode.removeChild(b)}F.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(b){var g=d(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]>")?c(this.textarea,g):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var b=this.graph.view.getState(this.editingCell);if(null!=b){var d=null!=b&&"0"!=mxUtils.getValue(b.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){m=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<m.length&&"\n"==m.charAt(m.length-1)&&(m=m.substring(0,m.length-1));m=this.graph.sanitizeHtml(d?
+m.replace(/\n/g,"<br/>"):m,!0);this.textarea.className="mxCellEditor geContentEditable";var g=mxUtils.getValue(b.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),d=mxUtils.getValue(b.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),k=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,f=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&
+mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,l=[];(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&l.push("underline");(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&l.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(g*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(g)+
+"px";this.textarea.style.textDecoration=l.join(" ");this.textarea.style.fontWeight=k?"bold":"normal";this.textarea.style.fontStyle=f?"italic":"";this.textarea.style.fontFamily=d;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m,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.innerHTML="");var m=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(m=mxUtils.replaceTrailingNewlines(m,"<div><br></div>"));m=this.graph.sanitizeHtml(d?m.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):m,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var g=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(g*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;
+this.textarea.style.fontSize=Math.round(g)+"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!=m&&(this.textarea.innerHTML=m);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);
+this.switchSelectionState=c;this.resize()}};var D=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(b,d){if(null!=this.textarea)if(b=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=b){var c=b.view.scale;this.bounds=mxRectangle.fromRectangle(b);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var g=null!=b.text?b.text.margin:null;null==g&&(g=mxUtils.getAlignmentAsPoint(mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,
+mxConstants.ALIGN_CENTER),mxUtils.getValue(b.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=g.x*this.bounds.width;this.bounds.y+=g.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-
+this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+
+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",D.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(b,d){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(b.cell,d);"1"==mxUtils.getValue(b.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};mxCellEditorGetCurrentValue=
+mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d="1"==mxUtils.getValue(b.style,"nl2Br","1")?d.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var E=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(b){this.codeViewMode&&this.toggleViewMode();
+E.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(ba){}};var H=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(b,d){this.graph.getModel().beginUpdate();try{H.apply(this,arguments),""==d&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)&&this.graph.isTransparentState(b)&&this.graph.removeCells([b.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=
+function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getBorderColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BORDERCOLOR,
+null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_STROKECOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getMinimumSize=function(b){var d=this.graph.getView().scale;return new mxRectangle(0,0,null==b.text?30:b.text.size*d+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;
+mxGraphHandler.prototype.isValidDropTarget=function(b,d){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(d.getEvent)};mxGraphView.prototype.formatUnitText=function(b){return b?c(b,this.unit):b};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var g=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+
+this.currentDx)/e-g.x);g=this.roundLength((this.bounds.y+this.currentDy)/e-g.y);e=this.graph.view.unit;this.hint.innerHTML=c(d,e)+", "+c(g,e);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 N=mxStackLayout.prototype.resizeCell;
+mxStackLayout.prototype.resizeCell=function(b,d){N.apply(this,arguments);var c=this.graph.getCellStyle(b);if(null==c.childLayout){var g=this.graph.model.getParent(b),e=null!=g?this.graph.getCellGeometry(g):null;if(null!=e&&(c=this.graph.getCellStyle(g),"stackLayout"==c.childLayout)){var k=parseFloat(mxUtils.getValue(c,"stackBorder",mxStackLayout.prototype.border)),c="1"==mxUtils.getValue(c,"horizontalStack","1"),f=this.graph.getActualStartSize(g),e=e.clone();c?e.height=d.height+f.y+f.height+2*k:e.width=
+d.width+f.x+f.width+2*k;this.graph.model.setGeometry(g,e)}}};var A=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){c.get(b)||(c.put(b,!0),e.push(b))}for(var d=A.apply(this,arguments),c=new mxDictionary,g=this.graph.model,e=[],k=0;k<d.length;k++){var f=d[k];this.graph.isTableCell(f)?b(g.getParent(g.getParent(f))):this.graph.isTableRow(f)&&b(g.getParent(f));b(f)}return e};var G=mxVertexHandler.prototype.createParentHighlightShape;
+mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=G.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var I=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(b){var d=I.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var b=this.getHandlePadding();return new mxPoint(this.bounds.x+
+this.bounds.width-this.rotationHandleVSpacing+b.x/2,this.bounds.y+this.rotationHandleVSpacing-b.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(b,d){return this.graph.isRecursiveVertexResize(b)&&!mxEvent.isControlDown(d.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(b,d){return!(!this.graph.isSwimlane(b.cell)&&0<this.graph.model.getChildCount(b.cell)&&!this.graph.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,
+"childLayout",null))&&mxEvent.isControlDown(d.getEvent())||mxEvent.isMetaDown(d.getEvent())};var L=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return L.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 M=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return M.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var K=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(b){return b.tableHandle||K.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
+function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var O=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return O.apply(this,arguments).grow(-this.getSelectionBorderInset())};var U=null,X=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==U&&(U=mxCellRenderer.defaultShapes.tableLine);var b=X.apply(this,arguments);
+if(this.graph.isTable(this.state.cell)){var d=function(b,d,c){for(var g=[],e=0;e<b.length;e++){var f=b[e];g.push(null==f?null:new mxPoint((m+f.x+d)*k,(p+f.y+c)*k))}return g},c=this,g=this.graph,e=g.model,k=g.view.scale,f=this.state,l=this.selectionBorder,m=this.state.origin.x+g.view.translate.x,p=this.state.origin.y+g.view.translate.y;null==b&&(b=[]);var x=g.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<x.length){for(var v=e.getChildCells(x[0].cell,!0),n=g.getTableLines(this.state.cell,
+!1,!0),t=g.getTableLines(this.state.cell,!0,!1),e=0;e<x.length;e++)mxUtils.bind(this,function(e){var m=x[e],p=e<x.length-1?x[e+1]:null,p=null!=p?g.getCellGeometry(p.cell):null,v=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=t[e]?new U(t[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"row-resize",null,p);m.tableHandle=!0;var n=0;m.shape.node.parentNode.insertBefore(m.shape.node,m.shape.node.parentNode.firstChild);
+m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==n?mxConstants.NONE:l.stroke;if(this.shape.constructor==U)this.shape.line=d(t[e],0,n),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+n*k;this.shape.bounds.x=f.x+(e==x.length-1?0:b.x*k);this.shape.bounds.width=f.width-(e==x.length-1?0:b.width+b.x+k)}this.shape.redraw()}};var u=!1;m.setPosition=function(b,d,c){n=Math.max(Graph.minTableRowHeight-
+b.height,d.y-b.y-b.height);u=mxEvent.isShiftDown(c.getEvent());null!=v&&u&&(n=Math.min(n,v.height-Graph.minTableRowHeight))};m.execute=function(b){if(0!=n)g.setTableRowHeight(this.state.cell,n,!u);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}n=0};m.reset=function(){n=0};b.push(m)})(e);for(e=0;e<v.length;e++)mxUtils.bind(this,function(e){var m=g.view.getState(v[e]),p=g.getCellGeometry(v[e]),x=null!=p.alternateBounds?
+p.alternateBounds:p;null==m&&(m=new mxCellState(g.view,v[e],g.getCellStyle(v[e])),m.x=f.x+p.x*k,m.y=f.y+p.y*k,m.width=x.width*k,m.height=x.height*k,m.updateCachedBounds());var p=e<v.length-1?v[e+1]:null,p=null!=p?g.getCellGeometry(p):null,t=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=n[e]?new U(n[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"col-resize",null,p);m.tableHandle=!0;var u=0;m.shape.node.parentNode.insertBefore(m.shape.node,
+m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==u?mxConstants.NONE:l.stroke;if(this.shape.constructor==U)this.shape.line=d(n[e],u,0),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(x.width+u)*k;this.shape.bounds.y=f.y+(e==v.length-1?0:b.y*k);this.shape.bounds.height=f.height-(e==v.length-1?0:(b.height+b.y)*k)}this.shape.redraw()}};var y=!1;m.setPosition=function(b,
+d,c){u=Math.max(Graph.minTableColumnWidth-x.width,d.x-b.x-x.width);y=mxEvent.isShiftDown(c.getEvent());null==t||y||(u=Math.min(u,t.width-Graph.minTableColumnWidth))};m.execute=function(b){if(0!=u)g.setTableColumnWidth(this.state.cell,u,y);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}u=0};m.positionChanged=function(){};m.reset=function(){u=0};b.push(m)})(e)}}return null!=b?b.reverse():null};var na=mxVertexHandler.prototype.setHandlesVisible;
+mxVertexHandler.prototype.setHandlesVisible=function(b){na.apply(this,arguments);if(null!=this.moveHandles)for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].style.visibility=b?"":"hidden";if(null!=this.cornerHandles)for(d=0;d<this.cornerHandles.length;d++)this.cornerHandles[d].node.style.visibility=b?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var b=this.graph.model;if(null!=this.moveHandles){for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].parentNode.removeChild(this.moveHandles[d]);
+this.moveHandles=null}this.moveHandles=[];for(d=0;d<b.getChildCount(this.state.cell);d++)mxUtils.bind(this,function(d){if(null!=d&&b.isVertex(d.cell)){var c=mxUtils.createImage(Editor.rowMoveImage);c.style.position="absolute";c.style.cursor="pointer";c.style.width="7px";c.style.height="4px";c.style.padding="4px 2px 4px 2px";c.rowState=d;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(b){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(b)&&this.graph.isCellSelected(d.cell)||
+this.graph.selectCellForEvent(d.cell,b);mxEvent.isPopupTrigger(b)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0);mxEvent.consume(b)}),null,mxUtils.bind(this,function(b){mxEvent.isPopupTrigger(b)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(b),mxEvent.getClientY(b),d.cell,b),mxEvent.consume(b))}));
+this.moveHandles.push(c);this.graph.container.appendChild(c)}})(this.graph.view.getState(b.getChildAt(this.state.cell,d)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ca=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,
+0),d=this.tolerance,c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&mxStencilRegistry.getStencil(c);c=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!c&&null!=this.customHandles)for(var g=0;g<this.customHandles.length;g++)if(null!=this.customHandles[g].shape&&null!=this.customHandles[g].shape.bounds){var e=this.customHandles[g].shape.bounds,k=e.getCenterX(),f=e.getCenterY();if(Math.abs(this.state.x-k)<e.width/2||Math.abs(this.state.y-
+f)<e.height/2||Math.abs(this.state.x+this.state.width-k)<e.width/2||Math.abs(this.state.y+this.state.height-f)<e.height/2){c=!0;break}}c&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=ca.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){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{d=this.state.view.scale;var g=this.state.view.unit;this.hint.innerHTML=c(this.roundLength(this.bounds.width/d),g)+" x "+c(this.roundLength(this.bounds.height/d),g)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=
+d.y+d.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 S=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(b,d){S.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 x=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(b,d){x.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,g){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,k=this.graph.view.scale,f=this.roundLength(g.x/k-e.x),e=this.roundLength(g.y/k-e.y),k=this.graph.view.unit;this.hint.innerHTML=
+c(f,k)+", "+c(e,k);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),g.y)+Editor.hintOffset+
+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};Graph.prototype.expandedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="50%" y1="0%" x2="50%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 2 4.5 L 7 4.5 z" stroke="#000"/>');Graph.prototype.collapsedImage=Graph.createSvgImage(9,
+9,'<defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 4.5 2 L 4.5 7 M 2 4.5 L 7 4.5 z" stroke="#000"/>');mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+
+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.endMainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.secondaryHandle=Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>');HoverIcons.prototype.fixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');
HoverIcons.prototype.endFixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="7" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');HoverIcons.prototype.terminalHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/><circle cx="11" cy="11" r="3" stroke="#fff" fill="transparent"/>');HoverIcons.prototype.endTerminalHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="7" stroke="#fff" fill="'+
HoverIcons.prototype.arrowFill+'"/><circle cx="11" cy="11" r="3" stroke="#fff" fill="transparent"/>');HoverIcons.prototype.rotationHandle=Graph.createSvgImage(16,16,'<path stroke="'+HoverIcons.prototype.arrowFill+'" fill="'+HoverIcons.prototype.arrowFill+'" d="M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z"/>',
24,24);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="'+HoverIcons.prototype.arrowFill+'"/>');mxVertexHandler.TABLE_HANDLE_COLOR="#fca000";mxVertexHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxVertexHandler.prototype.secondaryHandleImage=HoverIcons.prototype.secondaryHandle;mxEdgeHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;
@@ -2709,15 +2714,15 @@ this.graph.view.getState(l[c]),p=this.graph.getCellGeometry(l[c]);null!=m&&null!
var g=d.getX()+c.x,c=d.getY()+c.y,e=this.first.x-g,k=this.first.y-c,f=this.graph.tolerance;if(null!=this.div||Math.abs(e)>f||Math.abs(k)>f)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(g,c),this.isSpaceEvent(d)?(g=this.x+this.width,c=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,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=g-this.width),this.y<this.first.y&&(this.y=c-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)),d.consume()}};var J=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);J.apply(this,arguments)};var W=(new Date).getTime(),ca=0,aa=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,c,g){aa.apply(this,arguments);c!=this.currentTerminalState?(W=(new Date).getTime(),ca=0):ca=(new Date).getTime()-W;this.currentTerminalState=
-c};var da=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<ca||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&da.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,c){d=null!=b&&0==b;var g=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
+this.secondDiv=null)),d.consume()}};var J=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);J.apply(this,arguments)};var W=(new Date).getTime(),da=0,aa=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,c,g){aa.apply(this,arguments);c!=this.currentTerminalState?(W=(new Date).getTime(),da=0):da=(new Date).getTime()-W;this.currentTerminalState=
+c};var ea=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<da||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&ea.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,c){d=null!=b&&0==b;var g=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
1||this.constructor==mxElbowEdgeHandler&&2==b)?this.graph.getConnectionConstraint(this.state,g,d):null;c=null!=(null!=b?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(d),b):null)?c?this.endFixedHandleImage:this.fixedHandleImage:null!=b&&null!=g?c?this.endTerminalHandleImage:this.terminalHandleImage:c?this.endHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&
--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ta=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(b,d,c){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return ta.apply(this,arguments)};var ua=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(b){if(null!=
-b&&1==b.length){var d=this.graph.getModel(),c=d.getParent(b[0]),g=this.graph.getCellGeometry(b[0]);if(d.isEdge(c)&&null!=g&&g.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return ua.apply(this,arguments)};var ga=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=ga.apply(this,arguments),d=[],c=0;c<b.length;c++)"1"!=mxUtils.getValue(b[c].style,
-"part","0")&&d.push(b[c]);return d};var na=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),c=d.getParent(b.cell),g=this.graph.getCellGeometry(b.cell);return d.isEdge(c)&&null!=g&&g.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):na.apply(this,arguments)};
+b&&1==b.length){var d=this.graph.getModel(),c=d.getParent(b[0]),g=this.graph.getCellGeometry(b[0]);if(d.isEdge(c)&&null!=g&&g.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return ua.apply(this,arguments)};var ha=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=ha.apply(this,arguments),d=[],c=0;c<b.length;c++)"1"!=mxUtils.getValue(b[c].style,
+"part","0")&&d.push(b[c]);return d};var oa=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),c=d.getParent(b.cell),g=this.graph.getCellGeometry(b.cell);return d.isEdge(c)&&null!=g&&g.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):oa.apply(this,arguments)};
var Y=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(b,d){var c=this.graph.getModel(),g=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!c.isEdge(g)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&Y.apply(this,arguments)};mxVertexHandler.prototype.rotateClick=function(){var b=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),
d=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&b==mxConstants.NONE&&d==mxConstants.NONE?(b=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,b,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};var Q=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(b,d){Q.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 ea=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(b,d){ea.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");
+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 fa=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(b,d){fa.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 T=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){T.apply(this,arguments);var b=!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 d=0;4>d;d++){var c=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);c.dialect=mxConstants.DIALECT_SVG;c.init(this.graph.view.getOverlayPane());this.cornerHandles.push(c)}}var g=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(b,d){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),
this.graph.getLinksForState(this.state));g()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(b,d){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);d=this.graph.getLinkForCell(this.state.cell);c=this.graph.getLinksForState(this.state);this.updateLinkHint(d,c);if(null!=d||null!=c&&0<c.length)b=!0;b&&this.redrawHandles()};
@@ -2726,20 +2731,20 @@ mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.
mxEvent.addListener(g,"click",mxUtils.bind(this,function(b){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(b)}));this.linkHint.appendChildGraph.createRemoveIcon(mxResources.get("removeIt",[mxResources.get("link")]),mxUtils.bind(this,function(b){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(b)}))}if(null!=c)for(g=0;g<c.length;g++){var e=document.createElement("div");e.style.marginTop=null!=d||0<g?"6px":"0px";e.appendChild(this.graph.createLinkForHint(c[g].getAttribute("href"),
mxUtils.getTextContent(c[g])));this.linkHint.appendChild(e)}}}catch(sa){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var la=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){la.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var b=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(d,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=
-this.graph.getLinkForCell(this.state.cell),c=this.graph.getLinksForState(this.state);if(null!=d||null!=c&&0<c.length)this.updateLinkHint(d,c),this.redrawHandles()};var oa=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){oa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var ra=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=
+this.graph.getLinkForCell(this.state.cell),c=this.graph.getLinksForState(this.state);if(null!=d||null!=c&&0<c.length)this.updateLinkHint(d,c),this.redrawHandles()};var pa=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){pa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var ra=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=
0;b<this.moveHandles.length;b++)this.moveHandles[b].style.left=this.moveHandles[b].rowState.x+this.moveHandles[b].rowState.width-5+"px",this.moveHandles[b].style.top=this.moveHandles[b].rowState.y+this.moveHandles[b].rowState.height/2-6+"px";if(null!=this.cornerHandles){var b=this.getSelectionBorderInset(),d=this.cornerHandles,c=d[0].bounds.height/2;d[0].bounds.x=this.state.x-d[0].bounds.width/2+b;d[0].bounds.y=this.state.y-c+b;d[0].redraw();d[1].bounds.x=d[0].bounds.x+this.state.width-2*b;d[1].bounds.y=
d[0].bounds.y;d[1].redraw();d[2].bounds.x=d[0].bounds.x;d[2].bounds.y=this.state.y+this.state.height-2*b;d[2].redraw();d[3].bounds.x=d[1].bounds.x;d[3].bounds.y=d[2].bounds.y;d[3].redraw();for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.display=1==this.graph.getSelectionCount()?"":"none"}null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&this.index!=mxEvent.ROTATION_HANDLE?
"none":"");ra.apply(this);null!=this.state&&null!=this.linkHint&&(b=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),c=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]||"0",b),b=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null,null==c&&(c=this.state),c=c.y+c.height,null!=
d&&(c=Math.max(c,d.y+d.height)),this.linkHint.style.left=Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(c+this.verticalOffset/2+Editor.hintOffset)+"px")};var R=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){R.apply(this,arguments);if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)null!=this.moveHandles[b]&&null!=this.moveHandles[b].parentNode&&this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);
this.moveHandles=null}if(null!=this.cornerHandles){for(b=0;b<this.cornerHandles.length;b++)null!=this.cornerHandles[b]&&null!=this.cornerHandles[b].node&&null!=this.cornerHandles[b].node.parentNode&&this.cornerHandles[b].node.parentNode.removeChild(this.cornerHandles[b].node);this.cornerHandles=null}null!=this.linkHint&&(null!=this.linkHint.parentNode&&this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),
this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var qa=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(qa.apply(this),null!=this.state&&null!=this.linkHint)){var b=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(b=new mxRectangle(b.x,b.y,b.width,b.height),b.add(this.state.text.bounds));
-this.linkHint.style.left=Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b.y+b.height+Editor.hintOffset)+"px"}};var ia=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){ia.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var fa=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){fa.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),
+this.linkHint.style.left=Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b.y+b.height+Editor.hintOffset)+"px"}};var ia=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){ia.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var ga=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ga.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),
this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(b,d,c){mxShape.call(this);this.line=b;this.stroke=d;this.strokewidth=null!=c?c:1;this.updateBoundsFromLine()}function c(){mxSwimlane.call(this)}function e(){mxSwimlane.call(this)}function f(){mxCylinder.call(this)}function n(){mxCylinder.call(this)}function l(){mxActor.call(this)}function q(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function p(){mxShape.call(this)}function m(){mxShape.call(this)}
function v(b,d,c,g){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=c;this.strokewidth=null!=g?g:1}function u(){mxActor.call(this)}function t(){mxCylinder.call(this)}function z(){mxCylinder.call(this)}function y(){mxActor.call(this)}function F(){mxActor.call(this)}function D(){mxActor.call(this)}function E(){mxActor.call(this)}function H(){mxActor.call(this)}function N(){mxActor.call(this)}function A(){mxActor.call(this)}function G(b,d){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
this.defaultVariation=d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,G.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,G.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,G.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,G.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,G.prototype.curveTo);
-this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,G.prototype.arcTo)}function I(){mxRectangleShape.call(this)}function L(){mxRectangleShape.call(this)}function M(){mxActor.call(this)}function K(){mxActor.call(this)}function O(){mxActor.call(this)}function U(){mxRectangleShape.call(this)}function X(){mxRectangleShape.call(this)}function ma(){mxCylinder.call(this)}function ba(){mxShape.call(this)}function S(){mxShape.call(this)}function x(){mxEllipse.call(this)}function C(){mxShape.call(this)}
-function J(){mxShape.call(this)}function W(){mxRectangleShape.call(this)}function ca(){mxShape.call(this)}function aa(){mxShape.call(this)}function da(){mxShape.call(this)}function ta(){mxShape.call(this)}function ua(){mxShape.call(this)}function ga(){mxCylinder.call(this)}function na(){mxCylinder.call(this)}function Y(){mxRectangleShape.call(this)}function Q(){mxDoubleEllipse.call(this)}function ea(){mxDoubleEllipse.call(this)}function T(){mxArrowConnector.call(this);this.spacing=0}function la(){mxArrowConnector.call(this);
-this.spacing=0}function oa(){mxActor.call(this)}function ra(){mxRectangleShape.call(this)}function R(){mxActor.call(this)}function qa(){mxActor.call(this)}function ia(){mxActor.call(this)}function fa(){mxActor.call(this)}function ha(){mxActor.call(this)}function pa(){mxActor.call(this)}function Aa(){mxActor.call(this)}function xa(){mxActor.call(this)}function sa(){mxActor.call(this)}function ja(){mxActor.call(this)}function Z(){mxEllipse.call(this)}function P(){mxEllipse.call(this)}function Ga(){mxEllipse.call(this)}
+this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,G.prototype.arcTo)}function I(){mxRectangleShape.call(this)}function L(){mxRectangleShape.call(this)}function M(){mxActor.call(this)}function K(){mxActor.call(this)}function O(){mxActor.call(this)}function U(){mxRectangleShape.call(this)}function X(){mxRectangleShape.call(this)}function na(){mxCylinder.call(this)}function ca(){mxShape.call(this)}function S(){mxShape.call(this)}function x(){mxEllipse.call(this)}function C(){mxShape.call(this)}
+function J(){mxShape.call(this)}function W(){mxRectangleShape.call(this)}function da(){mxShape.call(this)}function aa(){mxShape.call(this)}function ea(){mxShape.call(this)}function ta(){mxShape.call(this)}function ua(){mxShape.call(this)}function ha(){mxCylinder.call(this)}function oa(){mxCylinder.call(this)}function Y(){mxRectangleShape.call(this)}function Q(){mxDoubleEllipse.call(this)}function fa(){mxDoubleEllipse.call(this)}function T(){mxArrowConnector.call(this);this.spacing=0}function la(){mxArrowConnector.call(this);
+this.spacing=0}function pa(){mxActor.call(this)}function ra(){mxRectangleShape.call(this)}function R(){mxActor.call(this)}function qa(){mxActor.call(this)}function ia(){mxActor.call(this)}function ga(){mxActor.call(this)}function ba(){mxActor.call(this)}function ma(){mxActor.call(this)}function Aa(){mxActor.call(this)}function xa(){mxActor.call(this)}function sa(){mxActor.call(this)}function ja(){mxActor.call(this)}function Z(){mxEllipse.call(this)}function P(){mxEllipse.call(this)}function Ga(){mxEllipse.call(this)}
function Da(){mxRhombus.call(this)}function ya(){mxEllipse.call(this)}function Ea(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}function Ha(){mxEllipse.call(this)}function Ca(){mxActor.call(this)}function za(){mxActor.call(this)}function Ba(){mxActor.call(this)}function V(b,d,c,g){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=c;this.strokewidth=null!=g?g:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Fa(){mxConnector.call(this)}
function Ua(b,d,c,g,e,k,f,l,m,p){f+=m;var B=g.clone();g.x-=e*(2*f+m);g.y-=k*(2*f+m);e*=f+m;k*=f+m;return function(){b.ellipse(B.x-e-f,B.y-k-f,2*f,2*f);p?b.fillAndStroke():b.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var b=null;if(null!=this.line)for(var d=0;d<this.line.length;d++){var c=this.line[d];null!=c&&(c=new mxRectangle(c.x,c.y,this.strokewidth,this.strokewidth),null==b?b=c:b.add(c))}this.bounds=null!=b?b:new mxRectangle};b.prototype.paintVertexShape=function(b,
d,c,g,e){this.paintTableLine(b,this.line,0,0)};b.prototype.paintTableLine=function(b,d,c,g){if(null!=d){var B=null;b.begin();for(var e=0;e<d.length;e++){var k=d[e];null!=k&&(null==B?b.moveTo(k.x+c,k.y+g):null!=B&&b.lineTo(k.x+c,k.y+g));B=k}b.end();b.stroke()}};b.prototype.intersectsRectangle=function(b){var d=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var c=null,g=0;g<this.line.length&&!d;g++){var B=this.line[g];null!=B&&null!=c&&(d=mxUtils.rectangleIntersectsSegment(b,
@@ -2762,7 +2767,7 @@ k&&(b.begin(),b.moveTo(g,B),b.arcTo(.5*g,B,0,0,1,.5*g,2*B),b.arcTo(.5*g,B,0,0,1,
t.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var B=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),k=mxUtils.getValue(this.style,"rounded",!1),f=mxUtils.getValue(this.style,"absoluteArcSize",!1),l=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));f||(l*=Math.min(g,e));
l=Math.min(l,.5*g,.5*(e-c));d=Math.max(d,l);d=Math.min(g-l,d);k||(l=0);b.begin();"left"==B?(b.moveTo(Math.max(l,0),c),b.lineTo(Math.max(l,0),0),b.lineTo(d,0),b.lineTo(d,c)):(b.moveTo(g-d,c),b.lineTo(g-d,0),b.lineTo(g-Math.max(l,0),0),b.lineTo(g-Math.max(l,0),c));k?(b.moveTo(0,l+c),b.arcTo(l,l,0,0,1,l,c),b.lineTo(g-l,c),b.arcTo(l,l,0,0,1,g,l+c),b.lineTo(g,e-l),b.arcTo(l,l,0,0,1,g-l,e),b.lineTo(l,e),b.arcTo(l,l,0,0,1,0,e-l)):(b.moveTo(0,c),b.lineTo(g,c),b.lineTo(g,e),b.lineTo(0,e));b.close();b.fillAndStroke();
b.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(b.begin(),b.moveTo(g-30,c+20),b.lineTo(g-20,c+10),b.lineTo(g-10,c+20),b.close(),b.stroke())};mxCellRenderer.registerShape("folder",t);t.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var c=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,
-"tabHeight",15)*this.scale,g=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),B=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(B*=Math.min(b.width,b.height));B=Math.min(B,.5*b.width,.5*(b.height-d));g||(B=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(B,0,Math.min(b.width,b.width-c),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,b.width-c),0,B,Math.min(b.height,b.height-
+"tabHeight",15)*this.scale,g=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(k*=Math.min(b.width,b.height));k=Math.min(k,.5*b.width,.5*(b.height-d));g||(k=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(k,0,Math.min(b.width,b.width-c),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,b.width-c),0,k,Math.min(b.height,b.height-
d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};mxUtils.extend(z,mxCylinder);z.prototype.arcSize=.1;z.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);var k=mxUtils.getValue(this.style,"rounded",!1),B=mxUtils.getValue(this.style,"absoluteArcSize",!1);d=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));c=mxUtils.getValue(this.style,"umlStateConnection",null);B||(d*=Math.min(g,e));d=Math.min(d,.5*g,.5*e);k||(d=0);k=0;null!=c&&(k=10);b.begin();b.moveTo(k,
d);b.arcTo(d,d,0,0,1,k+d,0);b.lineTo(g-d,0);b.arcTo(d,d,0,0,1,g,d);b.lineTo(g,e-d);b.arcTo(d,d,0,0,1,g-d,e);b.lineTo(k+d,e);b.arcTo(d,d,0,0,1,k,e-d);b.close();b.fillAndStroke();b.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(b.roundrect(g-40,e-20,10,10,3,3),b.stroke(),b.roundrect(g-20,e-20,10,10,3,3),b.stroke(),b.begin(),b.moveTo(g-30,e-15),b.lineTo(g-20,e-15),b.stroke());"connPointRefEntry"==c?(b.ellipse(0,.5*e-10,20,20),b.fillAndStroke()):"connPointRefExit"==
c&&(b.ellipse(0,.5*e-10,20,20),b.fillAndStroke(),b.begin(),b.moveTo(5,.5*e-5),b.lineTo(15,.5*e+5),b.moveTo(15,.5*e-5),b.lineTo(5,.5*e+5),b.stroke())};z.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",z);mxUtils.extend(y,mxActor);y.prototype.size=30;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath=
@@ -2797,15 +2802,15 @@ U);var $a=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBound
0);d+=k;c+=k;g-=2*k;e-=2*k;0<g&&0<e&&(b.setShadow(!1),$a.apply(this,[b,d,c,g,e]))}};mxUtils.extend(X,mxRectangleShape);X.prototype.isHtmlAllowed=function(){return!1};X.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};X.prototype.paintForeground=function(b,d,c,g,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var k=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=k;c+=k;g-=2*k;e-=2*k;0<g&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}b.setDashed(!1);var k=0,B;do{B=mxCellRenderer.defaultShapes[this.style["symbol"+k]];if(null!=B){var f=this.style["symbol"+k+"Align"],l=this.style["symbol"+k+"VerticalAlign"],m=this.style["symbol"+k+"Width"],p=this.style["symbol"+k+"Height"],x=this.style["symbol"+k+"Spacing"]||0,v=this.style["symbol"+k+"VSpacing"]||x,wa=
this.style["symbol"+k+"ArcSpacing"];null!=wa&&(wa*=this.getArcSize(g+this.strokewidth,e+this.strokewidth),x+=wa,v+=wa);var wa=d,Ja=c,wa=f==mxConstants.ALIGN_CENTER?wa+(g-m)/2:f==mxConstants.ALIGN_RIGHT?wa+(g-m-x):wa+x,Ja=l==mxConstants.ALIGN_MIDDLE?Ja+(e-p)/2:l==mxConstants.ALIGN_BOTTOM?Ja+(e-p-v):Ja+v;b.save();f=new B;f.style=this.style;B.prototype.paintVertexShape.call(f,b,wa,Ja,m,p);b.restore()}k++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
-X);mxUtils.extend(ma,mxCylinder);ma.prototype.redrawPath=function(b,d,c,g,e,k){k?(b.moveTo(0,0),b.lineTo(g/2,e/2),b.lineTo(g,0),b.end()):(b.moveTo(0,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",ma);mxUtils.extend(ba,mxShape);ba.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.ellipse(g/4,0,g/2,e/4);b.fillAndStroke();b.begin();b.moveTo(g/2,e/4);b.lineTo(g/2,2*e/3);b.moveTo(g/2,e/3);b.lineTo(0,e/3);b.moveTo(g/2,e/3);b.lineTo(g,e/3);
-b.moveTo(g/2,2*e/3);b.lineTo(0,e);b.moveTo(g/2,2*e/3);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",ba);mxUtils.extend(S,mxShape);S.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};S.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(g/6,e/2);b.end();b.stroke();b.ellipse(g/6,0,5*g/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+X);mxUtils.extend(na,mxCylinder);na.prototype.redrawPath=function(b,d,c,g,e,k){k?(b.moveTo(0,0),b.lineTo(g/2,e/2),b.lineTo(g,0),b.end()):(b.moveTo(0,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",na);mxUtils.extend(ca,mxShape);ca.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.ellipse(g/4,0,g/2,e/4);b.fillAndStroke();b.begin();b.moveTo(g/2,e/4);b.lineTo(g/2,2*e/3);b.moveTo(g/2,e/3);b.lineTo(0,e/3);b.moveTo(g/2,e/3);b.lineTo(g,e/3);
+b.moveTo(g/2,2*e/3);b.lineTo(0,e);b.moveTo(g/2,2*e/3);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",ca);mxUtils.extend(S,mxShape);S.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};S.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(g/6,e/2);b.end();b.stroke();b.ellipse(g/6,0,5*g/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
S);mxUtils.extend(x,mxEllipse);x.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+g/8,c+e);b.lineTo(d+7*g/8,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("umlEntity",x);mxUtils.extend(C,mxShape);C.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(g,0);b.lineTo(0,e);b.moveTo(0,0);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlDestroy",C);mxUtils.extend(J,mxShape);
J.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};J.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,0);b.end();b.stroke();b.ellipse(0,e/8,g,7*e/8);b.fillAndStroke()};J.prototype.paintForeground=function(b,d,c,g,e){b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,e/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(W,mxRectangleShape);W.prototype.size=
40;W.prototype.isHtmlAllowed=function(){return!1};W.prototype.getLabelBounds=function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,d)};W.prototype.paintBackground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,b,d,
c,g,k):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=W&&(f=new f,f.apply(this.state),b.save(),f.paintVertexShape(b,d,c,g,k),b.restore()));k<e&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(d+g/2,c+k),b.lineTo(d+g/2,c+e),b.end(),b.stroke())};W.prototype.paintForeground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,d,c,g,Math.min(e,
-k))};mxCellRenderer.registerShape("umlLifeline",W);mxUtils.extend(ca,mxShape);ca.prototype.width=60;ca.prototype.height=30;ca.prototype.corner=10;ca.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};ca.prototype.paintBackground=function(b,d,c,g,e){var k=this.corner,f=Math.min(g,Math.max(k,parseFloat(mxUtils.getValue(this.style,
+k))};mxCellRenderer.registerShape("umlLifeline",W);mxUtils.extend(da,mxShape);da.prototype.width=60;da.prototype.height=30;da.prototype.corner=10;da.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};da.prototype.paintBackground=function(b,d,c,g,e){var k=this.corner,f=Math.min(g,Math.max(k,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),B=Math.min(e,Math.max(1.5*k,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),l=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);l!=mxConstants.NONE&&(b.setFillColor(l),b.rect(d,c,g,e),b.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(b,d,c,g,e),b.setGradient(this.fill,this.gradient,d,c,g,e,this.gradientDirection)):b.setFillColor(this.fill);b.begin();
-b.moveTo(d,c);b.lineTo(d+f,c);b.lineTo(d+f,c+Math.max(0,B-1.5*k));b.lineTo(d+Math.max(0,f-k),c+B);b.lineTo(d,c+B);b.close();b.fillAndStroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+g,c);b.lineTo(d+g,c+e);b.lineTo(d,c+e);b.lineTo(d,c+B);b.stroke()};mxCellRenderer.registerShape("umlFrame",ca);mxPerimeter.CenterPerimeter=function(b,d,c,g){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
+b.moveTo(d,c);b.lineTo(d+f,c);b.lineTo(d+f,c+Math.max(0,B-1.5*k));b.lineTo(d+Math.max(0,f-k),c+B);b.lineTo(d,c+B);b.close();b.fillAndStroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+g,c);b.lineTo(d+g,c+e);b.lineTo(d,c+e);b.lineTo(d,c+B);b.stroke()};mxCellRenderer.registerShape("umlFrame",da);mxPerimeter.CenterPerimeter=function(b,d,c,g){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
c,g){g=W.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;c.x<b.getCenterX()&&(d=-1*(d+1));return new mxPoint(b.getCenterX()+d,Math.min(b.y+b.height,Math.max(b.y+g,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,d,c,g){g=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(b,d,c,g){g=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(g+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return c.x<b.getCenterX()&&(g=-1*(g+1)),new mxPoint(b.getCenterX()+g,Math.min(b.y+b.height,Math.max(b.y,c.y)));c.y<b.getCenterY()&&(g=-1*(g+1));return new mxPoint(Math.min(b.x+
b.width,Math.max(b.x,c.x)),b.getCenterY()+g)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(b,d,c,g){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(b,new mxRectangle(0,0,0,Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(d.style,"size",M.prototype.size))*d.view.scale))),d.style),d,c,g)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(b,
@@ -2818,25 +2823,25 @@ d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAS
l,B+m),new mxPoint(f+e,B+m),new mxPoint(f,b),new mxPoint(f+e,B)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),B=[new mxPoint(f,B+e),new mxPoint(p,B),new mxPoint(f+l,B+e),new mxPoint(f+l,B+m),new mxPoint(p,B+m-e),new mxPoint(f,B+m),new mxPoint(f,B+e)]):(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),B=[new mxPoint(f,B),new mxPoint(p,B+e),new mxPoint(f+l,B),new mxPoint(f+l,B+m-e),new mxPoint(p,B+m),new mxPoint(f,B+m-e),new mxPoint(f,B)]);p=new mxPoint(p,
b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(B,p,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?O.prototype.fixedSize:O.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,B=b.y,l=b.width,m=b.height,p=b.getCenterX();b=b.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),B=[new mxPoint(p,B),new mxPoint(f+l,B+e),new mxPoint(f+l,B+m-e),new mxPoint(p,B+m),new mxPoint(f,B+m-e),new mxPoint(f,B+e),new mxPoint(p,B)]):(e=e?Math.max(0,Math.min(l,k)):l*Math.max(0,Math.min(1,k)),B=[new mxPoint(f+e,B),new mxPoint(f+l-e,B),new mxPoint(f+l,b),new mxPoint(f+l-e,B+m),new mxPoint(f+e,B+m),new mxPoint(f,b),new mxPoint(f+e,B)]);p=new mxPoint(p,
-b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(B,p,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(aa,mxShape);aa.prototype.size=10;aa.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,c);b.ellipse((g-k)/2,0,k,k);b.fillAndStroke();b.begin();b.moveTo(g/2,k);b.lineTo(g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",aa);mxUtils.extend(da,
-mxShape);da.prototype.size=10;da.prototype.inset=2;da.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.begin();b.moveTo(g/2,k+f);b.lineTo(g/2,e);b.end();b.stroke();b.begin();b.moveTo((g-k)/2-f,k/2);b.quadTo((g-k)/2-f,k+f,g/2,k+f);b.quadTo((g+k)/2+f,k+f,(g+k)/2+f,k/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",da);mxUtils.extend(ta,
+b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(B,p,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(aa,mxShape);aa.prototype.size=10;aa.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,c);b.ellipse((g-k)/2,0,k,k);b.fillAndStroke();b.begin();b.moveTo(g/2,k);b.lineTo(g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",aa);mxUtils.extend(ea,
+mxShape);ea.prototype.size=10;ea.prototype.inset=2;ea.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.begin();b.moveTo(g/2,k+f);b.lineTo(g/2,e);b.end();b.stroke();b.begin();b.moveTo((g-k)/2-f,k/2);b.quadTo((g-k)/2-f,k+f,g/2,k+f);b.quadTo((g+k)/2+f,k+f,(g+k)/2+f,k/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",ea);mxUtils.extend(ta,
mxShape);ta.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",ta);mxUtils.extend(ua,mxShape);ua.prototype.inset=2;ua.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.ellipse(0,k,g-2*k,e-2*k);b.fillAndStroke();b.begin();b.moveTo(g/2,0);b.quadTo(g,0,g,e/2);b.quadTo(g,
-e,g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ua);mxUtils.extend(ga,mxCylinder);ga.prototype.jettyWidth=20;ga.prototype.jettyHeight=10;ga.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,B=Math.min(d,e-d),l=Math.min(B+2*d,e-d);k?(b.moveTo(c,B),b.lineTo(f,B),b.lineTo(f,B+d),b.lineTo(c,B+d),b.moveTo(c,
-l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(c,B),b.close());b.end()};mxCellRenderer.registerShape("module",ga);mxUtils.extend(na,mxCylinder);na.prototype.jettyWidth=32;na.prototype.jettyHeight=12;na.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
-"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,B=.3*e-d/2,l=.7*e-d/2;k?(b.moveTo(c,B),b.lineTo(f,B),b.lineTo(f,B+d),b.lineTo(c,B+d),b.moveTo(c,l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(c,B),b.close());b.end()};mxCellRenderer.registerShape("component",na);mxUtils.extend(Y,mxRectangleShape);Y.prototype.paintForeground=
+e,g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ua);mxUtils.extend(ha,mxCylinder);ha.prototype.jettyWidth=20;ha.prototype.jettyHeight=10;ha.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,B=Math.min(d,e-d),l=Math.min(B+2*d,e-d);k?(b.moveTo(c,B),b.lineTo(f,B),b.lineTo(f,B+d),b.lineTo(c,B+d),b.moveTo(c,
+l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(c,B),b.close());b.end()};mxCellRenderer.registerShape("module",ha);mxUtils.extend(oa,mxCylinder);oa.prototype.jettyWidth=32;oa.prototype.jettyHeight=12;oa.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
+"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,B=.3*e-d/2,l=.7*e-d/2;k?(b.moveTo(c,B),b.lineTo(f,B),b.lineTo(f,B+d),b.lineTo(c,B+d),b.moveTo(c,l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(c,B),b.close());b.end()};mxCellRenderer.registerShape("component",oa);mxUtils.extend(Y,mxRectangleShape);Y.prototype.paintForeground=
function(b,d,c,g,e){var k=g/2,f=e/2,B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(d+k,c),new mxPoint(d+g,c+f),new mxPoint(d+k,c+e),new mxPoint(d,c+f)],this.isRounded,B,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Y);mxUtils.extend(Q,mxDoubleEllipse);Q.prototype.outerStroke=!0;Q.prototype.paintVertexShape=function(b,d,c,g,e){var k=Math.min(4,
-Math.min(g/5,e/5));0<g&&0<e&&(b.ellipse(d+k,c+k,g-2*k,e-2*k),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,c,g,e),b.stroke())};mxCellRenderer.registerShape("endState",Q);mxUtils.extend(ea,Q);ea.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ea);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=4;T.prototype.isOpenEnded=function(){return!0};T.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
+Math.min(g/5,e/5));0<g&&0<e&&(b.ellipse(d+k,c+k,g-2*k,e-2*k),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,c,g,e),b.stroke())};mxCellRenderer.registerShape("endState",Q);mxUtils.extend(fa,Q);fa.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",fa);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=4;T.prototype.isOpenEnded=function(){return!0};T.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
this.strokewidth-1)};T.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",T);mxUtils.extend(la,mxArrowConnector);la.prototype.defaultWidth=10;la.prototype.defaultArrowWidth=20;la.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};la.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};la.prototype.getEdgeWidth=
-function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",la);mxUtils.extend(oa,mxActor);oa.prototype.size=30;oa.prototype.isRoundable=function(){return!0};oa.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(g,
-0),new mxPoint(g,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("manualInput",oa);mxUtils.extend(ra,mxRectangleShape);ra.prototype.dx=20;ra.prototype.dy=20;ra.prototype.isHtmlAllowed=function(){return!1};ra.prototype.paintForeground=function(b,d,c,g,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var k=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(g*f,e*f));f=
+function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",la);mxUtils.extend(pa,mxActor);pa.prototype.size=30;pa.prototype.isRoundable=function(){return!0};pa.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(g,
+0),new mxPoint(g,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("manualInput",pa);mxUtils.extend(ra,mxRectangleShape);ra.prototype.dx=20;ra.prototype.dy=20;ra.prototype.isHtmlAllowed=function(){return!1};ra.prototype.paintForeground=function(b,d,c,g,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var k=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(g*f,e*f));f=
Math.max(k,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));k=Math.max(k,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(d,c+k);b.lineTo(d+g,c+k);b.end();b.stroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+f,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",ra);mxUtils.extend(R,mxActor);R.prototype.dx=20;R.prototype.dy=20;R.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint(d,c),new mxPoint(d,e),new mxPoint(0,e)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("corner",R);mxUtils.extend(qa,mxActor);qa.prototype.redrawPath=function(b,d,c,
g,e){b.moveTo(0,0);b.lineTo(0,e);b.end();b.moveTo(g,0);b.lineTo(g,e);b.end();b.moveTo(0,e/2);b.lineTo(g,e/2);b.end()};mxCellRenderer.registerShape("crossbar",qa);mxUtils.extend(ia,mxActor);ia.prototype.dx=20;ia.prototype.dy=20;ia.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint((g+d)/2,c),new mxPoint((g+d)/2,e),new mxPoint((g-d)/2,e),new mxPoint((g-d)/2,c),new mxPoint(0,c)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("tee",ia);mxUtils.extend(fa,mxActor);fa.prototype.arrowWidth=.3;fa.prototype.arrowSize=.2;fa.prototype.redrawPath=function(b,d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
-this.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(0,k)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("singleArrow",fa);mxUtils.extend(ha,mxActor);ha.prototype.redrawPath=function(b,
-d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",fa.prototype.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",fa.prototype.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(d,
-k),new mxPoint(d,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",ha);mxUtils.extend(pa,mxActor);pa.prototype.size=.1;pa.prototype.fixedSize=20;pa.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(g,0);b.quadTo(g-2*d,e/2,g,e);b.lineTo(d,
-e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",pa);mxUtils.extend(Aa,mxActor);Aa.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",Aa);mxUtils.extend(xa,mxActor);xa.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.quadTo(g/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",xa);mxUtils.extend(sa,mxActor);
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint((g+d)/2,c),new mxPoint((g+d)/2,e),new mxPoint((g-d)/2,e),new mxPoint((g-d)/2,c),new mxPoint(0,c)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("tee",ia);mxUtils.extend(ga,mxActor);ga.prototype.arrowWidth=.3;ga.prototype.arrowSize=.2;ga.prototype.redrawPath=function(b,d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
+this.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(0,k)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("singleArrow",ga);mxUtils.extend(ba,mxActor);ba.prototype.redrawPath=function(b,
+d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ga.prototype.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ga.prototype.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(d,
+k),new mxPoint(d,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",ba);mxUtils.extend(ma,mxActor);ma.prototype.size=.1;ma.prototype.fixedSize=20;ma.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(g,0);b.quadTo(g-2*d,e/2,g,e);b.lineTo(d,
+e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",ma);mxUtils.extend(Aa,mxActor);Aa.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",Aa);mxUtils.extend(xa,mxActor);xa.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.quadTo(g/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",xa);mxUtils.extend(sa,mxActor);
sa.prototype.size=20;sa.prototype.isRoundable=function(){return!0};sa.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(g/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(g-d,0),new mxPoint(g,.8*d),new mxPoint(g,e),new mxPoint(0,e),new mxPoint(0,.8*d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("loopLimit",sa);mxUtils.extend(ja,
mxActor);ja.prototype.size=.375;ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(b,d,c,g,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,e-d),new mxPoint(g/2,e),new mxPoint(0,e-d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",ja);mxUtils.extend(Z,
mxEllipse);Z.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+g/2,c+e);b.lineTo(d+g,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",Z);mxUtils.extend(P,mxEllipse);P.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,c+e/2);b.lineTo(d+g,c+e/2);b.end();b.stroke();b.begin();b.moveTo(d+g/2,c);b.lineTo(d+g/2,c+e);b.end();
@@ -2855,10 +2860,10 @@ dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Ro
dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];V.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);this.strictDrawShape(b,0,0,g,e)};V.prototype.strictDrawShape=function(b,d,c,g,e,k){var f=k&&k.rectStyle?k.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),l=k&&k.absoluteCornerSize?k.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",
this.absoluteCornerSize),m=k&&k.size?k.size:Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),p=k&&k.rectOutline?k.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),x=k&&k.indent?k.indent:Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),v=k&&k.dashed?k.dashed:mxUtils.getValue(this.style,"dashed",!1),B=k&&k.dashPattern?k.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),n=k&&k.relIndent?k.relIndent:
Math.max(0,Math.min(50,x)),t=k&&k.top?k.top:mxUtils.getValue(this.style,"top",!0),u=k&&k.right?k.right:mxUtils.getValue(this.style,"right",!0),y=k&&k.bottom?k.bottom:mxUtils.getValue(this.style,"bottom",!0),C=k&&k.left?k.left:mxUtils.getValue(this.style,"left",!0),z=k&&k.topLeftStyle?k.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),J=k&&k.topRightStyle?k.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),q=k&&k.bottomRightStyle?k.bottomRightStyle:mxUtils.getValue(this.style,
-"bottomRightStyle","default"),A=k&&k.bottomLeftStyle?k.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),da=k&&k.fillColor?k.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");k&&k.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var K=k&&k.strokeWidth?k.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),W=k&&k.fillColor2?k.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),ca=k&&k.gradientColor2?k.gradientColor2:mxUtils.getValue(this.style,
+"bottomRightStyle","default"),A=k&&k.bottomLeftStyle?k.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),ea=k&&k.fillColor?k.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");k&&k.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var K=k&&k.strokeWidth?k.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),W=k&&k.fillColor2?k.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),da=k&&k.gradientColor2?k.gradientColor2:mxUtils.getValue(this.style,
"gradientColor2","none"),aa=k&&k.gradientDirection2?k.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Ja=k&&k.opacity?k.opacity:mxUtils.getValue(this.style,"opacity","100"),wa=Math.max(0,Math.min(50,m));k=V.prototype;b.setDashed(v);B&&""!=B&&b.setDashPattern(B);b.setStrokeWidth(K);m=Math.min(.5*e,.5*g,m);l||(m=wa*Math.min(g,e)/100);m=Math.min(m,.5*Math.min(g,e));l||(x=Math.min(n*Math.min(g,e)/100));x=Math.min(x,.5*Math.min(g,e)-m);(t||u||y||C)&&"frame"!=p&&(b.begin(),
-t?k.moveNW(b,d,c,g,e,f,z,m,C):b.moveTo(0,0),t&&k.paintNW(b,d,c,g,e,f,z,m,C),k.paintTop(b,d,c,g,e,f,J,m,u),u&&k.paintNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),y&&k.paintSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,g,e,f,A,m,C),C&&k.paintSW(b,d,c,g,e,f,A,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(W),v=l=Ja,"none"==W&&(l=0),"none"==ca&&(v=0),b.setGradient(W,ca,0,0,g,e,aa,l,v),b.begin(),t?k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C):b.moveTo(x,0),k.paintLeftInner(b,
-d,c,g,e,f,A,m,x,y,C),C&&y&&k.paintSWInner(b,d,c,g,e,f,A,m,x,y),k.paintBottomInner(b,d,c,g,e,f,q,m,x,u,y),y&&u&&k.paintSEInner(b,d,c,g,e,f,q,m,x),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,u),u&&t&&k.paintNEInner(b,d,c,g,e,f,J,m,x),k.paintTopInner(b,d,c,g,e,f,z,m,x,C,t),t&&C&&k.paintNWInner(b,d,c,g,e,f,z,m,x),b.fill(),"none"==da&&(b.begin(),k.paintFolds(b,d,c,g,e,f,z,J,q,A,m,t,u,y,C),b.stroke()));t||u||y||!C?t||u||!y||C?!t&&!u&&y&&C?"frame"!=p?(b.begin(),k.moveSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,
+t?k.moveNW(b,d,c,g,e,f,z,m,C):b.moveTo(0,0),t&&k.paintNW(b,d,c,g,e,f,z,m,C),k.paintTop(b,d,c,g,e,f,J,m,u),u&&k.paintNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),y&&k.paintSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,g,e,f,A,m,C),C&&k.paintSW(b,d,c,g,e,f,A,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(W),v=l=Ja,"none"==W&&(l=0),"none"==da&&(v=0),b.setGradient(W,da,0,0,g,e,aa,l,v),b.begin(),t?k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C):b.moveTo(x,0),k.paintLeftInner(b,
+d,c,g,e,f,A,m,x,y,C),C&&y&&k.paintSWInner(b,d,c,g,e,f,A,m,x,y),k.paintBottomInner(b,d,c,g,e,f,q,m,x,u,y),y&&u&&k.paintSEInner(b,d,c,g,e,f,q,m,x),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,u),u&&t&&k.paintNEInner(b,d,c,g,e,f,J,m,x),k.paintTopInner(b,d,c,g,e,f,z,m,x,C,t),t&&C&&k.paintNWInner(b,d,c,g,e,f,z,m,x),b.fill(),"none"==ea&&(b.begin(),k.paintFolds(b,d,c,g,e,f,z,J,q,A,m,t,u,y,C),b.stroke()));t||u||y||!C?t||u||!y||C?!t&&!u&&y&&C?"frame"!=p?(b.begin(),k.moveSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,
g,e,f,A,m,C),k.paintSW(b,d,c,g,e,f,A,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),"double"==p&&(k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,A,m,x,y,C),k.paintSWInner(b,d,c,g,e,f,A,m,x,y),k.paintBottomInner(b,d,c,g,e,f,q,m,x,u,y)),b.stroke()):(b.begin(),k.moveSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,g,e,f,A,m,C),k.paintSW(b,d,c,g,e,f,A,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),k.lineNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,A,m,x,y,C),k.paintSWInner(b,d,c,g,e,f,A,m,x,y),k.paintBottomInner(b,
d,c,g,e,f,q,m,x,u,y),b.close(),b.fillAndStroke()):t||!u||y||C?!t&&u&&!y&&C?"frame"!=p?(b.begin(),k.moveSW(b,d,c,g,e,f,z,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),"double"==p&&(k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,A,m,x,y,C)),b.stroke(),b.begin(),k.moveNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),"double"==p&&(k.moveSEInner(b,d,c,g,e,f,q,m,x,y),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,u)),b.stroke()):(b.begin(),k.moveSW(b,d,c,g,e,f,z,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),
k.lineNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,A,m,x,y,C),b.close(),b.fillAndStroke(),b.begin(),k.moveNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),k.lineSEInner(b,d,c,g,e,f,q,m,x,y),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,u),b.close(),b.fillAndStroke()):!t&&u&&y&&!C?"frame"!=p?(b.begin(),k.moveNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),k.paintSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,g,e,f,A,m,C),"double"==p&&(k.moveSWInner(b,d,c,g,e,f,A,m,x,C),k.paintBottomInner(b,
@@ -2895,15 +2900,15 @@ function(b,d,c,g,e,k,f,m,l,p){p?"square"==f||"default"==f&&"square"==k?b.moveTo(
l,e-m-.5*l):("invRound"==f||"default"==f&&"invRound"==k||"fold"==f||"default"==f&&"fold"==k)&&b.lineTo(g-l,e-m-l):b.lineTo(g-l,e)};V.prototype.moveNEInner=function(b,d,c,g,e,k,f,m,l,p){p?"square"==f||"default"==f&&"square"==k||p?b.moveTo(g-l,l):"rounded"==f||"default"==f&&"rounded"==k||"snip"==f||"default"==f&&"snip"==k?b.moveTo(g-l,m+.5*l):("invRound"==f||"default"==f&&"invRound"==k||"fold"==f||"default"==f&&"fold"==k)&&b.moveTo(g-l,m+l):b.moveTo(g,l)};V.prototype.lineNEInner=function(b,d,c,g,e,
k,f,m,l,p){p?"square"==f||"default"==f&&"square"==k||p?b.lineTo(g-l,l):"rounded"==f||"default"==f&&"rounded"==k||"snip"==f||"default"==f&&"snip"==k?b.lineTo(g-l,m+.5*l):("invRound"==f||"default"==f&&"invRound"==k||"fold"==f||"default"==f&&"fold"==k)&&b.lineTo(g-l,m+l):b.lineTo(g,l)};V.prototype.moveNWInner=function(b,d,c,g,e,k,f,m,l,p,x){p||x?!p&&x?b.moveTo(l,0):p&&!x?b.moveTo(0,l):"square"==f||"default"==f&&"square"==k?b.moveTo(l,l):"rounded"==f||"default"==f&&"rounded"==k||"snip"==f||"default"==
f&&"snip"==k?b.moveTo(l,m+.5*l):("invRound"==f||"default"==f&&"invRound"==k||"fold"==f||"default"==f&&"fold"==k)&&b.moveTo(l,m+l):b.moveTo(0,0)};V.prototype.lineNWInner=function(b,d,c,g,e,k,f,m,l,p,x){p||x?!p&&x?b.lineTo(l,0):p&&!x?b.lineTo(0,l):"square"==f||"default"==f&&"square"==k?b.lineTo(l,l):"rounded"==f||"default"==f&&"rounded"==k||"snip"==f||"default"==f&&"snip"==k?b.lineTo(l,m+.5*l):("invRound"==f||"default"==f&&"invRound"==k||"fold"==f||"default"==f&&"fold"==k)&&b.lineTo(l,m+l):b.lineTo(0,
-0)};V.prototype.paintFolds=function(b,d,c,g,e,k,f,m,l,p,x,v,t,u,n){if("fold"==k||"fold"==f||"fold"==m||"fold"==l||"fold"==p)("fold"==f||"default"==f&&"fold"==k)&&v&&n&&(b.moveTo(0,x),b.lineTo(x,x),b.lineTo(x,0)),("fold"==m||"default"==m&&"fold"==k)&&v&&t&&(b.moveTo(g-x,0),b.lineTo(g-x,x),b.lineTo(g,x)),("fold"==l||"default"==l&&"fold"==k)&&u&&t&&(b.moveTo(g-x,e),b.lineTo(g-x,e-x),b.lineTo(g,e-x)),("fold"==p||"default"==p&&"fold"==k)&&u&&n&&(b.moveTo(0,e-x),b.lineTo(x,e-x),b.lineTo(x,e))};mxCellRenderer.registerShape(V.prototype.cst.RECT2,
+0)};V.prototype.paintFolds=function(b,d,c,g,e,k,f,m,l,p,x,v,n,t,u){if("fold"==k||"fold"==f||"fold"==m||"fold"==l||"fold"==p)("fold"==f||"default"==f&&"fold"==k)&&v&&u&&(b.moveTo(0,x),b.lineTo(x,x),b.lineTo(x,0)),("fold"==m||"default"==m&&"fold"==k)&&v&&n&&(b.moveTo(g-x,0),b.lineTo(g-x,x),b.lineTo(g,x)),("fold"==l||"default"==l&&"fold"==k)&&t&&n&&(b.moveTo(g-x,e),b.lineTo(g-x,e-x),b.lineTo(g,e-x)),("fold"==p||"default"==p&&"fold"==k)&&t&&u&&(b.moveTo(0,e-x),b.lineTo(x,e-x),b.lineTo(x,e))};mxCellRenderer.registerShape(V.prototype.cst.RECT2,
V);V.prototype.constraints=null;mxUtils.extend(Fa,mxConnector);Fa.prototype.origPaintEdgeShape=Fa.prototype.paintEdgeShape;Fa.prototype.paintEdgeShape=function(b,d,c){for(var g=[],e=0;e<d.length;e++)g.push(mxUtils.clone(d[e]));var e=b.state.dashed,k=b.state.fixDash;Fa.prototype.origPaintEdgeShape.apply(this,[b,g,c]);3<=b.state.strokeWidth&&(g=mxUtils.getValue(this.style,"fillColor",null),null!=g&&(b.setStrokeColor(g),b.setStrokeWidth(b.state.strokeWidth-2),b.setDashed(e,k),Fa.prototype.origPaintEdgeShape.apply(this,
[b,d,c])))};mxCellRenderer.registerShape("filledEdge",Fa);"undefined"!==typeof StyleFormatPanel&&function(){var b=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.editorUi.getSelectionState(),c=b.apply(this,arguments);"umlFrame"==d.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return c}}();mxMarker.addMarker("dash",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1);return function(){b.begin();
-b.moveTo(g.x-x/2-v/2,g.y-v/2+x/2);b.lineTo(g.x+v/2-3*x/2,g.y-3*v/2-x/2);b.stroke()}});mxMarker.addMarker("box",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1),t=g.x+x/2,u=g.y+v/2;g.x-=x;g.y-=v;return function(){b.begin();b.moveTo(t-x/2-v/2,u-v/2+x/2);b.lineTo(t-x/2+v/2,u-v/2-x/2);b.lineTo(t+v/2-3*x/2,u-3*v/2-x/2);b.lineTo(t-v/2-3*x/2,u-3*v/2+x/2);b.close();p?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("cross",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1);return function(){b.begin();
-b.moveTo(g.x-x/2-v/2,g.y-v/2+x/2);b.lineTo(g.x+v/2-3*x/2,g.y-3*v/2-x/2);b.moveTo(g.x-x/2+v/2,g.y-v/2-x/2);b.lineTo(g.x-v/2-3*x/2,g.y-3*v/2+x/2);b.stroke()}});mxMarker.addMarker("circle",Ua);mxMarker.addMarker("circlePlus",function(b,d,c,g,e,k,f,m,l,p){var x=g.clone(),v=Ua.apply(this,arguments),t=e*(f+2*l),u=k*(f+2*l);return function(){v.apply(this,arguments);b.begin();b.moveTo(x.x-e*l,x.y-k*l);b.lineTo(x.x-2*t+e*l,x.y-2*u+k*l);b.moveTo(x.x-t-u+k*l,x.y-u+t-e*l);b.lineTo(x.x+u-t-k*l,x.y-u-t+e*l);b.stroke()}});
-mxMarker.addMarker("halfCircle",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1),t=g.clone();g.x-=x;g.y-=v;return function(){b.begin();b.moveTo(t.x-v,t.y+x);b.quadTo(g.x-v,g.y+x,g.x,g.y);b.quadTo(g.x+v,g.y-x,t.x+v,t.y-x);b.stroke()}});mxMarker.addMarker("async",function(b,d,c,g,e,k,f,m,l,p){d=e*l*1.118;c=k*l*1.118;e*=f+l;k*=f+l;var x=g.clone();x.x-=d;x.y-=c;g.x+=1*-e-d;g.y+=1*-k-c;return function(){b.begin();b.moveTo(x.x,x.y);m?b.lineTo(x.x-e-k/2,x.y-k+e/2):b.lineTo(x.x+k/2-e,x.y-k-e/2);
+b.moveTo(g.x-x/2-v/2,g.y-v/2+x/2);b.lineTo(g.x+v/2-3*x/2,g.y-3*v/2-x/2);b.stroke()}});mxMarker.addMarker("box",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1),n=g.x+x/2,t=g.y+v/2;g.x-=x;g.y-=v;return function(){b.begin();b.moveTo(n-x/2-v/2,t-v/2+x/2);b.lineTo(n-x/2+v/2,t-v/2-x/2);b.lineTo(n+v/2-3*x/2,t-3*v/2-x/2);b.lineTo(n-v/2-3*x/2,t-3*v/2+x/2);b.close();p?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("cross",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1);return function(){b.begin();
+b.moveTo(g.x-x/2-v/2,g.y-v/2+x/2);b.lineTo(g.x+v/2-3*x/2,g.y-3*v/2-x/2);b.moveTo(g.x-x/2+v/2,g.y-v/2-x/2);b.lineTo(g.x-v/2-3*x/2,g.y-3*v/2+x/2);b.stroke()}});mxMarker.addMarker("circle",Ua);mxMarker.addMarker("circlePlus",function(b,d,c,g,e,k,f,m,l,x){var p=g.clone(),v=Ua.apply(this,arguments),n=e*(f+2*l),t=k*(f+2*l);return function(){v.apply(this,arguments);b.begin();b.moveTo(p.x-e*l,p.y-k*l);b.lineTo(p.x-2*n+e*l,p.y-2*t+k*l);b.moveTo(p.x-n-t+k*l,p.y-t+n-e*l);b.lineTo(p.x+t-n-k*l,p.y-t-n+e*l);b.stroke()}});
+mxMarker.addMarker("halfCircle",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1),n=g.clone();g.x-=x;g.y-=v;return function(){b.begin();b.moveTo(n.x-v,n.y+x);b.quadTo(g.x-v,g.y+x,g.x,g.y);b.quadTo(g.x+v,g.y-x,n.x+v,n.y-x);b.stroke()}});mxMarker.addMarker("async",function(b,d,c,g,e,k,f,m,l,p){d=e*l*1.118;c=k*l*1.118;e*=f+l;k*=f+l;var x=g.clone();x.x-=d;x.y-=c;g.x+=1*-e-d;g.y+=1*-k-c;return function(){b.begin();b.moveTo(x.x,x.y);m?b.lineTo(x.x-e-k/2,x.y-k+e/2):b.lineTo(x.x+k/2-e,x.y-k-e/2);
b.lineTo(x.x-e,x.y-k);b.close();p?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("openAsync",function(b){b=null!=b?b:2;return function(d,c,g,e,k,f,m,l,x,p){k*=m+x;f*=m+x;var v=e.clone();return function(){d.begin();d.moveTo(v.x,v.y);l?d.lineTo(v.x-k-f/b,v.y-f+k/b):d.lineTo(v.x+f/b-k,v.y-f-k/b);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var ab=function(b,d,c){return Ma(b,["width"],d,function(d,g,e,k,f){f=b.shape.getEdgeWidth()*b.view.scale+c;return new mxPoint(k.x+g*d/4+e*f/2,k.y+
e*d/4-g*f/2)},function(d,g,e,k,f,m){d=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,f.x,f.y,m.x,m.y));b.style.width=Math.round(2*d)/b.view.scale-c})},Ma=function(b,d,c,g,e){return ka(b,d,function(d){var e=b.absolutePoints,k=e.length-1;d=b.view.translate;var f=b.view.scale,m=c?e[0]:e[k],e=c?e[1]:e[k-1],k=e.x-m.x,l=e.y-m.y,x=Math.sqrt(k*k+l*l),m=g.call(this,x,k/x,l/x,m,e);return new mxPoint(m.x/f-d.x,m.y/f-d.y)},function(d,g,k){var f=b.absolutePoints,m=f.length-1;d=b.view.translate;var l=b.view.scale,x=c?f[0]:
-f[m],f=c?f[1]:f[m-1],m=f.x-x.x,p=f.y-x.y,v=Math.sqrt(m*m+p*p);g.x=(g.x+d.x)*l;g.y=(g.y+d.y)*l;e.call(this,v,m/v,p/v,x,f,g,k)})},Va=function(b){return function(d){return[ka(d,["arrowWidth","arrowSize"],function(d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",fa.prototype.arrowWidth))),g=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",fa.prototype.arrowSize)));return new mxPoint(d.x+(1-g)*d.width,d.y+(1-c)*d.height/2)},function(d,c){this.state.style.arrowWidth=
+f[m],f=c?f[1]:f[m-1],m=f.x-x.x,p=f.y-x.y,v=Math.sqrt(m*m+p*p);g.x=(g.x+d.x)*l;g.y=(g.y+d.y)*l;e.call(this,v,m/v,p/v,x,f,g,k)})},Va=function(b){return function(d){return[ka(d,["arrowWidth","arrowSize"],function(d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",ga.prototype.arrowWidth))),g=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",ga.prototype.arrowSize)));return new mxPoint(d.x+(1-g)*d.width,d.y+(1-c)*d.height/2)},function(d,c){this.state.style.arrowWidth=
Math.max(0,Math.min(1,Math.abs(d.y+d.height/2-c.y)/d.height*2));this.state.style.arrowSize=Math.max(0,Math.min(b,(d.x+d.width-c.x)/d.width))})]}},Wa=function(b){return function(d){return[ka(d,["size"],function(d){var c=Math.max(0,Math.min(.5*d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(d.x,d.y+c)},function(b,d){this.state.style.size=Math.max(0,d.y-b.y)},!0)]}},Sa=function(b,d,c){return function(g){var e=[ka(g,["size"],function(c){var g=Math.max(0,Math.min(c.width,
Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*b;return new mxPoint(c.x+g,c.y+g)},function(d,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,c.x-d.x),Math.min(d.height,c.y-d.y)))/b)},!1)];c&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ia(g));return e}},Na=function(b,d,c,g,e){c=null!=c?c:.5;return function(k){var f=[ka(k,["size"],function(d){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,g=parseFloat(mxUtils.getValue(this.state.style,
"size",c?e:b));return new mxPoint(d.x+Math.max(0,Math.min(.5*d.width,g*(c?1:d.width))),d.getCenterY())},function(b,d,g){b=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(c,(d.x-b.x)/b.width));this.state.style.size=b},!1,g)];d&&mxUtils.getValue(k.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(Ia(k));return f}},Xa=function(b,d,c){b=null!=b?b:.5;return function(g){var e=[ka(g,["size"],function(g){var e=null!=c?"0"!=mxUtils.getValue(this.state.style,"fixedSize",
@@ -2923,17 +2928,17 @@ b.style[mxConstants.STYLE_ENDSIZE],b.style.startWidth=b.style.endWidth;mxEvent.i
parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(Ia(b,c/2))}d.push(ka(b,[mxConstants.STYLE_STARTSIZE],function(d){var c=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,c))):new mxPoint(d.x+Math.max(0,Math.min(d.width,c)),d.getCenterY())},function(d,c){b.style[mxConstants.STYLE_STARTSIZE]=
1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,c.y-d.y))):Math.round(Math.max(0,Math.min(d.width,c.x-d.x)))},!1,null,function(d){var c=b.view.graph;if(!mxEvent.isShiftDown(d.getEvent())&&!mxEvent.isControlDown(d.getEvent())&&(c.isTableRow(b.cell)||c.isTableCell(b.cell))){d=c.getSwimlaneDirection(b.style);for(var g=c.model.getParent(b.cell),g=c.model.getChildCells(g,!0),e=[],k=0;k<g.length;k++)g[k]!=b.cell&&c.isSwimlane(g[k])&&c.getSwimlaneDirection(c.getCurrentCellStyle(g[k]))==
d&&e.push(g[k]);c.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],e)}}));return d},label:La(),ext:La(),rectangle:La(),triangle:La(),rhombus:La(),umlLifeline:function(b){return[ka(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",W.prototype.size))));return new mxPoint(b.getCenterX(),b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},umlFrame:function(b){return[ka(b,
-["width","height"],function(b){var d=Math.max(ca.prototype.corner,Math.min(b.width,mxUtils.getValue(this.state.style,"width",ca.prototype.width))),c=Math.max(1.5*ca.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",ca.prototype.height)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.width=Math.round(Math.max(ca.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*ca.prototype.corner,Math.min(b.height,d.y-b.y)))},
+["width","height"],function(b){var d=Math.max(da.prototype.corner,Math.min(b.width,mxUtils.getValue(this.state.style,"width",da.prototype.width))),c=Math.max(1.5*da.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",da.prototype.height)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.width=Math.round(Math.max(da.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*da.prototype.corner,Math.min(b.height,d.y-b.y)))},
!1)]},process:function(b){var d=[ka(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",I.prototype.size));return d?new mxPoint(b.x+c,b.y+b.height/4):new mxPoint(b.x+b.width*c,b.y+b.height/4)},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*b.width,d.x-b.x)):Math.max(0,Math.min(.5,(d.x-b.x)/b.width));this.state.style.size=c},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,
!1)&&d.push(Ia(b));return d},cross:function(b){return[ka(b,["size"],function(b){var d=Math.min(b.width,b.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",za.prototype.size)))*d/2;return new mxPoint(b.getCenterX()-d,b.getCenterY()-d)},function(b,d){var c=Math.min(b.width,b.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,b.getCenterY()-d.y)/c*2,Math.max(0,b.getCenterX()-d.x)/c*2)))})]},note:function(b){return[ka(b,["size"],function(b){var d=Math.max(0,
Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},note2:function(b){return[ka(b,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},
-function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ka(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",oa.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));
-return d},dataStorage:function(b){return[ka(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",d?pa.prototype.fixedSize:pa.prototype.size));return new mxPoint(b.x+b.width-c*(d?1:b.width),b.getCenterY())},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=c},!1)]},callout:function(b){var d=
+function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ka(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",pa.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));
+return d},dataStorage:function(b){return[ka(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",d?ma.prototype.fixedSize:ma.prototype.size));return new mxPoint(b.x+b.width-c*(d?1:b.width),b.getCenterY())},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=c},!1)]},callout:function(b){var d=
[ka(b,["size","position"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",M.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",M.prototype.position)));mxUtils.getValue(this.state.style,"base",M.prototype.base);return new mxPoint(b.x+c*b.width,b.y+b.height-d)},function(b,d){mxUtils.getValue(this.state.style,"base",M.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(b.height,b.y+b.height-d.y)));this.state.style.position=
Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ka(b,["position2"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",M.prototype.position2)));return new mxPoint(b.x+d*b.width,b.y+b.height)},function(b,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ka(b,["base"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",M.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"position",M.prototype.position))),g=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"base",M.prototype.base)));return new mxPoint(b.x+Math.min(b.width,c*b.width+g),b.y+b.height-d)},function(b,d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",M.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(b.width,d.x-b.x-c*b.width)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));return d},internalStorage:function(b){var d=
[ka(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ra.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ra.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));return d},module:function(b){return[ka(b,
-["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",ga.prototype.jettyWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"jettyHeight",ga.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*c)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ka(b,
+["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",ha.prototype.jettyWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"jettyHeight",ha.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*c)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ka(b,
["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",R.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",R.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},tee:function(b){return[ka(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
"dx",ia.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ia.prototype.dy)));return new mxPoint(b.x+(b.width+d)/2,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,2*Math.min(b.width/2,d.x-b.x-b.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},singleArrow:Va(1),doubleArrow:Va(.5),folder:function(b){return[ka(b,["tabWidth","tabHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
"tabWidth",t.prototype.tabWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"tabHeight",t.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",t.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(d=b.width-d);return new mxPoint(b.x+d,b.y+c)},function(b,d){var c=Math.max(0,Math.min(b.width,d.x-b.x));mxUtils.getValue(this.state.style,"tabPosition",t.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=b.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=
@@ -2944,8 +2949,8 @@ return new mxPoint(b.x+d,b.y+d)},function(b,d){this.state.style.size=Math.round(
!0,K.prototype.fixedSize),hexagon:Na(O.prototype.size,!0,.5,!0,O.prototype.fixedSize),curlyBracket:Na(N.prototype.size,!1),display:Na(Ba.prototype.size,!1),cube:Sa(1,f.prototype.size,!1),card:Sa(.5,y.prototype.size,!0),loopLimit:Sa(.5,sa.prototype.size,!0),trapezoid:Xa(.5,H.prototype.size,H.prototype.fixedSize),parallelogram:Xa(1,E.prototype.size,E.prototype.fixedSize)};Graph.createHandle=ka;Graph.handleFactory=Oa;var eb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=
function(){var b=eb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var d=this.state.style.shape;null==mxCellRenderer.defaultShapes[d]&&null==mxStencilRegistry.getStencil(d)?d=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(d=mxConstants.SHAPE_SWIMLANE);d=Oa[d];null==d&&null!=this.state.shape&&this.state.shape.isRoundable()&&(d=Oa[mxConstants.SHAPE_RECTANGLE]);null!=d&&(d=d(this.state),null!=d&&(b=null==b?d:b.concat(d)))}return b};mxEdgeHandler.prototype.createCustomHandles=
function(){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)&&(b=mxConstants.SHAPE_CONNECTOR);b=Oa[b];return null!=b?b(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Pa=new mxPoint(1,0),Qa=new mxPoint(1,0),Ya=mxUtils.toRadians(-30),Pa=mxUtils.getRotatedPoint(Pa,Math.cos(Ya),Math.sin(Ya)),Za=mxUtils.toRadians(-150),Qa=mxUtils.getRotatedPoint(Qa,Math.cos(Za),Math.sin(Za));mxEdgeStyle.IsometricConnector=function(b,
-d,c,g,e){var k=b.view;g=null!=g&&0<g.length?g[0]:null;var f=b.absolutePoints,m=f[0],f=f[f.length-1];null!=g&&(g=k.transformControlPoint(b,g));null==m&&null!=d&&(m=new mxPoint(d.getCenterX(),d.getCenterY()));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));var l=Pa.x,x=Pa.y,p=Qa.x,v=Qa.y,t="horizontal"==mxUtils.getValue(b.style,"elbow","horizontal");if(null!=f&&null!=m){b=function(b,d,c){b-=u.x;var g=d-u.y;d=(v*b-p*g)/(l*v-x*p);b=(x*b-l*g)/(x*p-l*v);t?(c&&(u=new mxPoint(u.x+l*d,u.y+
-x*d),e.push(u)),u=new mxPoint(u.x+p*b,u.y+v*b)):(c&&(u=new mxPoint(u.x+p*b,u.y+v*b),e.push(u)),u=new mxPoint(u.x+l*d,u.y+x*d));e.push(u)};var u=m;null==g&&(g=new mxPoint(m.x+(f.x-m.x)/2,m.y+(f.y-m.y)/2));b(g.x,g.y,!0);b(f.x,f.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var fb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(b,d){if(d==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(b);c.snapToTerminals=!1;return c}return fb.apply(this,
+d,c,g,e){var k=b.view;g=null!=g&&0<g.length?g[0]:null;var f=b.absolutePoints,m=f[0],f=f[f.length-1];null!=g&&(g=k.transformControlPoint(b,g));null==m&&null!=d&&(m=new mxPoint(d.getCenterX(),d.getCenterY()));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));var l=Pa.x,x=Pa.y,p=Qa.x,v=Qa.y,n="horizontal"==mxUtils.getValue(b.style,"elbow","horizontal");if(null!=f&&null!=m){b=function(b,d,c){b-=t.x;var g=d-t.y;d=(v*b-p*g)/(l*v-x*p);b=(x*b-l*g)/(x*p-l*v);n?(c&&(t=new mxPoint(t.x+l*d,t.y+
+x*d),e.push(t)),t=new mxPoint(t.x+p*b,t.y+v*b)):(c&&(t=new mxPoint(t.x+p*b,t.y+v*b),e.push(t)),t=new mxPoint(t.x+l*d,t.y+x*d));e.push(t)};var t=m;null==g&&(g=new mxPoint(m.x+(f.x-m.x)/2,m.y+(f.y-m.y)/2));b(g.x,g.y,!0);b(f.x,f.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var fb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(b,d){if(d==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(b);c.snapToTerminals=!1;return c}return fb.apply(this,
arguments)};l.prototype.constraints=[];q.prototype.getConstraints=function(b,d,c){b=[];var g=Math.tan(mxUtils.toRadians(30)),e=(.5-g)/2,g=Math.min(d,c/(.5+g));d=(d-g)/2;c=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c+.25*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*g,c+g*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+g,c+.25*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+g,c+.75*g));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,d+.5*g,c+(1-e)*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c+.75*g));return b};p.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,g=Math.min(d*Math.tan(g),.5*c);b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,d,c-g));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-g));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));return b};M.prototype.getConstraints=function(b,d,c){b=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var g=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,
@@ -2964,14 +2969,14 @@ parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.push(new mxConnect
1),!1,null,0,.29*-d));b.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-d));return b};t.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(b.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),e))):(b.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,e)),b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(d-g),e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
-0,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};ra.prototype.constraints=mxRectangleShape.prototype.constraints;pa.prototype.constraints=
-mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxEllipse.prototype.constraints;P.prototype.constraints=mxEllipse.prototype.constraints;Ga.prototype.constraints=mxEllipse.prototype.constraints;Ha.prototype.constraints=mxEllipse.prototype.constraints;oa.prototype.constraints=mxRectangleShape.prototype.constraints;Ca.prototype.constraints=mxRectangleShape.prototype.constraints;Ba.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(d,c/2),e=Math.min(d-g,Math.max(0,parseFloat(mxUtils.getValue(this.style,
+0,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};ra.prototype.constraints=mxRectangleShape.prototype.constraints;ma.prototype.constraints=
+mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxEllipse.prototype.constraints;P.prototype.constraints=mxEllipse.prototype.constraints;Ga.prototype.constraints=mxEllipse.prototype.constraints;Ha.prototype.constraints=mxEllipse.prototype.constraints;pa.prototype.constraints=mxRectangleShape.prototype.constraints;Ca.prototype.constraints=mxRectangleShape.prototype.constraints;Ba.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(d,c/2),e=Math.min(d-g,Math.max(0,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))*d);b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-g),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-g),c));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,e,c));return b};ga.prototype.getConstraints=function(b,d,c){d=parseFloat(mxUtils.getValue(b,"jettyWidth",ga.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,"jettyHeight",ga.prototype.jettyHeight));var g=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,d),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,
+0),!1,null,e,c));return b};ha.prototype.getConstraints=function(b,d,c){d=parseFloat(mxUtils.getValue(b,"jettyWidth",ha.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,"jettyHeight",ha.prototype.jettyHeight));var g=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,d),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,d),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(c-.5*b,1.5*b)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-
.5*b,3.5*b))];c>5*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,d));c>8*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,d));c>15*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,d));return g};sa.prototype.constraints=mxRectangleShape.prototype.constraints;ja.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)];ba.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)];na.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,
+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)];ca.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)];oa.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)];u.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];F.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,
@@ -2987,9 +2992,9 @@ null,.75*d+.25*g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
!1,null,.5*(d-g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d-.25*g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return b};R.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),
!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*(c+e)));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,g,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return b};qa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,
-.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];fa.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-g));return b};ha.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,
-parseFloat(mxUtils.getValue(this.style,"arrowWidth",fa.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",fa.prototype.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),
+.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];ga.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-g));return b};ba.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,
+parseFloat(mxUtils.getValue(this.style,"arrowWidth",ga.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ga.prototype.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),
!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return b};za.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(c,d),e=Math.max(0,Math.min(g,g*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=(c-e)/2,k=g+e,f=(d-e)/2,e=f+e;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,f,0));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c-.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),k));b.push(new mxConnectionConstraint(new mxPoint(0,
@@ -3020,42 +3025,42 @@ null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&b.value.hasAttribute("
this.addAction("editLink...",function(){var b=l.getSelectionCell();if(l.isEnabled()&&null!=b&&l.isCellEditable(b)){var d=l.getLinkForCell(b)||"";f.showLinkDialog(d,mxResources.get("apply"),function(d,c,g){d=mxUtils.trim(d);l.setLinkForCell(b,0<d.length?d:null);l.setAttributeForCell(b,"linkTarget",g)},!0,l.getLinkTargetForCell(b))}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&(l.clearSelection(),
f.actions.get("image").funct())})).isEnabled=q;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&f.showLinkDialog("",mxResources.get("insert"),function(b,d,c){b=mxUtils.trim(b);if(0<b.length){var g=null,e=l.getLinkTitle(b);null!=d&&0<d.length&&(g=d[0].iconUrl,e=d[0].name||d[0].type,e=e.charAt(0).toUpperCase()+e.substring(1),30<e.length&&(e=e.substring(0,30)+"..."));d=new mxCell(e,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+
(null!=g?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+g:"spacing=10;"));d.vertex=!0;g=l.getCenterInsertPoint(l.getBoundingBoxFromGeometry([d],!0));d.geometry.x=g.x;d.geometry.y=g.y;l.setAttributeForCell(d,"linkTarget",c);l.setLinkForCell(d,b);l.cellSizeUpdated(d,!0);l.getModel().beginUpdate();try{d=l.addCell(d),l.fireEvent(new mxEventObject("cellsInserted","cells",[d]))}finally{l.getModel().endUpdate()}l.setSelectionCell(d);l.scrollCellToVisible(l.getSelectionCell())}},
-!0)})).isEnabled=q;this.addAction("link...",mxUtils.bind(this,function(){if(l.isEnabled())if(l.cellEditor.isContentEditing()){var b=l.getSelectedElement(),d=l.getParentByName(b,"A",l.cellEditor.textarea),c="";if(null==d&&null!=b&&null!=b.getElementsByTagName)for(var e=b.getElementsByTagName("a"),k=0;k<e.length&&null==d;k++)e[k].textContent==b.textContent&&(d=e[k]);null!=d&&"A"==d.nodeName&&(c=d.getAttribute("href")||"",l.selectNode(d));var t=l.cellEditor.saveSelection();f.showLinkDialog(c,mxResources.get("apply"),
-mxUtils.bind(this,function(b){l.cellEditor.restoreSelection(t);null!=b&&l.insertLink(b)}))}else l.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=q;this.addAction("autosize",function(){var b=l.getSelectionCells();if(null!=b){l.getModel().beginUpdate();try{for(var d=0;d<b.length;d++){var c=b[d];0<l.getModel().getChildCount(c)?l.updateGroupBounds([c],0,!0):l.updateCellSize(c)}}finally{l.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",
-function(){l.stopEditing();var b=l.getCommonStyle(l.getSelectionCells()),b="1"==mxUtils.getValue(b,"html","0")?null:"1";l.getModel().beginUpdate();try{for(var d=l.getEditableCells(l.getSelectionCells()),c=0;c<d.length;c++)if(state=l.getView().getState(d[c]),null!=state){var e=mxUtils.getValue(state.style,"html","0");if("1"==e&&null==b){var k=l.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var t=document.createElement("div");
-t.innerHTML=l.sanitizeHtml(k);k=mxUtils.extractTextWithWhitespace(t.childNodes);l.cellLabelChanged(state.cell,k);l.setCellStyles("html",b,[d[c]])}else"0"==e&&"1"==b&&(k=mxUtils.htmlEntities(l.convertValueToString(state.cell),!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),l.cellLabelChanged(state.cell,l.sanitizeHtml(k)),l.setCellStyles("html",b,[d[c]]))}f.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=b?b:"0"],"cells",d))}finally{l.getModel().endUpdate()}});
-this.addAction("wordWrap",function(){var b=l.getView().getState(l.getSelectionCell()),d="wrap";l.stopEditing();null!=b&&"wrap"==b.style[mxConstants.STYLE_WHITE_SPACE]&&(d=null);l.setCellStyles(mxConstants.STYLE_WHITE_SPACE,d)});this.addAction("rotation",function(){var b="0",d=l.getView().getState(l.getSelectionCell());null!=d&&(b=d.style[mxConstants.STYLE_ROTATION]||b);b=new FilenameDialog(f,b,mxResources.get("apply"),function(b){null!=b&&0<b.length&&l.setCellStyles(mxConstants.STYLE_ROTATION,b)},
-mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");f.showDialog(b.container,375,80,!0,!0);b.init()});this.addAction("resetView",function(){l.zoomTo(1);f.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",function(b){l.isFastZoomEnabled()?l.lazyZoom(!0,!0,f.buttonZoomDelay):l.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(b){l.isFastZoomEnabled()?l.lazyZoom(!1,!0,f.buttonZoomDelay):l.zoomOut()},null,null,Editor.ctrlKey+
-" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var b=l.isSelectionEmpty()?l.getGraphBounds():l.getBoundingBox(l.getSelectionCells()),d=l.view.translate,c=l.view.scale;b.x=b.x/c-d.x;b.y=b.y/c-d.y;b.width/=c;b.height/=c;null!=l.backgroundImage&&(b=mxRectangle.fromRectangle(b),b.add(new mxRectangle(0,0,l.backgroundImage.width,l.backgroundImage.height)));0==b.width||0==b.height?(l.zoomTo(1),f.resetScrollbars()):(d=Editor.fitWindowBorders,null!=d&&(b.x-=d.x,b.y-=d.y,b.width+=d.width+
-d.x,b.height+=d.height+d.y),l.fitWindow(b))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();var b=l.pageFormat,d=l.pageScale;l.zoomTo(Math.floor(20*Math.min((l.container.clientWidth-10)/b.width/d,(l.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(l.container)&&(b=l.getPagePadding(),l.container.scrollTop=b.y*l.view.scale-1,l.container.scrollLeft=Math.min(b.x*l.view.scale,(l.container.scrollWidth-
-l.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();var b=l.pageFormat,d=l.pageScale;l.zoomTo(Math.floor(20*Math.min((l.container.clientWidth-10)/(2*b.width)/d,(l.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(l.container)&&(b=l.getPagePadding(),l.container.scrollTop=Math.min(b.y,(l.container.scrollHeight-l.container.clientHeight)/2),l.container.scrollLeft=Math.min(b.x,
-(l.container.scrollWidth-l.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();l.zoomTo(Math.floor(20*(l.container.clientWidth-10)/l.pageFormat.width/l.pageScale)/20);if(mxUtils.hasScrollbars(l.container)){var b=l.getPagePadding();l.container.scrollLeft=Math.min(b.x*l.view.scale,(l.container.scrollWidth-l.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+
-"...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*l.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&l.zoomTo(b/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*l.pageScale),mxResources.get("apply"),mxUtils.bind(this,
-function(b){b=parseInt(b);!isNaN(b)&&0<b&&(b=new ChangePageSetup(f,null,null,null,b/100),b.ignoreColor=!0,b.ignoreImage=!0,l.model.execute(b))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}));var d=null,d=this.addAction("grid",function(){l.setGridEnabled(!l.isGridEnabled());l.defaultGridEnabled=l.isGridEnabled();f.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.isGridEnabled()});
-d.setEnabled(!1);d=this.addAction("guides",function(){l.graphHandler.guidesEnabled=!l.graphHandler.guidesEnabled;f.fireEvent(new mxEventObject("guidesEnabledChanged"))});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.graphHandler.guidesEnabled});d.setEnabled(!1);d=this.addAction("tooltips",function(){l.tooltipHandler.setEnabled(!l.tooltipHandler.isEnabled());f.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.tooltipHandler.isEnabled()});
-d=this.addAction("collapseExpand",function(){var b=new ChangePageSetup(f);b.ignoreColor=!0;b.ignoreImage=!0;b.foldingEnabled=!l.foldingEnabled;l.model.execute(b)});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.foldingEnabled});d.isEnabled=q;d=this.addAction("scrollbars",function(){f.setScrollbars(!f.hasScrollbars())});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.scrollbars});d=this.addAction("pageView",mxUtils.bind(this,function(){f.setPageVisible(!l.pageVisible)}));
-d.setToggleAction(!0);d.setSelectedCallback(function(){return l.pageVisible});d=this.addAction("connectionArrows",function(){l.connectionArrowsEnabled=!l.connectionArrowsEnabled;f.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionArrowsEnabled});d=this.addAction("connectionPoints",function(){l.setConnectable(!l.connectionHandler.isEnabled());f.fireEvent(new mxEventObject("connectionPointsChanged"))},
-null,null,"Alt+Shift+P");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionHandler.isEnabled()});d=this.addAction("copyConnect",function(){l.connectionHandler.setCreateTarget(!l.connectionHandler.isCreateTarget());f.fireEvent(new mxEventObject("copyConnectChanged"))});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionHandler.isCreateTarget()});d.isEnabled=q;d=this.addAction("autosave",function(){f.editor.setAutosave(!f.editor.autosave)});d.setToggleAction(!0);
-d.setSelectedCallback(function(){return f.editor.autosave});d.isEnabled=q;d.visible=!1;this.addAction("help",function(){var b="";mxResources.isLanguageSupported(mxClient.language)&&(b="_"+mxClient.language);l.openLink(RESOURCES_PATH+"/help"+b+".html")});var k=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){k||(f.showDialog((new AboutDialog(f)).container,320,280,!0,!0,function(){k=!1}),k=!0)}));d=mxUtils.bind(this,function(b,d,c,e){return this.addAction(b,function(){if(null!=
-c&&l.cellEditor.isContentEditing())c();else{l.stopEditing(!1);l.getModel().beginUpdate();try{var b=l.getEditableCells(l.getSelectionCells());l.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,d,b);(d&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?l.updateLabelElements(b,function(b){b.style.fontWeight=null;"B"==b.nodeName&&l.replaceElement(b)}):(d&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?l.updateLabelElements(b,function(b){b.style.fontStyle=null;"I"==b.nodeName&&l.replaceElement(b)}):(d&mxConstants.FONT_UNDERLINE)==
-mxConstants.FONT_UNDERLINE&&l.updateLabelElements(b,function(b){b.style.textDecoration=null;"U"==b.nodeName&&l.replaceElement(b)});for(var g=0;g<b.length;g++)0==l.model.getChildCount(b[g])&&l.autoSizeCell(b[g],!1)}finally{l.getModel().endUpdate()}}},null,null,e)});d("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");d("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");d("underline",mxConstants.FONT_UNDERLINE,
-function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){f.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){f.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){f.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){f.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)});this.addAction("backgroundColor...",
-function(){f.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){f.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){f.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,!0)});this.addAction("shadow",function(){f.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,null),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,
-null),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("dashed",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,"1"),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",
-l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("dotted",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,"1"),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("sharp",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,
-"0"),l.setCellStyles(mxConstants.STYLE_CURVED,"0"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("rounded",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),l.setCellStyles(mxConstants.STYLE_CURVED,"0"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],
-"values",["1","0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!l.isSelectionEmpty()&&l.isEnabled()){l.getModel().beginUpdate();try{var b=l.getSelectionCells(),d=l.getCurrentCellStyle(b[0]),c="1"==mxUtils.getValue(d,mxConstants.STYLE_ROUNDED,"0")?"0":"1";l.setCellStyles(mxConstants.STYLE_ROUNDED,c);l.setCellStyles(mxConstants.STYLE_CURVED,null);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],
-"values",[c,"0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}}});this.addAction("curved",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),l.setCellStyles(mxConstants.STYLE_CURVED,"1"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("collapsible",function(){var b=l.view.getState(l.getSelectionCell()),
-d="1";null!=b&&null!=l.getFoldingImage(b)&&(d="0");l.setCellStyles("collapsible",d);f.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[d],"cells",l.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var b=l.getEditableCells(l.getSelectionCells());if(null!=b&&0<b.length){var d=l.getModel(),d=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",d.getStyle(b[0])||"",function(d){null!=d&&l.setCellStyle(mxUtils.trim(d),b)},null,null,
-400,220);this.editorUi.showDialog(d.container,420,300,!0,!0);d.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){l.isEnabled()&&!l.isSelectionEmpty()&&f.setDefaultStyle(l.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){l.isEnabled()&&f.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var b=l.getSelectionCell();if(null!=b&&l.getModel().isEdge(b)){var d=n.graph.selectionCellsHandler.getHandler(b);
-if(d instanceof mxEdgeHandler){for(var c=l.view.translate,e=l.view.scale,k=c.x,c=c.y,b=l.getModel().getParent(b),f=l.getCellGeometry(b);l.getModel().isVertex(b)&&null!=f;)k+=f.x,c+=f.y,b=l.getModel().getParent(b),f=l.getCellGeometry(b);k=Math.round(l.snap(l.popupMenuHandler.triggerX/e-k));e=Math.round(l.snap(l.popupMenuHandler.triggerY/e-c));d.addPointAt(d.state,k,e)}}});this.addAction("removeWaypoint",function(){var b=f.actions.get("removeWaypoint");null!=b.handler&&b.handler.removePoint(b.handler.state,
-b.index)});this.addAction("clearWaypoints",function(b,d){b=null!=d?d:b;var c=l.getSelectionCells();if(null!=c){c=l.getEditableCells(l.addAllEdges(c));l.getModel().beginUpdate();try{for(var g=0;g<c.length;g++){var e=c[g];if(l.getModel().isEdge(e)){var k=l.getCellGeometry(e);null!=d&&mxEvent.isShiftDown(b)?(l.setCellStyles(mxConstants.STYLE_EXIT_X,null,[e]),l.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[e]),l.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[e]),l.setCellStyles(mxConstants.STYLE_ENTRY_Y,
-null,[e])):null!=k&&(k=k.clone(),k.points=null,k.x=0,k.y=0,k.offset=null,l.getModel().setGeometry(e,k))}}}finally{l.getModel().endUpdate()}}},null,null,"Alt+Shift+C");d=this.addAction("subscript",mxUtils.bind(this,function(){l.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");d=this.addAction("superscript",mxUtils.bind(this,function(){l.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");
-this.addAction("image...",function(){if(l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())){var b=mxResources.get("image")+" ("+mxResources.get("url")+"):",d=l.getView().getState(l.getSelectionCell()),c="",k=null;null!=d&&(c=d.style[mxConstants.STYLE_IMAGE]||c,k=d.style[mxConstants.STYLE_CLIP_PATH]||k);var n=l.cellEditor.saveSelection();f.showImageDialog(b,c,function(b,d,c,g,k,f){if(l.cellEditor.isContentEditing())l.cellEditor.restoreSelection(n),l.insertImage(b,d,c);else{var m=l.getSelectionCells();
-if(null!=b&&(0<b.length||0<m.length)){var p=null;l.getModel().beginUpdate();try{if(0==m.length){var m=[l.insertVertex(l.getDefaultParent(),null,"",0,0,d,c,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],v=l.getCenterInsertPoint(l.getBoundingBoxFromGeometry(m,!0));m[0].geometry.x=v.x;m[0].geometry.y=v.y;p=m;l.fireEvent(new mxEventObject("cellsInserted","cells",p))}l.setCellStyles(mxConstants.STYLE_IMAGE,0<b.length?b:null,m);var t=l.getCurrentCellStyle(m[0]);
-"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?l.setCellStyles(mxConstants.STYLE_SHAPE,"image",m):0==b.length&&l.setCellStyles(mxConstants.STYLE_SHAPE,null,m);if(1==l.getSelectionCount()&&null!=d&&null!=c){var u=m[0],y=l.getModel().getGeometry(u);null!=y&&(y=y.clone(),y.width=d,y.height=c,l.getModel().setGeometry(u,y));null!=g?e(u,g,k,f,l):l.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,m)}}finally{l.getModel().endUpdate()}null!=p&&(l.setSelectionCells(p),l.scrollCellToVisible(p[0]))}}},
-l.cellEditor.isContentEditing(),!l.cellEditor.isContentEditing(),!0,k)}}).isEnabled=q;this.addAction("crop...",function(){var b=l.getSelectionCell();if(l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&null!=b){var d=l.getCurrentCellStyle(b),c=d[mxConstants.STYLE_IMAGE],k=d[mxConstants.STYLE_SHAPE];c&&"image"==k&&(d=new CropImageDialog(f,c,d[mxConstants.STYLE_CLIP_PATH],function(d,c,g){e(b,d,c,g,l)}),f.showDialog(d.container,300,380,!0,!0))}}).isEnabled=q;d=this.addAction("layers",mxUtils.bind(this,
-function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(f,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){f.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),this.layersWindow.window.addListener("hide",function(){f.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),f.fireEvent(new mxEventObject("layers")),this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),
+!0)})).isEnabled=q;this.addAction("link...",mxUtils.bind(this,function(){if(l.isEnabled())if(l.cellEditor.isContentEditing()){var b=l.getSelectedElement(),d=l.getParentByName(b,"A",l.cellEditor.textarea),c="";if(null==d&&null!=b&&null!=b.getElementsByTagName)for(var e=b.getElementsByTagName("a"),k=0;k<e.length&&null==d;k++)e[k].textContent==b.textContent&&(d=e[k]);null!=d&&"A"==d.nodeName&&(c=d.getAttribute("href")||"",l.selectNode(d));var n=l.cellEditor.saveSelection();f.showLinkDialog(c,mxResources.get("apply"),
+mxUtils.bind(this,function(b){l.cellEditor.restoreSelection(n);null!=b&&l.insertLink(b)}))}else l.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=q;this.addAction("autosize",function(){var b=l.getSelectionCells();if(null!=b){l.getModel().beginUpdate();try{for(var d=0;d<b.length;d++){var c=b[d];0<l.getModel().getChildCount(c)?l.updateGroupBounds([c],0,!0):l.updateCellSize(c)}}finally{l.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("snapToGrid",
+function(){l.snapCellsToGrid(l.getSelectionCells(),l.gridSize)});this.addAction("formattedText",function(){l.stopEditing();var b=l.getCommonStyle(l.getSelectionCells()),b="1"==mxUtils.getValue(b,"html","0")?null:"1";l.getModel().beginUpdate();try{for(var d=l.getEditableCells(l.getSelectionCells()),c=0;c<d.length;c++)if(state=l.getView().getState(d[c]),null!=state){var e=mxUtils.getValue(state.style,"html","0");if("1"==e&&null==b){var k=l.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,
+"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var n=document.createElement("div");n.innerHTML=l.sanitizeHtml(k);k=mxUtils.extractTextWithWhitespace(n.childNodes);l.cellLabelChanged(state.cell,k);l.setCellStyles("html",b,[d[c]])}else"0"==e&&"1"==b&&(k=mxUtils.htmlEntities(l.convertValueToString(state.cell),!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),l.cellLabelChanged(state.cell,l.sanitizeHtml(k)),l.setCellStyles("html",b,[d[c]]))}f.fireEvent(new mxEventObject("styleChanged",
+"keys",["html"],"values",[null!=b?b:"0"],"cells",d))}finally{l.getModel().endUpdate()}});this.addAction("wordWrap",function(){var b=l.getView().getState(l.getSelectionCell()),d="wrap";l.stopEditing();null!=b&&"wrap"==b.style[mxConstants.STYLE_WHITE_SPACE]&&(d=null);l.setCellStyles(mxConstants.STYLE_WHITE_SPACE,d)});this.addAction("rotation",function(){var b="0",d=l.getView().getState(l.getSelectionCell());null!=d&&(b=d.style[mxConstants.STYLE_ROTATION]||b);b=new FilenameDialog(f,b,mxResources.get("apply"),
+function(b){null!=b&&0<b.length&&l.setCellStyles(mxConstants.STYLE_ROTATION,b)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");f.showDialog(b.container,375,80,!0,!0);b.init()});this.addAction("resetView",function(){l.zoomTo(1);f.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",function(b){l.isFastZoomEnabled()?l.lazyZoom(!0,!0,f.buttonZoomDelay):l.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(b){l.isFastZoomEnabled()?
+l.lazyZoom(!1,!0,f.buttonZoomDelay):l.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var b=l.isSelectionEmpty()?l.getGraphBounds():l.getBoundingBox(l.getSelectionCells()),d=l.view.translate,c=l.view.scale;b.x=b.x/c-d.x;b.y=b.y/c-d.y;b.width/=c;b.height/=c;null!=l.backgroundImage&&(b=mxRectangle.fromRectangle(b),b.add(new mxRectangle(0,0,l.backgroundImage.width,l.backgroundImage.height)));0==b.width||0==b.height?(l.zoomTo(1),f.resetScrollbars()):
+(d=Editor.fitWindowBorders,null!=d&&(b.x-=d.x,b.y-=d.y,b.width+=d.width+d.x,b.height+=d.height+d.y),l.fitWindow(b))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();var b=l.pageFormat,d=l.pageScale;l.zoomTo(Math.floor(20*Math.min((l.container.clientWidth-10)/b.width/d,(l.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(l.container)&&(b=l.getPagePadding(),l.container.scrollTop=b.y*l.view.scale-1,
+l.container.scrollLeft=Math.min(b.x*l.view.scale,(l.container.scrollWidth-l.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();var b=l.pageFormat,d=l.pageScale;l.zoomTo(Math.floor(20*Math.min((l.container.clientWidth-10)/(2*b.width)/d,(l.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(l.container)&&(b=l.getPagePadding(),l.container.scrollTop=Math.min(b.y,(l.container.scrollHeight-
+l.container.clientHeight)/2),l.container.scrollLeft=Math.min(b.x,(l.container.scrollWidth-l.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();l.zoomTo(Math.floor(20*(l.container.clientWidth-10)/l.pageFormat.width/l.pageScale)/20);if(mxUtils.hasScrollbars(l.container)){var b=l.getPagePadding();l.container.scrollLeft=Math.min(b.x*l.view.scale,(l.container.scrollWidth-l.container.clientWidth)/
+2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*l.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&l.zoomTo(b/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,
+parseInt(100*l.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&(b=new ChangePageSetup(f,null,null,null,b/100),b.ignoreColor=!0,b.ignoreImage=!0,l.model.execute(b))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}));var d=null,d=this.addAction("grid",function(){l.setGridEnabled(!l.isGridEnabled());l.defaultGridEnabled=l.isGridEnabled();f.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+
+"+Shift+G");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.isGridEnabled()});d.setEnabled(!1);d=this.addAction("guides",function(){l.graphHandler.guidesEnabled=!l.graphHandler.guidesEnabled;f.fireEvent(new mxEventObject("guidesEnabledChanged"))});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.graphHandler.guidesEnabled});d.setEnabled(!1);d=this.addAction("tooltips",function(){l.tooltipHandler.setEnabled(!l.tooltipHandler.isEnabled());f.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});
+d.setToggleAction(!0);d.setSelectedCallback(function(){return l.tooltipHandler.isEnabled()});d=this.addAction("collapseExpand",function(){var b=new ChangePageSetup(f);b.ignoreColor=!0;b.ignoreImage=!0;b.foldingEnabled=!l.foldingEnabled;l.model.execute(b)});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.foldingEnabled});d.isEnabled=q;d=this.addAction("scrollbars",function(){f.setScrollbars(!f.hasScrollbars())});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.scrollbars});
+d=this.addAction("pageView",mxUtils.bind(this,function(){f.setPageVisible(!l.pageVisible)}));d.setToggleAction(!0);d.setSelectedCallback(function(){return l.pageVisible});d=this.addAction("connectionArrows",function(){l.connectionArrowsEnabled=!l.connectionArrowsEnabled;f.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionArrowsEnabled});d=this.addAction("connectionPoints",function(){l.setConnectable(!l.connectionHandler.isEnabled());
+f.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionHandler.isEnabled()});d=this.addAction("copyConnect",function(){l.connectionHandler.setCreateTarget(!l.connectionHandler.isCreateTarget());f.fireEvent(new mxEventObject("copyConnectChanged"))});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionHandler.isCreateTarget()});d.isEnabled=q;d=this.addAction("autosave",function(){f.editor.setAutosave(!f.editor.autosave)});
+d.setToggleAction(!0);d.setSelectedCallback(function(){return f.editor.autosave});d.isEnabled=q;d.visible=!1;this.addAction("help",function(){var b="";mxResources.isLanguageSupported(mxClient.language)&&(b="_"+mxClient.language);l.openLink(RESOURCES_PATH+"/help"+b+".html")});var k=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){k||(f.showDialog((new AboutDialog(f)).container,320,280,!0,!0,function(){k=!1}),k=!0)}));d=mxUtils.bind(this,function(b,d,c,e){return this.addAction(b,
+function(){if(null!=c&&l.cellEditor.isContentEditing())c();else{l.stopEditing(!1);l.getModel().beginUpdate();try{var b=l.getEditableCells(l.getSelectionCells());l.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,d,b);(d&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?l.updateLabelElements(b,function(b){b.style.fontWeight=null;"B"==b.nodeName&&l.replaceElement(b)}):(d&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?l.updateLabelElements(b,function(b){b.style.fontStyle=null;"I"==b.nodeName&&l.replaceElement(b)}):
+(d&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&l.updateLabelElements(b,function(b){b.style.textDecoration=null;"U"==b.nodeName&&l.replaceElement(b)});for(var g=0;g<b.length;g++)0==l.model.getChildCount(b[g])&&l.autoSizeCell(b[g],!1)}finally{l.getModel().endUpdate()}}},null,null,e)});d("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");d("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");
+d("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){f.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){f.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){f.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){f.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)});
+this.addAction("backgroundColor...",function(){f.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){f.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){f.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,!0)});this.addAction("shadow",function(){f.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,
+null),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("dashed",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,"1"),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,
+mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("dotted",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,"1"),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("sharp",
+function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),l.setCellStyles(mxConstants.STYLE_CURVED,"0"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("rounded",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),l.setCellStyles(mxConstants.STYLE_CURVED,"0"),f.fireEvent(new mxEventObject("styleChanged",
+"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!l.isSelectionEmpty()&&l.isEnabled()){l.getModel().beginUpdate();try{var b=l.getSelectionCells(),d=l.getCurrentCellStyle(b[0]),c="1"==mxUtils.getValue(d,mxConstants.STYLE_ROUNDED,"0")?"0":"1";l.setCellStyles(mxConstants.STYLE_ROUNDED,c);l.setCellStyles(mxConstants.STYLE_CURVED,null);f.fireEvent(new mxEventObject("styleChanged",
+"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[c,"0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}}});this.addAction("curved",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),l.setCellStyles(mxConstants.STYLE_CURVED,"1"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("collapsible",
+function(){var b=l.view.getState(l.getSelectionCell()),d="1";null!=b&&null!=l.getFoldingImage(b)&&(d="0");l.setCellStyles("collapsible",d);f.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[d],"cells",l.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var b=l.getEditableCells(l.getSelectionCells());if(null!=b&&0<b.length){var d=l.getModel(),d=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",d.getStyle(b[0])||"",function(d){null!=
+d&&l.setCellStyle(mxUtils.trim(d),b)},null,null,400,220);this.editorUi.showDialog(d.container,420,300,!0,!0);d.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){l.isEnabled()&&!l.isSelectionEmpty()&&f.setDefaultStyle(l.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){l.isEnabled()&&f.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var b=l.getSelectionCell();
+if(null!=b&&l.getModel().isEdge(b)){var d=n.graph.selectionCellsHandler.getHandler(b);if(d instanceof mxEdgeHandler){for(var c=l.view.translate,e=l.view.scale,k=c.x,c=c.y,b=l.getModel().getParent(b),f=l.getCellGeometry(b);l.getModel().isVertex(b)&&null!=f;)k+=f.x,c+=f.y,b=l.getModel().getParent(b),f=l.getCellGeometry(b);k=Math.round(l.snap(l.popupMenuHandler.triggerX/e-k));e=Math.round(l.snap(l.popupMenuHandler.triggerY/e-c));d.addPointAt(d.state,k,e)}}});this.addAction("removeWaypoint",function(){var b=
+f.actions.get("removeWaypoint");null!=b.handler&&b.handler.removePoint(b.handler.state,b.index)});this.addAction("clearWaypoints",function(b,d){b=null!=d?d:b;var c=l.getSelectionCells();if(null!=c){c=l.getEditableCells(l.addAllEdges(c));l.getModel().beginUpdate();try{for(var g=0;g<c.length;g++){var e=c[g];if(l.getModel().isEdge(e)){var k=l.getCellGeometry(e);null!=d&&mxEvent.isShiftDown(b)?(l.setCellStyles(mxConstants.STYLE_EXIT_X,null,[e]),l.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[e]),l.setCellStyles(mxConstants.STYLE_ENTRY_X,
+null,[e]),l.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[e])):null!=k&&(k=k.clone(),k.points=null,k.x=0,k.y=0,k.offset=null,l.getModel().setGeometry(e,k))}}}finally{l.getModel().endUpdate()}}},null,null,"Alt+Shift+C");d=this.addAction("subscript",mxUtils.bind(this,function(){l.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");d=this.addAction("superscript",mxUtils.bind(this,function(){l.cellEditor.isContentEditing()&&document.execCommand("superscript",
+!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())){var b=mxResources.get("image")+" ("+mxResources.get("url")+"):",d=l.getView().getState(l.getSelectionCell()),c="",k=null;null!=d&&(c=d.style[mxConstants.STYLE_IMAGE]||c,k=d.style[mxConstants.STYLE_CLIP_PATH]||k);var n=l.cellEditor.saveSelection();f.showImageDialog(b,c,function(b,d,c,g,k,f){if(l.cellEditor.isContentEditing())l.cellEditor.restoreSelection(n),l.insertImage(b,
+d,c);else{var m=l.getSelectionCells();if(null!=b&&(0<b.length||0<m.length)){var p=null;l.getModel().beginUpdate();try{if(0==m.length){var m=[l.insertVertex(l.getDefaultParent(),null,"",0,0,d,c,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],v=l.getCenterInsertPoint(l.getBoundingBoxFromGeometry(m,!0));m[0].geometry.x=v.x;m[0].geometry.y=v.y;p=m;l.fireEvent(new mxEventObject("cellsInserted","cells",p))}l.setCellStyles(mxConstants.STYLE_IMAGE,0<b.length?b:null,
+m);var t=l.getCurrentCellStyle(m[0]);"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?l.setCellStyles(mxConstants.STYLE_SHAPE,"image",m):0==b.length&&l.setCellStyles(mxConstants.STYLE_SHAPE,null,m);if(1==l.getSelectionCount()&&null!=d&&null!=c){var u=m[0],y=l.getModel().getGeometry(u);null!=y&&(y=y.clone(),y.width=d,y.height=c,l.getModel().setGeometry(u,y));null!=g?e(u,g,k,f,l):l.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,m)}}finally{l.getModel().endUpdate()}null!=p&&(l.setSelectionCells(p),
+l.scrollCellToVisible(p[0]))}}},l.cellEditor.isContentEditing(),!l.cellEditor.isContentEditing(),!0,k)}}).isEnabled=q;this.addAction("crop...",function(){var b=l.getSelectionCell();if(l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&null!=b){var d=l.getCurrentCellStyle(b),c=d[mxConstants.STYLE_IMAGE],k=d[mxConstants.STYLE_SHAPE];c&&"image"==k&&(d=new CropImageDialog(f,c,d[mxConstants.STYLE_CLIP_PATH],function(d,c,g){e(b,d,c,g,l)}),f.showDialog(d.container,300,380,!0,!0))}}).isEnabled=q;d=this.addAction("layers",
+mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(f,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){f.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),this.layersWindow.window.addListener("hide",function(){f.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),f.fireEvent(new mxEventObject("layers")),this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),
null,null,Editor.ctrlKey+"+Shift+L");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));d=this.addAction("formatPanel",mxUtils.bind(this,function(){f.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return 0<f.formatWidth}));d=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=
new OutlineWindow(f,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){f.fireEvent(new mxEventObject("outline"));this.outlineWindow.window.fit()})),this.outlineWindow.window.addListener("hide",function(){f.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),f.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+
"+Shift+O");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))};Actions.prototype.addAction=function(b,c,e,f,n){var l;"..."==b.substring(b.length-3)?(b=b.substring(0,b.length-3),l=mxResources.get(b)+"..."):l=mxResources.get(b);return this.put(b,new Action(l,c,e,f,n))};Actions.prototype.put=function(b,c){return this.actions[b]=c};Actions.prototype.get=function(b){return this.actions[b]};
@@ -3159,31 +3164,31 @@ IMAGE_PATH+"/img-lo-res.png";Editor.cameraImage="data:image/svg+xml;base64,PHN2Z
Editor.tagsImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE4cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48Zz48cGF0aCBkPSJNMjEuNDEsMTEuNDFsLTguODMtOC44M0MxMi4yMSwyLjIxLDExLjcsMiwxMS4xNywySDRDMi45LDIsMiwyLjksMiw0djcuMTdjMCwwLjUzLDAuMjEsMS4wNCwwLjU5LDEuNDFsOC44Myw4LjgzIGMwLjc4LDAuNzgsMi4wNSwwLjc4LDIuODMsMGw3LjE3LTcuMTdDMjIuMiwxMy40NiwyMi4yLDEyLjIsMjEuNDEsMTEuNDF6IE0xMi44MywyMEw0LDExLjE3VjRoNy4xN0wyMCwxMi44M0wxMi44MywyMHoiLz48Y2lyY2xlIGN4PSI2LjUiIGN5PSI2LjUiIHI9IjEuNSIvPjwvZz48L2c+PC9zdmc+";
Editor.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');Editor.errorImage="data:image/gif;base64,R0lGODlhEAAQAPcAAADGAIQAAISEhP8AAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEAAAAALAAAAAAQABAAAAhoAAEIFBigYMGBCAkGGMCQ4cGECxtKHBAAYUQCEzFSHLiQgMeGHjEGEAAg4oCQJz86LCkxpEqHAkwyRClxpEyXGmGaREmTIsmOL1GO/DkzI0yOE2sKIMlRJsWhCQHENDiUaVSpS5cmDAgAOw==";
Editor.configurationKey=".configuration";Editor.settingsKey=".drawio-config";Editor.defaultCustomLibraries=[];Editor.enableCustomLibraries=!0;Editor.enableCustomProperties=!0;Editor.defaultIncludeDiagram=!0;Editor.enableServiceWorker="0"!=urlParams.pwa&&"serviceWorker"in navigator&&("1"==urlParams.offline||/.*\.diagrams\.net$/.test(window.location.hostname)||/.*\.draw\.io$/.test(window.location.hostname));Editor.enableWebFonts="1"!=urlParams["safe-style-src"];Editor.enableShadowOption=!mxClient.IS_SF;
-Editor.enableExportUrl=!0;Editor.compressXml=!0;Editor.oneDriveInlinePicker=null!=window.urlParams&&"0"==window.urlParams.inlinePicker?!1:!0;Editor.globalVars=null;Editor.config=null;Editor.configVersion=null;Editor.defaultBorder=5;Editor.commonProperties=[{name:"comic",dispName:"Comic",type:"bool",defVal:!1,isVisible:function(b,d){return"1"!=mxUtils.getValue(b.style,"sketch","0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,
-"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"fillWeight",dispName:"Fill Weight",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureGap",dispName:"Hachure Gap",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureAngle",dispName:"Hachure Angle",type:"int",defVal:-41,isVisible:function(b,
-d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"curveFitting",dispName:"Curve Fitting",type:"float",defVal:.95,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"simplification",dispName:"Simplification",type:"float",defVal:0,min:0,max:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStroke",dispName:"Disable Multi Stroke",type:"bool",
-defVal:!1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStrokeFill",dispName:"Disable Multi Stroke Fill",type:"bool",defVal:!1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"dashOffset",dispName:"Dash Offset",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"dashGap",dispName:"Dash Gap",
-type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"zigzagOffset",dispName:"ZigZag Offset",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"sketchStyle",
-dispName:"Sketch Style",type:"enum",defVal:"rough",enumList:[{val:"rough",dispName:"Rough"},{val:"comic",dispName:"Comic"}],isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}}];Editor.commonEdgeProperties=[{type:"separator"},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"sourcePortConstraint",dispName:"Source 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:"targetPortConstraint",dispName:"Target 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:"jettySize",dispName:"Jetty Size",type:"int",min:0,defVal:"auto",allowAuto:!0,isVisible:function(b){return"orthogonalEdgeStyle"==mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,
-null)}},{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"startFill",dispName:"Start Fill",type:"bool",defVal:!0},{name:"endFill",dispName:"End Fill",type:"bool",defVal:!0},{name:"perimeterSpacing",dispName:"Terminal Spacing",type:"float",defVal:0},{name:"anchorPointDirection",dispName:"Anchor Direction",type:"bool",defVal:!0},{name:"snapToPoint",dispName:"Snap to Point",type:"bool",
-defVal:!1},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!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:"bendable",dispName:"Bendable",type:"bool",defVal:!0},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",
-defVal:!0},{name:"noJump",dispName:"No Jumps",type:"bool",defVal:!1},{name:"flowAnimation",dispName:"Flow Animation",type:"bool",defVal:!1},{name:"ignoreEdge",dispName:"Ignore Edge",type:"bool",defVal:!1},{name:"orthogonalLoop",dispName:"Loop Routing",type:"bool",defVal:!1},{name:"orthogonal",dispName:"Orthogonal",type:"bool",defVal:!1}].concat(Editor.commonProperties);Editor.commonVertexProperties=[{name:"colspan",dispName:"Colspan",type:"int",min:1,defVal:1,isVisible:function(b,d){var c=d.editorUi.editor.graph;
-return 1==b.vertices.length&&0==b.edges.length&&c.isTableCell(b.vertices[0])}},{name:"rowspan",dispName:"Rowspan",type:"int",min:1,defVal:1,isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTableCell(b.vertices[0])}},{type:"separator"},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",getDefaultValue:function(b,d){var c=d.editorUi.editor.graph.getCellStyle(1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(c,
-"resizeLastRow","0")},isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTable(b.vertices[0])}},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",getDefaultValue:function(b,d){var c=d.editorUi.editor.graph.getCellStyle(1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(c,"resizeLast","0")},isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTable(b.vertices[0])}},
-{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"overflow",dispName:"Text Overflow",defVal:"visible",type:"enum",enumList:[{val:"visible",dispName:"Visible"},{val:"hidden",dispName:"Hidden"},{val:"block",dispName:"Block"},{val:"fill",dispName:"Fill"},{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(b,d){return d.editorUi.editor.graph.isCellConnectable(0<b.vertices.length&&0==b.edges.length?b.vertices[0]:null)},isVisible:function(b,d){return 0<b.vertices.length&&0==b.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(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:
-null,g=d.editorUi.editor.graph;return null!=c&&(g.isSwimlane(c)||0<g.model.getChildCount(c))},isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null,g=d.editorUi.editor.graph;return null!=c&&(g.isContainer(c)&&"0"!=b.style.collapsible||!g.isContainer(c)&&"1"==b.style.collapsible)},isVisible:function(b,d){return 1==b.vertices.length&&
-0==b.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length&&!d.editorUi.editor.graph.isSwimlane(b.vertices[0])&&null==mxUtils.getValue(b.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(b,d){var c=d.editorUi.editor.graph.model;return 0<b.vertices.length?c.isVertex(c.getParent(b.vertices[0])):
-!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"enumerate",dispName:"Enumerate",type:"bool",defVal:!1,onChange:function(b){b.refresh()}},{name:"enumerateValue",dispName:"Enumerate Value",type:"string",defVal:"",isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"enumerate","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(b,d){var c=0<b.vertices.length?d.editorUi.editor.graph.getCellGeometry(b.vertices[0]):null;return null!=c&&!c.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(b,d){var c=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null);return d.editorUi.editor.graph.isSwimlane(b.vertices[0])||null==c||c==mxConstants.NONE||0==mxUtils.getValue(b.style,mxConstants.STYLE_FILL_OPACITY,
-100)||0==mxUtils.getValue(b.style,mxConstants.STYLE_OPACITY,100)||null!=b.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(b,d){return 0<b.vertices.length&&d.editorUi.editor.graph.isContainer(b.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## 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## 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 or a JSON string as used in Layout, Apply.\n## 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(b){var d=rough.canvas({getContext:function(){return b}});d.draw=function(d){var c=d.sets||[];d=d.options||this.getDefaultOptions();for(var g=0;g<c.length;g++){var e=c[g];switch(e.type){case "path":null!=d.stroke&&this._drawToContext(b,e,d);break;case "fillPath":this._drawToContext(b,e,d);break;case "fillSketch":this.fillSketch(b,e,d)}}};d.fillSketch=function(d,c,g){var e=b.state.strokeColor,k=b.state.strokeWidth,f=b.state.strokeAlpha,m=b.state.dashed,l=g.fillWeight;
-0>l&&(l=g.strokeWidth/2);b.setStrokeAlpha(b.state.fillAlpha);b.setStrokeColor(g.fill||"");b.setStrokeWidth(l);b.setDashed(!1);this._drawToContext(d,c,g);b.setDashed(m);b.setStrokeWidth(k);b.setStrokeColor(e);b.setStrokeAlpha(f)};d._drawToContext=function(b,d,c){b.begin();for(var g=0;g<d.ops.length;g++){var e=d.ops[g],k=e.data;switch(e.op){case "move":b.moveTo(k[0],k[1]);break;case "bcurveTo":b.curveTo(k[0],k[1],k[2],k[3],k[4],k[5]);break;case "lineTo":b.lineTo(k[0],k[1])}}b.end();"fillPath"===d.type&&
+Editor.enableExportUrl=!0;Editor.compressXml=!0;Editor.oneDriveInlinePicker=null!=window.urlParams&&"0"==window.urlParams.inlinePicker?!1:!0;Editor.globalVars=null;Editor.config=null;Editor.configVersion=null;Editor.defaultBorder=5;Editor.commonProperties=[{name:"enumerate",dispName:"Enumerate",type:"bool",defVal:!1,onChange:function(b){b.refresh()}},{name:"enumerateValue",dispName:"Enumerate Value",type:"string",defVal:"",isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"enumerate","0")}},
+{name:"comic",dispName:"Comic",type:"bool",defVal:!1,isVisible:function(b,d){return"1"!=mxUtils.getValue(b.style,"sketch","0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"fillWeight",dispName:"Fill Weight",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureGap",
+dispName:"Hachure Gap",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureAngle",dispName:"Hachure Angle",type:"int",defVal:-41,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"curveFitting",dispName:"Curve Fitting",type:"float",defVal:.95,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"simplification",
+dispName:"Simplification",type:"float",defVal:0,min:0,max:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStroke",dispName:"Disable Multi Stroke",type:"bool",defVal:!1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStrokeFill",dispName:"Disable Multi Stroke Fill",type:"bool",defVal:!1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch",
+"1"==urlParams.rough?"1":"0")}},{name:"dashOffset",dispName:"Dash Offset",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"dashGap",dispName:"Dash Gap",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"zigzagOffset",dispName:"ZigZag Offset",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?
+"1":"0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"sketchStyle",dispName:"Sketch Style",type:"enum",defVal:"rough",enumList:[{val:"rough",dispName:"Rough"},{val:"comic",dispName:"Comic"}],isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}}];Editor.commonEdgeProperties=[{type:"separator"},
+{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"sourcePortConstraint",dispName:"Source 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:"targetPortConstraint",dispName:"Target 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:"jettySize",dispName:"Jetty Size",type:"int",min:0,defVal:"auto",allowAuto:!0,isVisible:function(b){return"orthogonalEdgeStyle"==mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,null)}},{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"startFill",dispName:"Start Fill",type:"bool",defVal:!0},{name:"endFill",dispName:"End Fill",
+type:"bool",defVal:!0},{name:"perimeterSpacing",dispName:"Terminal Spacing",type:"float",defVal:0},{name:"anchorPointDirection",dispName:"Anchor Direction",type:"bool",defVal:!0},{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!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:"bendable",dispName:"Bendable",type:"bool",defVal:!0},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"noJump",dispName:"No Jumps",type:"bool",defVal:!1},{name:"flowAnimation",dispName:"Flow Animation",type:"bool",defVal:!1},{name:"ignoreEdge",dispName:"Ignore Edge",type:"bool",defVal:!1},{name:"orthogonalLoop",dispName:"Loop Routing",type:"bool",defVal:!1},
+{name:"orthogonal",dispName:"Orthogonal",type:"bool",defVal:!1}].concat(Editor.commonProperties);Editor.commonVertexProperties=[{name:"colspan",dispName:"Colspan",type:"int",min:1,defVal:1,isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTableCell(b.vertices[0])}},{name:"rowspan",dispName:"Rowspan",type:"int",min:1,defVal:1,isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTableCell(b.vertices[0])}},
+{type:"separator"},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",getDefaultValue:function(b,d){var c=d.editorUi.editor.graph.getCellStyle(1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(c,"resizeLastRow","0")},isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTable(b.vertices[0])}},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",getDefaultValue:function(b,d){var c=d.editorUi.editor.graph.getCellStyle(1==
+b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(c,"resizeLast","0")},isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTable(b.vertices[0])}},{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"overflow",dispName:"Text Overflow",defVal:"visible",type:"enum",enumList:[{val:"visible",dispName:"Visible"},
+{val:"hidden",dispName:"Hidden"},{val:"block",dispName:"Block"},{val:"fill",dispName:"Fill"},{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(b,d){return d.editorUi.editor.graph.isCellConnectable(0<b.vertices.length&&0==b.edges.length?b.vertices[0]:null)},isVisible:function(b,d){return 0<b.vertices.length&&
+0==b.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(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null,g=d.editorUi.editor.graph;return null!=c&&(g.isSwimlane(c)||0<g.model.getChildCount(c))},isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&
+0==b.edges.length?b.vertices[0]:null,g=d.editorUi.editor.graph;return null!=c&&(g.isContainer(c)&&"0"!=b.style.collapsible||!g.isContainer(c)&&"1"==b.style.collapsible)},isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length&&!d.editorUi.editor.graph.isSwimlane(b.vertices[0])&&null==mxUtils.getValue(b.style,"childLayout",null)}},{name:"expand",
+dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(b,d){var c=d.editorUi.editor.graph.model;return 0<b.vertices.length?c.isVertex(c.getParent(b.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(b,d){var c=0<b.vertices.length?d.editorUi.editor.graph.getCellGeometry(b.vertices[0]):null;return null!=c&&!c.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(b,d){var c=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null);return d.editorUi.editor.graph.isSwimlane(b.vertices[0])||null==c||c==mxConstants.NONE||0==mxUtils.getValue(b.style,mxConstants.STYLE_FILL_OPACITY,100)||
+0==mxUtils.getValue(b.style,mxConstants.STYLE_OPACITY,100)||null!=b.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(b,d){return 0<b.vertices.length&&d.editorUi.editor.graph.isContainer(b.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## 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## 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 or a JSON string as used in Layout, Apply.\n## 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(b){var d=rough.canvas({getContext:function(){return b}});d.draw=function(d){var c=d.sets||[];d=d.options||this.getDefaultOptions();for(var g=0;g<c.length;g++){var e=c[g];switch(e.type){case "path":null!=d.stroke&&this._drawToContext(b,e,d);break;case "fillPath":this._drawToContext(b,e,d);break;case "fillSketch":this.fillSketch(b,e,d)}}};d.fillSketch=function(d,c,g){var e=b.state.strokeColor,k=b.state.strokeWidth,f=b.state.strokeAlpha,l=b.state.dashed,m=g.fillWeight;
+0>m&&(m=g.strokeWidth/2);b.setStrokeAlpha(b.state.fillAlpha);b.setStrokeColor(g.fill||"");b.setStrokeWidth(m);b.setDashed(!1);this._drawToContext(d,c,g);b.setDashed(l);b.setStrokeWidth(k);b.setStrokeColor(e);b.setStrokeAlpha(f)};d._drawToContext=function(b,d,c){b.begin();for(var g=0;g<d.ops.length;g++){var e=d.ops[g],k=e.data;switch(e.op){case "move":b.moveTo(k[0],k[1]);break;case "bcurveTo":b.curveTo(k[0],k[1],k[2],k[3],k[4],k[5]);break;case "lineTo":b.lineTo(k[0],k[1])}}b.end();"fillPath"===d.type&&
c.filled?b.fill():b.stroke()};return d};(function(){function b(d,c,g){this.canvas=d;this.rc=c;this.shape=g;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,b.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,b.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,b.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
mxUtils.bind(this,b.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,b.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,b.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,b.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,b.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
b.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,b.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,b.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,b.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,b.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,b.prototype.fillAndStroke);
@@ -3223,7 +3228,7 @@ null!=d.parentNode){var c=document.createElement("style");c.setAttribute("type",
null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(d){d=null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var c=d.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],g=c.getElementsByTagName("div");null!=g&&0<g.length&&(c=g[0]);throw{message:mxUtils.getTextContent(c)};}if("mxGraphModel"==d.nodeName){c=d.getAttribute("style")||
"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),null!=g&&(e=new mxCodec(g.ownerDocument),e.decode(g,this.graph.getStylesheet())));else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var e=new mxCodec(g.ownerDocument);e.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=
c;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");c=d.getAttribute("backgroundImage");null!=c?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(c)):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),
-!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),g=0;g<c.length;g++)this.graph.addExtFont(c[g].name,c[g].url)}catch(ca){console.log("ExtFonts format error: "+ca.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=
+!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),g=0;g<c.length;g++)this.graph.addExtFont(c[g].name,c[g].url)}catch(da){console.log("ExtFonts format error: "+da.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=
function(b,d){b=null!=b?b:!0;var g=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&g.setAttribute("style",this.graph.currentStyle);var e=this.graph.getBackgroundImageObject(this.graph.backgroundImage,d);null!=e&&g.setAttribute("backgroundImage",JSON.stringify(e));g.setAttribute("math",this.graph.mathEnabled?"1":"0");g.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(e=this.graph.extFonts.map(function(b){return b.name+
"^"+b.url}),g.setAttribute("extFonts",e.join("|")));return g};Editor.prototype.isDataSvg=function(b){try{var d=mxUtils.parseXml(b).documentElement.getAttribute("content");if(null!=d&&(null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var c=mxUtils.parseXml(d).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(W){}return!1};Editor.prototype.extractGraphModel=
function(b,d,c){return Editor.extractGraphModel.apply(this,arguments)};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};
@@ -3231,17 +3236,17 @@ var f=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphCompone
Editor.initMath=function(b,d){if("undefined"===typeof window.MathJax){b=(null!=b?b:DRAW_MATH_URL+"/MathJax.js")+"?config=TeX-MML-AM_"+("html"==urlParams["math-output"]?"HTMLorMML":"SVG")+"-full";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(b){window.setTimeout(function(){"hidden"!=b.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,b])},0)};var c=null!=urlParams["math-font"]?decodeURIComponent(urlParams["math-font"]):"TeX";d=null!=d?d:{"HTML-CSS":{availableFonts:[c],imageFont:null},
SVG:{font:c,useFontCache:!1},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(d);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};
Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var g=Editor.prototype.init;Editor.prototype.init=function(){g.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,d){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var e=document.createElement("script");e.setAttribute("type","text/javascript");e.setAttribute("src",
-b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var k=document.createElement("style");k.type="text/css";k.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(k)}}catch(da){}}};Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;
+b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var k=document.createElement("style");k.type="text/css";k.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(k)}}catch(ea){}}};Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;
var d=[];b.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(b,c,g,e){void 0!==c?d.push(c.replace(/\\'/g,"'")):void 0!==g?d.push(g.replace(/\\"/g,'"')):void 0!==e&&d.push(e);return""});/,\s*$/.test(b)&&d.push("");return d};Editor.prototype.isCorsEnabledForUrl=function(b){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||b.substring(0,window.location.origin.length)==window.location.origin)return!0;null!=urlParams.cors&&
null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(b)||"https://raw.githubusercontent.com/"===b.substring(0,34)};Editor.prototype.createImageUrlConverter=function(){var b=new mxUrlConverter;b.updateBaseUrl();var d=b.convert,c=this;b.convert=function(g){if(null!=g){var e="http://"==g.substring(0,7)||"https://"==g.substring(0,8);e&&!navigator.onLine?g=Editor.svgBrokenImage.src:!e||g.substring(0,b.baseUrl.length)==
b.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(g)?"chrome-extension://"==g.substring(0,19)||mxClient.IS_CHROMEAPP||(g=d.apply(this,arguments)):g=PROXY_URL+"?url="+encodeURIComponent(g)}return g};return b};Editor.createSvgDataUri=function(b){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(b)))};Editor.prototype.convertImageToDataUri=function(b,d){try{var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;d(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(b))mxUtils.get(b,
mxUtils.bind(this,function(b){window.clearTimeout(g);c&&d(Editor.createSvgDataUri(b.getText()))}),function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)});else{var e=new Image;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(g);if(c)try{var b=document.createElement("canvas"),k=b.getContext("2d");b.height=e.height;b.width=e.width;k.drawImage(e,0,0);d(b.toDataURL())}catch(ta){d(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(g);
c&&d(Editor.svgBrokenImage.src)};e.src=b}}catch(aa){d(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,d,c,g){null==g&&(g=this.createImageUrlConverter());var e=0,k=c||{};c=mxUtils.bind(this,function(c,f){for(var m=b.getElementsByTagName(c),l=0;l<m.length;l++)mxUtils.bind(this,function(c){try{if(null!=c){var m=g.convert(c.getAttribute(f));if(null!=m&&"data:"!=m.substring(0,5)){var l=k[m];null==l?(e++,this.convertImageToDataUri(m,function(g){null!=g&&(k[m]=g,c.setAttribute(f,g));
-e--;0==e&&d(b)})):c.setAttribute(f,l)}else null!=m&&c.setAttribute(f,m)}}catch(ea){}})(m[l])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,g=b.length,e,k,f;c<g;){e=b.charCodeAt(c++)&255;if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);d+="==";break}k=b.charCodeAt(c++);if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
+e--;0==e&&d(b)})):c.setAttribute(f,l)}else null!=m&&c.setAttribute(f,m)}}catch(fa){}})(m[l])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,g=b.length,e,k,f;c<g;){e=b.charCodeAt(c++)&255;if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);d+="==";break}k=b.charCodeAt(c++);if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);d+="=";break}f=b.charCodeAt(c++);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(f&192)>>6);
d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f&63)}return d};Editor.prototype.loadUrl=function(b,d,c,g,e,k,f,m){try{var l=!f&&(g||/(\.png)($|\?)/i.test(b)||/(\.jpe?g)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.pdf)($|\?)/i.test(b));e=null!=e?e:!0;var p=mxUtils.bind(this,function(){mxUtils.get(b,mxUtils.bind(this,function(b){if(200<=b.getStatus()&&299>=b.getStatus()){if(null!=d){var g=b.getText();if(l){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==
typeof window.mxUtilsBinaryToArray){b=mxUtilsBinaryToArray(b.request.responseBody).toArray();for(var g=Array(b.length),e=0;e<b.length;e++)g[e]=String.fromCharCode(b[e]);g=g.join("")}k=null!=k?k:"data:image/png;base64,";g=k+Editor.base64Encode(g)}d(g)}}else null!=c&&(0==b.getStatus()?c({message:mxResources.get("accessDenied")},b):c({message:mxResources.get("error")+" "+b.getStatus()},b))}),function(b){null!=c&&c({message:mxResources.get("error")+" "+b.getStatus()})},l,this.timeout,function(){e&&null!=
-c&&c({code:App.ERROR_TIMEOUT,retry:p})},m)});p()}catch(na){null!=c&&c(na)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var g=null!=b?b.lastIndexOf("/"):-1;0<=g&&(b=b.substring(0,g+1));var g=document.getElementsByTagName("base"),e=null;null!=g&&0<g.length&&(e=g[0].getAttribute("href"));for(var k=1;k<c.length;k++)if(g=c[k].indexOf(")"),0<g){var f=Editor.trimCssUrl(c[k].substring(0,g));this.graph.isRelativeUrl(f)&&
+c&&c({code:App.ERROR_TIMEOUT,retry:p})},m)});p()}catch(oa){null!=c&&c(oa)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var g=null!=b?b.lastIndexOf("/"):-1;0<=g&&(b=b.substring(0,g+1));var g=document.getElementsByTagName("base"),e=null;null!=g&&0<g.length&&(e=g[0].getAttribute("href"));for(var k=1;k<c.length;k++)if(g=c[k].indexOf(")"),0<g){var f=Editor.trimCssUrl(c[k].substring(0,g));this.graph.isRelativeUrl(f)&&
(f=null!=e?e+f:window.location.protocol+"//"+window.location.hostname+("/"==f.charAt(0)?"":b)+f);d.push('url("'+f+'"'+c[k].substring(g))}else d.push(c[k])}else d=[b]}return null!=d?d.join(""):null};Editor.prototype.embedCssFonts=function(b,d){var c=b.split("url("),g=0;null==this.cachedFonts&&(this.cachedFonts={});var e=mxUtils.bind(this,function(){if(0==g){for(var b=[c[0]],e=1;e<c.length;e++){var k=c[e].indexOf(")");b.push('url("');b.push(this.cachedFonts[Editor.trimCssUrl(c[e].substring(0,k))]);
b.push('"'+c[e].substring(k))}d(b.join(""))}});if(0<c.length){for(var k=1;k<c.length;k++){var f=c[k].indexOf(")"),m=null,l=c[k].indexOf("format(",f);0<l&&(m=Editor.trimCssUrl(c[k].substring(l+7,c[k].indexOf(")",l))));mxUtils.bind(this,function(b){if(null==this.cachedFonts[b]){this.cachedFonts[b]=b;g++;var d="application/x-font-ttf";if("svg"==m||/(\.svg)($|\?)/i.test(b))d="image/svg+xml";else if("otf"==m||"embedded-opentype"==m||/(\.otf)($|\?)/i.test(b))d="application/x-font-opentype";else if("woff"==
m||/(\.woff)($|\?)/i.test(b))d="application/font-woff";else if("woff2"==m||/(\.woff2)($|\?)/i.test(b))d="application/font-woff2";else if("eot"==m||/(\.eot)($|\?)/i.test(b))d="application/vnd.ms-fontobject";else if("sfnt"==m||/(\.sfnt)($|\?)/i.test(b))d="application/font-sfnt";var c=b;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(b));this.loadUrl(c,mxUtils.bind(this,function(d){this.cachedFonts[b]=d;g--;e()}),mxUtils.bind(this,function(b){g--;e()}),!0,
@@ -3249,10 +3254,10 @@ null,"data:"+d+";charset=utf-8;base64,")}})(Editor.trimCssUrl(c[k].substring(0,f
g&&this.embedCssFonts(c,b)}),k=0;k<d.length;k++)mxUtils.bind(this,function(b,d){Graph.isCssFontUrl(d)?null==this.cachedGoogleFonts[d]?(g++,this.loadUrl(d,mxUtils.bind(this,function(b){this.cachedGoogleFonts[d]=b;c+=b;g--;e()}),mxUtils.bind(this,function(b){g--;c+="@import url("+d+");";e()}))):c+=this.cachedGoogleFonts[d]:c+='@font-face {font-family: "'+b+'";src: url("'+d+'")}'})(d[k].name,d[k].url);e()}else b()};Editor.prototype.addMathCss=function(b){b=b.getElementsByTagName("defs");if(null!=b&&
0<b.length)for(var d=document.getElementsByTagName("style"),c=0;c<d.length;c++){var g=mxUtils.getTextContent(d[c]);0>g.indexOf("mxPageSelector")&&0<g.indexOf("MathJax")&&b[0].appendChild(d[c].cloneNode(!0))}};Editor.prototype.addFontCss=function(b,d){d=null!=d?d:this.absoluteCssFonts(this.fontCss);if(null!=d){var c=b.getElementsByTagName("defs"),g=b.ownerDocument;0==c.length?(c=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"defs"):g.createElement("defs"),null!=b.firstChild?b.insertBefore(c,
b.firstChild):b.appendChild(c)):c=c[0];g=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"style"):g.createElement("style");g.setAttribute("type","text/css");mxUtils.setTextContent(g,d);c.appendChild(g)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,d,c){var g=mxClient.IS_FF?8192:16384;return Math.min(c,Math.min(g/b,g/d))};Editor.prototype.exportToCanvas=function(b,d,c,g,e,k,f,m,l,p,v,
-t,n,u,y,z,q,A){try{k=null!=k?k:!0;f=null!=f?f:!0;t=null!=t?t:this.graph;n=null!=n?n:0;var x=l?null:t.background;x==mxConstants.NONE&&(x=null);null==x&&(x=g);null==x&&0==l&&(x=z?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(t.getSvg(null,null,n,u,null,f,null,null,null,p,null,z,q,A),mxUtils.bind(this,function(c){try{var g=new Image;g.onload=mxUtils.bind(this,function(){try{var f=function(){mxClient.IS_SF?window.setTimeout(function(){u.drawImage(g,0,0);b(l,c)},0):(u.drawImage(g,
-0,0),b(l,c))},l=document.createElement("canvas"),p=parseInt(c.getAttribute("width")),v=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=d&&(m=k?Math.min(1,Math.min(3*d/(4*v),d/p)):d/p);m=this.getMaxCanvasScale(p,v,m);p=Math.ceil(m*p);v=Math.ceil(m*v);l.setAttribute("width",p);l.setAttribute("height",v);var u=l.getContext("2d");null!=x&&(u.beginPath(),u.rect(0,0,p,v),u.fillStyle=x,u.fill());1!=m&&u.scale(m,m);if(y){var z=t.view,q=z.scale;z.scale=1;var A=btoa(unescape(encodeURIComponent(z.createSvgGrid(z.gridColor))));
-z.scale=q;var A="data:image/svg+xml;base64,"+A,C=t.gridSize*z.gridSteps*m,K=t.getGraphBounds(),J=z.translate.x*q,da=z.translate.y*q,G=J+(K.x-J)/q-n,O=da+(K.y-da)/q-n,M=new Image;M.onload=function(){try{for(var b=-Math.round(C-mxUtils.mod((J-G)*m,C)),d=-Math.round(C-mxUtils.mod((da-O)*m,C));b<p;b+=C)for(var c=d;c<v;c+=C)u.drawImage(M,b/m,c/m);f()}catch(Fa){null!=e&&e(Fa)}};M.onerror=function(b){null!=e&&e(b)};M.src=A}else f()}catch(za){null!=e&&e(za)}});g.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(c);
-this.graph.mathEnabled&&this.addMathCss(c);var f=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,this.resolvedFontCss),g.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(ha){null!=e&&e(ha)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(f)}catch(pa){null!=e&&e(pa)}}))}catch(ha){null!=e&&e(ha)}}),c,v)}catch(qa){null!=e&&e(qa)}};Editor.crcTable=[];for(var n=0;256>n;n++)for(var l=n,q=0;8>q;q++)l=1==(l&1)?3988292384^
+n,t,u,y,z,q,A){try{k=null!=k?k:!0;f=null!=f?f:!0;n=null!=n?n:this.graph;t=null!=t?t:0;var x=l?null:n.background;x==mxConstants.NONE&&(x=null);null==x&&(x=g);null==x&&0==l&&(x=z?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(n.getSvg(null,null,t,u,null,f,null,null,null,p,null,z,q,A),mxUtils.bind(this,function(c){try{var g=new Image;g.onload=mxUtils.bind(this,function(){try{var f=function(){mxClient.IS_SF?window.setTimeout(function(){u.drawImage(g,0,0);b(l,c)},0):(u.drawImage(g,
+0,0),b(l,c))},l=document.createElement("canvas"),p=parseInt(c.getAttribute("width")),v=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=d&&(m=k?Math.min(1,Math.min(3*d/(4*v),d/p)):d/p);m=this.getMaxCanvasScale(p,v,m);p=Math.ceil(m*p);v=Math.ceil(m*v);l.setAttribute("width",p);l.setAttribute("height",v);var u=l.getContext("2d");null!=x&&(u.beginPath(),u.rect(0,0,p,v),u.fillStyle=x,u.fill());1!=m&&u.scale(m,m);if(y){var z=n.view,q=z.scale;z.scale=1;var A=btoa(unescape(encodeURIComponent(z.createSvgGrid(z.gridColor))));
+z.scale=q;var A="data:image/svg+xml;base64,"+A,C=n.gridSize*z.gridSteps*m,K=n.getGraphBounds(),J=z.translate.x*q,ea=z.translate.y*q,G=J+(K.x-J)/q-t,O=ea+(K.y-ea)/q-t,M=new Image;M.onload=function(){try{for(var b=-Math.round(C-mxUtils.mod((J-G)*m,C)),d=-Math.round(C-mxUtils.mod((ea-O)*m,C));b<p;b+=C)for(var c=d;c<v;c+=C)u.drawImage(M,b/m,c/m);f()}catch(Fa){null!=e&&e(Fa)}};M.onerror=function(b){null!=e&&e(b)};M.src=A}else f()}catch(za){null!=e&&e(za)}});g.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(c);
+this.graph.mathEnabled&&this.addMathCss(c);var f=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,this.resolvedFontCss),g.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(ba){null!=e&&e(ba)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(f)}catch(ma){null!=e&&e(ma)}}))}catch(ba){null!=e&&e(ba)}}),c,v)}catch(qa){null!=e&&e(qa)}};Editor.crcTable=[];for(var n=0;256>n;n++)for(var l=n,q=0;8>q;q++)l=1==(l&1)?3988292384^
l>>>1:l>>>1,Editor.crcTable[n]=l;Editor.updateCRC=function(b,d,c,g){for(var e=0;e<g;e++)b=Editor.crcTable[(b^d.charCodeAt(c+e))&255]^b>>>8;return b};Editor.crc32=function(b){for(var d=-1,c=0;c<b.length;c++)d=d>>>8^Editor.crcTable[(d^b.charCodeAt(c))&255];return(d^-1)>>>0};Editor.writeGraphModelToPng=function(b,d,c,g,e){function k(b,d){var c=l;l+=d;return b.substring(c,l)}function f(b){b=k(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function m(b){return String.fromCharCode(b>>
24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,!0);var l=0;if(k(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(k(b,4),"IHDR"!=k(b,4))null!=e&&e();else{k(b,17);e=b.substring(0,l);do{var p=f(b);if("IDAT"==k(b,4)){e=b.substring(0,l-8);"pHYs"==d&&"dpi"==c?(c=Math.round(g/.0254),c=m(c)+m(c)+String.fromCharCode(1)):c=c+String.fromCharCode(0)+("zTXt"==d?String.fromCharCode(0):"")+g;g=4294967295;g=Editor.updateCRC(g,
d,0,4);g=Editor.updateCRC(g,c,0,c.length);e+=m(c.length)+d+c+m(g^4294967295);e+=b.substring(l-8,b.length);break}e+=b.substring(l-8,l-4+p);k(b,p);k(b,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(b,c){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};
@@ -3287,34 +3292,34 @@ font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#
function(b,d,c){if(null!=d){var g=function(b){if(null!=b)if(c)for(var g=0;g<b.length;g++)d[b[g].name]=b[g];else for(var e in d){for(var k=!1,g=0;g<b.length;g++)if(b[g].name==e&&b[g].type==d[e].type){k=!0;break}k||delete d[e]}},e=this.editorUi.editor.graph.view.getState(b);null!=e&&null!=e.shape&&(e.shape.commonCustomPropAdded||(e.shape.commonCustomPropAdded=!0,e.shape.customProperties=e.shape.customProperties||[],e.cell.vertex?Array.prototype.push.apply(e.shape.customProperties,Editor.commonVertexProperties):
Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),g(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{g(JSON.parse(b))}catch(aa){}}};var u=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.editorUi.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));u.apply(this,arguments);if(Editor.enableCustomProperties){for(var d=
{},c=b.vertices,g=b.edges,e=0;e<c.length;e++)this.findCommonProperties(c[e],d,0==e);for(e=0;e<g.length;e++)this.findCommonProperties(g[e],d,0==c.length&&0==e);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(d).length&&this.container.appendChild(this.addProperties(this.createPanel(),d,b))}};var t=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(b){this.addActions(b,["copyStyle","pasteStyle"]);return t.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=
-!0;StyleFormatPanel.prototype.addProperties=function(b,d,c){function g(b,d,c,g){t.getModel().beginUpdate();try{var e=[],k=[];if(null!=c.index){for(var f=[],m=c.parentRow.nextSibling;m&&m.getAttribute("data-pName")==b;)f.push(m.getAttribute("data-pValue")),m=m.nextSibling;c.index<f.length?null!=g?f.splice(g,1):f[c.index]=d:f.push(d);null!=c.size&&f.length>c.size&&(f=f.slice(0,c.size));d=f.join(",");null!=c.countProperty&&(t.setCellStyles(c.countProperty,f.length,t.getSelectionCells()),e.push(c.countProperty),
-k.push(f.length))}t.setCellStyles(b,d,t.getSelectionCells());e.push(b);k.push(d);if(null!=c.dependentProps)for(b=0;b<c.dependentProps.length;b++){var l=c.dependentPropsDefVal[b],p=c.dependentPropsVals[b];if(p.length>d)p=p.slice(0,d);else for(var x=p.length;x<d;x++)p.push(l);p=p.join(",");t.setCellStyles(c.dependentProps[b],p,t.getSelectionCells());e.push(c.dependentProps[b]);k.push(p)}if("function"==typeof c.onChange)c.onChange(t,d);v.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",
-k,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}function e(d,c,g){var e=mxUtils.getOffset(b,!0),k=mxUtils.getOffset(d,!0);c.style.position="absolute";c.style.left=k.x-e.x+"px";c.style.top=k.y-e.y+"px";c.style.width=d.offsetWidth+"px";c.style.height=d.offsetHeight-(g?4:0)+"px";c.style.zIndex=5}function k(b,d,c){var e=document.createElement("div");e.style.width="32px";e.style.height="4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=d&&"none"!=d?d:"url('"+
-Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(v,function(k){this.editorUi.pickColor(d,function(d){e.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;g(b,d,c)});mxEvent.consume(k)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function f(b,d,c,e,k,f,m){null!=d&&(d=d.split(","),u.push({name:b,values:d,type:c,defVal:e,countProperty:k,parentRow:f,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",
-mxUtils.bind(v,function(d){for(var l=f,v=0;null!=l.nextSibling;)if(l.nextSibling.getAttribute("data-pName")==b)l=l.nextSibling,v++;else break;var x={type:c,parentRow:f,index:v,isDeletable:!0,defVal:e,countProperty:k},v=p(b,"",x,0==v%2,m);g(b,e,x);l.parentNode.insertBefore(v,l.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function m(b,d,c,g,e,k,f){if(0<e){var m=Array(e);d=null!=d?d.split(","):[];for(var l=0;l<e;l++)m[l]=null!=
-d[l]?d[l]:null!=g?g:"";u.push({name:b,values:m,type:c,defVal:g,parentRow:k,flipBkg:f,size:e})}return document.createElement("div")}function l(b,d,c){var e=document.createElement("input");e.type="checkbox";e.checked="1"==d;mxEvent.addListener(e,"change",function(){g(b,e.checked?"1":"0",c)});return e}function p(d,c,p,x,t){var n=p.dispName,u=p.type,y=document.createElement("tr");y.className="gePropRow"+(t?"Dark":"")+(x?"Alt":"")+" gePropNonHeaderRow";y.setAttribute("data-pName",d);y.setAttribute("data-pValue",
-c);x=!1;null!=p.index&&(y.setAttribute("data-index",p.index),n=(null!=n?n:"")+"["+p.index+"]",x=!0);var z=document.createElement("td");z.className="gePropRowCell";n=mxResources.get(n,null,n);mxUtils.write(z,n);z.setAttribute("title",n);x&&(z.style.textAlign="right");y.appendChild(z);z=document.createElement("td");z.className="gePropRowCell";if("color"==u)z.appendChild(k(d,c,p));else if("bool"==u||"boolean"==u)z.appendChild(l(d,c,p));else if("enum"==u){var q=p.enumList;for(t=0;t<q.length;t++)if(n=
-q[t],n.val==c){mxUtils.write(z,mxResources.get(n.dispName,null,n.dispName));break}mxEvent.addListener(z,"click",mxUtils.bind(v,function(){var k=document.createElement("select");e(z,k);for(var f=0;f<q.length;f++){var m=q[f],l=document.createElement("option");l.value=mxUtils.htmlEntities(m.val);mxUtils.write(l,mxResources.get(m.dispName,null,m.dispName));k.appendChild(l)}k.value=c;b.appendChild(k);mxEvent.addListener(k,"change",function(){var b=mxUtils.htmlEntities(k.value);g(d,b,p)});k.focus();mxEvent.addListener(k,
+!0;StyleFormatPanel.prototype.addProperties=function(b,d,c){function g(b,d,c,g){n.getModel().beginUpdate();try{var e=[],k=[];if(null!=c.index){for(var f=[],m=c.parentRow.nextSibling;m&&m.getAttribute("data-pName")==b;)f.push(m.getAttribute("data-pValue")),m=m.nextSibling;c.index<f.length?null!=g?f.splice(g,1):f[c.index]=d:f.push(d);null!=c.size&&f.length>c.size&&(f=f.slice(0,c.size));d=f.join(",");null!=c.countProperty&&(n.setCellStyles(c.countProperty,f.length,n.getSelectionCells()),e.push(c.countProperty),
+k.push(f.length))}n.setCellStyles(b,d,n.getSelectionCells());e.push(b);k.push(d);if(null!=c.dependentProps)for(b=0;b<c.dependentProps.length;b++){var l=c.dependentPropsDefVal[b],p=c.dependentPropsVals[b];if(p.length>d)p=p.slice(0,d);else for(var t=p.length;t<d;t++)p.push(l);p=p.join(",");n.setCellStyles(c.dependentProps[b],p,n.getSelectionCells());e.push(c.dependentProps[b]);k.push(p)}if("function"==typeof c.onChange)c.onChange(n,d);v.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",
+k,"cells",n.getSelectionCells()))}finally{n.getModel().endUpdate()}}function e(d,c,g){var e=mxUtils.getOffset(b,!0),k=mxUtils.getOffset(d,!0);c.style.position="absolute";c.style.left=k.x-e.x+"px";c.style.top=k.y-e.y+"px";c.style.width=d.offsetWidth+"px";c.style.height=d.offsetHeight-(g?4:0)+"px";c.style.zIndex=5}function k(b,d,c){var e=document.createElement("div");e.style.width="32px";e.style.height="4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=d&&"none"!=d?d:"url('"+
+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(v,function(k){this.editorUi.pickColor(d,function(d){e.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;g(b,d,c)});mxEvent.consume(k)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function f(b,d,c,e,k,f,m){null!=d&&(d=d.split(","),t.push({name:b,values:d,type:c,defVal:e,countProperty:k,parentRow:f,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",
+mxUtils.bind(v,function(d){for(var l=f,v=0;null!=l.nextSibling;)if(l.nextSibling.getAttribute("data-pName")==b)l=l.nextSibling,v++;else break;var n={type:c,parentRow:f,index:v,isDeletable:!0,defVal:e,countProperty:k},v=p(b,"",n,0==v%2,m);g(b,e,n);l.parentNode.insertBefore(v,l.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function m(b,d,c,g,e,k,f){if(0<e){var m=Array(e);d=null!=d?d.split(","):[];for(var l=0;l<e;l++)m[l]=null!=
+d[l]?d[l]:null!=g?g:"";t.push({name:b,values:m,type:c,defVal:g,parentRow:k,flipBkg:f,size:e})}return document.createElement("div")}function l(b,d,c){var e=document.createElement("input");e.type="checkbox";e.checked="1"==d;mxEvent.addListener(e,"change",function(){g(b,e.checked?"1":"0",c)});return e}function p(d,c,p,n,t){var x=p.dispName,u=p.type,y=document.createElement("tr");y.className="gePropRow"+(t?"Dark":"")+(n?"Alt":"")+" gePropNonHeaderRow";y.setAttribute("data-pName",d);y.setAttribute("data-pValue",
+c);n=!1;null!=p.index&&(y.setAttribute("data-index",p.index),x=(null!=x?x:"")+"["+p.index+"]",n=!0);var z=document.createElement("td");z.className="gePropRowCell";x=mxResources.get(x,null,x);mxUtils.write(z,x);z.setAttribute("title",x);n&&(z.style.textAlign="right");y.appendChild(z);z=document.createElement("td");z.className="gePropRowCell";if("color"==u)z.appendChild(k(d,c,p));else if("bool"==u||"boolean"==u)z.appendChild(l(d,c,p));else if("enum"==u){var q=p.enumList;for(t=0;t<q.length;t++)if(x=
+q[t],x.val==c){mxUtils.write(z,mxResources.get(x.dispName,null,x.dispName));break}mxEvent.addListener(z,"click",mxUtils.bind(v,function(){var k=document.createElement("select");e(z,k);for(var f=0;f<q.length;f++){var m=q[f],l=document.createElement("option");l.value=mxUtils.htmlEntities(m.val);mxUtils.write(l,mxResources.get(m.dispName,null,m.dispName));k.appendChild(l)}k.value=c;b.appendChild(k);mxEvent.addListener(k,"change",function(){var b=mxUtils.htmlEntities(k.value);g(d,b,p)});k.focus();mxEvent.addListener(k,
"blur",function(){b.removeChild(k)})}))}else"dynamicArr"==u?z.appendChild(f(d,c,p.subType,p.subDefVal,p.countProperty,y,t)):"staticArr"==u?z.appendChild(m(d,c,p.subType,p.subDefVal,p.size,y,t)):"readOnly"==u?(t=document.createElement("input"),t.setAttribute("readonly",""),t.value=c,t.style.width="96px",t.style.borderWidth="0px",z.appendChild(t)):(z.innerHTML=c,mxEvent.addListener(z,"click",mxUtils.bind(v,function(){function k(){var b=f.value,b=0==b.length&&"string"!=u?0:b;p.allowAuto&&(null!=b.trim&&
"auto"==b.trim().toLowerCase()?(b="auto",u="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=p.min&&b<p.min?b=p.min:null!=p.max&&b>p.max&&(b=p.max);b=mxUtils.htmlEntities(("int"==u?parseInt(b):b)+"");g(d,b,p)}var f=document.createElement("input");e(z,f,!0);f.value=c;f.className="gePropEditor";"int"!=u&&"float"!=u||p.allowAuto||(f.type="number",f.step="int"==u?"1":"any",null!=p.min&&(f.min=parseFloat(p.min)),null!=p.max&&(f.max=parseFloat(p.max)));b.appendChild(f);mxEvent.addListener(f,"keypress",
-function(b){13==b.keyCode&&k()});f.focus();mxEvent.addListener(f,"blur",function(){k()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(v,function(b){g(d,"",p,p.index);mxEvent.consume(b)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",z.appendChild(t));y.appendChild(z);return y}var v=this,t=this.editorUi.editor.graph,u=[];b.style.position="relative";b.style.padding="0";var n=document.createElement("table");n.className="geProperties";n.style.whiteSpace=
-"nowrap";n.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;z.style.verticalAlign="middle";y.appendChild(z);mxUtils.write(y,mxResources.get("property"));x.style.cursor="pointer";var q=function(){var d=n.querySelectorAll(".gePropNonHeaderRow"),c;if(v.editorUi.propertiesCollapsed){z.src=Sidebar.prototype.collapsedImage;c="none";for(var g=
-b.childNodes.length-1;0<=g;g--)try{var e=b.childNodes[g],k=e.nodeName.toUpperCase();"INPUT"!=k&&"SELECT"!=k||b.removeChild(e)}catch(Da){}}else z.src=Sidebar.prototype.expandedImage,c="";for(g=0;g<d.length;g++)d[g].style.display=c};mxEvent.addListener(x,"click",function(){v.editorUi.propertiesCollapsed=!v.editorUi.propertiesCollapsed;q()});x.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");x.appendChild(y);n.appendChild(x);var A=!1,C=
-!1,x=null;1==c.vertices.length&&0==c.edges.length?x=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(x=c.edges[0].id);null!=x&&n.appendChild(p("id",mxUtils.htmlEntities(x),{dispName:"ID",type:"readOnly"},!0,!1));for(var K in d)if(x=d[K],"function"!=typeof x.isVisible||x.isVisible(c,this)){var G=null!=c.style[K]?mxUtils.htmlEntities(c.style[K]+""):null!=x.getDefaultValue?x.getDefaultValue(c,this):x.defVal;if("separator"==x.type)C=!C;else{if("staticArr"==x.type)x.size=parseInt(c.style[x.sizeProperty]||
-d[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var O=x.dependentProps,J=[],M=[],y=0;y<O.length;y++){var I=c.style[O[y]];M.push(d[O[y]].subDefVal);J.push(null!=I?I.split(","):[])}x.dependentPropsDefVal=M;x.dependentPropsVals=J}n.appendChild(p(K,G,x,A,C));A=!A}}for(y=0;y<u.length;y++)for(x=u[y],d=x.parentRow,c=0;c<x.values.length;c++)K=p(x.name,x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:c,defVal:x.defVal,countProperty:x.countProperty,size:x.size},
-0==c%2,x.flipBkg),d.parentNode.insertBefore(K,d.nextSibling),d=K;b.appendChild(n);q();return b};StyleFormatPanel.prototype.addStyles=function(b){function d(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var c=this.editorUi,g=c.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";
+function(b){13==b.keyCode&&k()});f.focus();mxEvent.addListener(f,"blur",function(){k()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(v,function(b){g(d,"",p,p.index);mxEvent.consume(b)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",z.appendChild(t));y.appendChild(z);return y}var v=this,n=this.editorUi.editor.graph,t=[];b.style.position="relative";b.style.padding="0";var x=document.createElement("table");x.className="geProperties";x.style.whiteSpace=
+"nowrap";x.style.width="100%";var u=document.createElement("tr");u.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;z.style.verticalAlign="middle";y.appendChild(z);mxUtils.write(y,mxResources.get("property"));u.style.cursor="pointer";var q=function(){var d=x.querySelectorAll(".gePropNonHeaderRow"),c;if(v.editorUi.propertiesCollapsed){z.src=Sidebar.prototype.collapsedImage;c="none";for(var g=
+b.childNodes.length-1;0<=g;g--)try{var e=b.childNodes[g],k=e.nodeName.toUpperCase();"INPUT"!=k&&"SELECT"!=k||b.removeChild(e)}catch(Da){}}else z.src=Sidebar.prototype.expandedImage,c="";for(g=0;g<d.length;g++)d[g].style.display=c};mxEvent.addListener(u,"click",function(){v.editorUi.propertiesCollapsed=!v.editorUi.propertiesCollapsed;q()});u.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");u.appendChild(y);x.appendChild(u);var A=!1,C=
+!1,u=null;1==c.vertices.length&&0==c.edges.length?u=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(u=c.edges[0].id);null!=u&&x.appendChild(p("id",mxUtils.htmlEntities(u),{dispName:"ID",type:"readOnly"},!0,!1));for(var K in d)if(u=d[K],"function"!=typeof u.isVisible||u.isVisible(c,this)){var G=null!=c.style[K]?mxUtils.htmlEntities(c.style[K]+""):null!=u.getDefaultValue?u.getDefaultValue(c,this):u.defVal;if("separator"==u.type)C=!C;else{if("staticArr"==u.type)u.size=parseInt(c.style[u.sizeProperty]||
+d[u.sizeProperty].defVal)||0;else if(null!=u.dependentProps){for(var O=u.dependentProps,M=[],J=[],y=0;y<O.length;y++){var I=c.style[O[y]];J.push(d[O[y]].subDefVal);M.push(null!=I?I.split(","):[])}u.dependentPropsDefVal=J;u.dependentPropsVals=M}x.appendChild(p(K,G,u,A,C));A=!A}}for(y=0;y<t.length;y++)for(u=t[y],d=u.parentRow,c=0;c<u.values.length;c++)K=p(u.name,u.values[c],{type:u.type,parentRow:u.parentRow,isDeletable:u.isDeletable,index:c,defVal:u.defVal,countProperty:u.countProperty,size:u.size},
+0==c%2,u.flipBkg),d.parentNode.insertBefore(K,d.nextSibling),d=K;b.appendChild(x);q();return b};StyleFormatPanel.prototype.addStyles=function(b){function d(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var c=this.editorUi,g=c.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";
b.style.position="relative";b.appendChild(e);var k="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(" "),f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.position="relative";f.style.textAlign="center";f.style.width="210px";for(var m=[],l=0;l<this.defaultColorSchemes.length;l++){var p=document.createElement("div");p.style.display="inline-block";p.style.width=
"6px";p.style.height="6px";p.style.marginLeft="4px";p.style.marginRight="3px";p.style.borderRadius="3px";p.style.cursor="pointer";p.style.background="transparent";p.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(p,"click",mxUtils.bind(this,function(){v(b)}))})(l);m.push(p);f.appendChild(p)}var v=mxUtils.bind(this,function(b){null!=m[b]&&(null!=this.format.currentScheme&&null!=m[this.format.currentScheme]&&(m[this.format.currentScheme].style.background="transparent"),
-this.format.currentScheme=b,t(this.defaultColorSchemes[this.format.currentScheme]),m[this.format.currentScheme].style.background="#84d7ff")}),t=mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(b){var d=mxUtils.button("",mxUtils.bind(this,function(d){g.getModel().beginUpdate();try{for(var e=c.getSelectionState().cells,f=0;f<e.length;f++){for(var m=g.getModel().getStyle(e[f]),l=0;l<k.length;l++)m=mxUtils.removeStylename(m,k[l]);var p=g.getModel().isVertex(e[f])?g.defaultVertexStyle:g.defaultEdgeStyle;
+this.format.currentScheme=b,n(this.defaultColorSchemes[this.format.currentScheme]),m[this.format.currentScheme].style.background="#84d7ff")}),n=mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(b){var d=mxUtils.button("",mxUtils.bind(this,function(d){g.getModel().beginUpdate();try{for(var e=c.getSelectionState().cells,f=0;f<e.length;f++){for(var m=g.getModel().getStyle(e[f]),l=0;l<k.length;l++)m=mxUtils.removeStylename(m,k[l]);var p=g.getModel().isVertex(e[f])?g.defaultVertexStyle:g.defaultEdgeStyle;
null!=b?(mxEvent.isShiftDown(d)||(m=""==b.fill?mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,b.fill||mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,null)),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,b.gradient||mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(d)||mxClient.IS_MAC&&mxEvent.isMetaDown(d)||!g.getModel().isVertex(e[f])||(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,b.font||mxUtils.getValue(p,
mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(d)||(m=""==b.stroke?mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,b.stroke||mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,null)))):(m=mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,"#ffffff")),m=mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,"#000000")),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,
mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(e[f])&&(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null))));g.getModel().setStyle(e[f],m)}}finally{g.getModel().endUpdate()}}));d.className="geStyleButton";d.style.width="36px";d.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";d.style.margin="0px 6px 6px 0px";if(null!=b){var f="1"==urlParams.sketch?"2px solid":"1px solid";null!=b.gradient?mxClient.IS_IE&&
10>document.documentMode?d.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+b.fill+"', EndColorStr='"+b.gradient+"', GradientType=0)":d.style.backgroundImage="linear-gradient("+b.fill+" 0px,"+b.gradient+" 100%)":b.fill==mxConstants.NONE?d.style.background="url('"+Dialog.prototype.noColorImage+"')":d.style.backgroundColor=""==b.fill?mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):b.fill||mxUtils.getValue(g.defaultVertexStyle,
mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");d.style.border=b.stroke==mxConstants.NONE?f+" transparent":""==b.stroke?f+" "+mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):f+" "+(b.stroke||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=b.title&&d.setAttribute("title",b.title)}else{var f=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,
-"#ffffff"),m=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");d.style.backgroundColor=f;d.style.border="1px solid "+m}d.style.borderRadius="0";e.appendChild(d)});e.innerHTML="";for(var f=0;f<b.length;f++)0<f&&0==mxUtils.mod(f,4)&&mxUtils.br(e),d(b[f])});null==this.format.currentScheme?v(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):v(this.format.currentScheme);var l=10>=this.defaultColorSchemes.length?28:8,x=document.createElement("div");x.style.cssText="position:absolute;left:10px;top:8px;bottom:"+
-l+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";mxEvent.addListener(x,"click",mxUtils.bind(this,function(){v(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));
-var n=document.createElement("div");n.style.cssText="position:absolute;left:202px;top:8px;bottom:"+l+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";1<this.defaultColorSchemes.length&&
-(b.appendChild(x),b.appendChild(n));mxEvent.addListener(n,"click",mxUtils.bind(this,function(){v(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));d(x);d(n);t(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&b.appendChild(f);return b};StyleFormatPanel.prototype.addEditOps=function(b){var d=this.editorUi.getSelectionState(),c=this.editorUi.editor.graph,g=null;1==d.cells.length&&(g=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,
+"#ffffff"),m=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");d.style.backgroundColor=f;d.style.border="1px solid "+m}d.style.borderRadius="0";e.appendChild(d)});e.innerHTML="";for(var f=0;f<b.length;f++)0<f&&0==mxUtils.mod(f,4)&&mxUtils.br(e),d(b[f])});null==this.format.currentScheme?v(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):v(this.format.currentScheme);var l=10>=this.defaultColorSchemes.length?28:8,t=document.createElement("div");t.style.cssText="position:absolute;left:10px;top:8px;bottom:"+
+l+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";mxEvent.addListener(t,"click",mxUtils.bind(this,function(){v(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));
+var u=document.createElement("div");u.style.cssText="position:absolute;left:202px;top:8px;bottom:"+l+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";1<this.defaultColorSchemes.length&&
+(b.appendChild(t),b.appendChild(u));mxEvent.addListener(u,"click",mxUtils.bind(this,function(){v(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));d(t);d(u);n(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&b.appendChild(f);return b};StyleFormatPanel.prototype.addEditOps=function(b){var d=this.editorUi.getSelectionState(),c=this.editorUi.editor.graph,g=null;1==d.cells.length&&(g=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,
function(b){this.editorUi.actions.get("editStyle").funct()})),g.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),g.style.width="210px",g.style.marginBottom="2px",b.appendChild(g));c=1==d.cells.length?c.view.getState(d.cells[0]):null;null!=c&&null!=c.shape&&null!=c.shape.stencil?(d=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(b){this.editorUi.actions.get("editShape").funct()})),d.setAttribute("title",mxResources.get("editShape")),
d.style.marginBottom="2px",null==g?d.style.width="210px":(g.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),b.appendChild(d)):d.image&&0<d.cells.length&&(d=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(b){this.editorUi.actions.get("image").funct()})),d.setAttribute("title",mxResources.get("editImage")),d.style.marginBottom="2px",null==g?d.style.width="210px":(g.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),b.appendChild(d));return b}}Graph.customFontElements=
{};Graph.recentCustomFonts={};Graph.isGoogleFontUrl=function(b){return b.substring(0,Editor.GOOGLE_FONTS.length)==Editor.GOOGLE_FONTS};Graph.isCssFontUrl=function(b){return Graph.isGoogleFontUrl(b)};Graph.createFontElement=function(b,d){var c;Graph.isCssFontUrl(d)?(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("charset","UTF-8"),c.setAttribute("href",d)):(c=document.createElement("style"),mxUtils.write(c,'@font-face {\nfont-family: "'+
@@ -3326,84 +3331,85 @@ b);mxEvent.addListener(this.container,"mousemove",b);mxEvent.addListener(this.co
parseFloat(d.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;c.marginLeft=d.marginLeft||0;c.marginRight=d.marginRight||0;c.marginTop=d.marginTop||0;c.marginBottom=d.marginBottom||0;c.allowGaps=d.allowGaps||0;c.horizontal="1"==mxUtils.getValue(d,"horizontalRack","0");c.resizeParent=!1;c.fill=!0;return c}return g.apply(this,arguments)};this.updateGlobalUrlVariables()};var y=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=function(b,d){return Graph.processFontStyle(y.apply(this,
arguments))};var F=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(b,d,c,g,e,k,f,m,l,p,v){F.apply(this,arguments);Graph.processFontAttributes(v)};var D=mxText.prototype.redraw;mxText.prototype.redraw=function(){D.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(b,d,c){function g(){for(var b=f.getSelectionCells(),d=[],c=0;c<b.length;c++)f.isCellVisible(b[c])&&
d.push(b[c]);f.setSelectionCells(d)}function e(b){f.hiddenTags=b?[]:m.slice();g();f.refresh()}function k(b,c){p.innerHTML="";if(0<b.length){var k=document.createElement("table");k.setAttribute("cellpadding","2");k.style.boxSizing="border-box";k.style.tableLayout="fixed";k.style.width="100%";var l=document.createElement("tbody");if(null!=b&&0<b.length)for(var v=0;v<b.length;v++)(function(b){var k=0>mxUtils.indexOf(f.hiddenTags,b),p=document.createElement("tr"),v=document.createElement("td");v.style.align=
-"center";v.style.width="16px";var t=document.createElement("img");t.setAttribute("src",k?Editor.visibleImage:Editor.hiddenImage);t.setAttribute("title",mxResources.get(k?"hideIt":"show",[b]));mxUtils.setOpacity(t,k?75:25);t.style.verticalAlign="middle";t.style.cursor="pointer";t.style.width="16px";if(d||Editor.isDarkMode())t.style.filter="invert(100%)";v.appendChild(t);mxEvent.addListener(t,"click",function(d){var c=mxUtils.indexOf(f.hiddenTags,b);mxEvent.isShiftDown(d)?e(0<=mxUtils.indexOf(f.hiddenTags,
+"center";v.style.width="16px";var n=document.createElement("img");n.setAttribute("src",k?Editor.visibleImage:Editor.hiddenImage);n.setAttribute("title",mxResources.get(k?"hideIt":"show",[b]));mxUtils.setOpacity(n,k?75:25);n.style.verticalAlign="middle";n.style.cursor="pointer";n.style.width="16px";if(d||Editor.isDarkMode())n.style.filter="invert(100%)";v.appendChild(n);mxEvent.addListener(n,"click",function(d){var c=mxUtils.indexOf(f.hiddenTags,b);mxEvent.isShiftDown(d)?e(0<=mxUtils.indexOf(f.hiddenTags,
b)):(0>c?f.hiddenTags.push(b):0<=c&&f.hiddenTags.splice(c,1),g(),f.refresh());mxEvent.consume(d)});p.appendChild(v);v=document.createElement("td");v.style.overflow="hidden";v.style.whiteSpace="nowrap";v.style.textOverflow="ellipsis";v.style.verticalAlign="middle";v.style.cursor="pointer";v.setAttribute("title",b);a=document.createElement("a");mxUtils.write(a,b);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,k?100:40);v.appendChild(a);mxEvent.addListener(v,"click",
-function(d){if(mxEvent.isShiftDown(d)){e(!0);var c=f.getCellsForTags([b],null,null,!0);f.isEnabled()?f.setSelectionCells(c):f.highlightCells(c)}else if(k&&0<f.hiddenTags.length)e(!0);else{var c=m.slice(),l=mxUtils.indexOf(c,b);c.splice(l,1);f.hiddenTags=c;g();f.refresh()}mxEvent.consume(d)});p.appendChild(v);if(f.isEnabled()){v=document.createElement("td");v.style.verticalAlign="middle";v.style.textAlign="center";v.style.width="18px";if(null==c){v.style.align="center";v.style.width="16px";t=document.createElement("img");
-t.setAttribute("src",Editor.crossImage);t.setAttribute("title",mxResources.get("removeIt",[b]));mxUtils.setOpacity(t,k?75:25);t.style.verticalAlign="middle";t.style.cursor="pointer";t.style.width="16px";if(d||Editor.isDarkMode())t.style.filter="invert(100%)";mxEvent.addListener(t,"click",function(d){var c=mxUtils.indexOf(m,b);0<=c&&m.splice(c,1);f.removeTagsForCells(f.model.getDescendants(f.model.getRoot()),[b]);f.refresh();mxEvent.consume(d)});v.appendChild(t)}else{var n=document.createElement("input");
-n.setAttribute("type","checkbox");n.style.margin="0px";n.defaultChecked=null!=c&&0<=mxUtils.indexOf(c,b);n.checked=n.defaultChecked;n.style.background="transparent";n.setAttribute("title",mxResources.get(n.defaultChecked?"removeIt":"add",[b]));mxEvent.addListener(n,"change",function(d){n.checked?f.addTagsForCells(f.getSelectionCells(),[b]):f.removeTagsForCells(f.getSelectionCells(),[b]);mxEvent.consume(d)});v.appendChild(n)}p.appendChild(v)}l.appendChild(p)})(b[v]);k.appendChild(l);p.appendChild(k)}}
+function(d){if(mxEvent.isShiftDown(d)){e(!0);var c=f.getCellsForTags([b],null,null,!0);f.isEnabled()?f.setSelectionCells(c):f.highlightCells(c)}else if(k&&0<f.hiddenTags.length)e(!0);else{var c=m.slice(),l=mxUtils.indexOf(c,b);c.splice(l,1);f.hiddenTags=c;g();f.refresh()}mxEvent.consume(d)});p.appendChild(v);if(f.isEnabled()){v=document.createElement("td");v.style.verticalAlign="middle";v.style.textAlign="center";v.style.width="18px";if(null==c){v.style.align="center";v.style.width="16px";n=document.createElement("img");
+n.setAttribute("src",Editor.crossImage);n.setAttribute("title",mxResources.get("removeIt",[b]));mxUtils.setOpacity(n,k?75:25);n.style.verticalAlign="middle";n.style.cursor="pointer";n.style.width="16px";if(d||Editor.isDarkMode())n.style.filter="invert(100%)";mxEvent.addListener(n,"click",function(d){var c=mxUtils.indexOf(m,b);0<=c&&m.splice(c,1);f.removeTagsForCells(f.model.getDescendants(f.model.getRoot()),[b]);f.refresh();mxEvent.consume(d)});v.appendChild(n)}else{var t=document.createElement("input");
+t.setAttribute("type","checkbox");t.style.margin="0px";t.defaultChecked=null!=c&&0<=mxUtils.indexOf(c,b);t.checked=t.defaultChecked;t.style.background="transparent";t.setAttribute("title",mxResources.get(t.defaultChecked?"removeIt":"add",[b]));mxEvent.addListener(t,"change",function(d){t.checked?f.addTagsForCells(f.getSelectionCells(),[b]):f.removeTagsForCells(f.getSelectionCells(),[b]);mxEvent.consume(d)});v.appendChild(t)}p.appendChild(v)}l.appendChild(p)})(b[v]);k.appendChild(l);p.appendChild(k)}}
var f=this,m=f.hiddenTags.slice(),l=document.createElement("div");l.style.userSelect="none";l.style.overflow="hidden";l.style.padding="10px";l.style.height="100%";var p=document.createElement("div");p.style.boxSizing="border-box";p.style.borderRadius="4px";p.style.userSelect="none";p.style.overflow="auto";p.style.position="absolute";p.style.left="10px";p.style.right="10px";p.style.top="10px";p.style.border=f.isEnabled()?"1px solid #808080":"none";p.style.bottom=f.isEnabled()?"48px":"10px";l.appendChild(p);
-var v=mxUtils.button(mxResources.get("reset"),function(b){f.hiddenTags=[];mxEvent.isShiftDown(b)||(m=f.hiddenTags.slice());g();f.refresh()});v.setAttribute("title",mxResources.get("reset"));v.className="geBtn";v.style.margin="0 4px 0 0";var t=mxUtils.button(mxResources.get("add"),function(){null!=c&&c(m,function(b){m=b;n()})});t.setAttribute("title",mxResources.get("add"));t.className="geBtn";t.style.margin="0";f.addListener(mxEvent.ROOT,function(){m=f.hiddenTags.slice()});var n=mxUtils.bind(this,
-function(d,c){if(b()){for(var g=f.getAllTags(),e=0;e<g.length;e++)0>mxUtils.indexOf(m,g[e])&&m.push(g[e]);m.sort();f.isSelectionEmpty()?k(m):k(m,f.getCommonTagsForCells(f.getSelectionCells()))}});f.selectionModel.addListener(mxEvent.CHANGE,n);f.model.addListener(mxEvent.CHANGE,n);f.addListener(mxEvent.REFRESH,n);var u=document.createElement("div");u.style.boxSizing="border-box";u.style.whiteSpace="nowrap";u.style.position="absolute";u.style.overflow="hidden";u.style.bottom="0px";u.style.height="42px";
-u.style.right="10px";u.style.left="10px";f.isEnabled()&&(u.appendChild(v),u.appendChild(t),l.appendChild(u));return{div:l,refresh:n}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");d=
+var v=mxUtils.button(mxResources.get("reset"),function(b){f.hiddenTags=[];mxEvent.isShiftDown(b)||(m=f.hiddenTags.slice());g();f.refresh()});v.setAttribute("title",mxResources.get("reset"));v.className="geBtn";v.style.margin="0 4px 0 0";var n=mxUtils.button(mxResources.get("add"),function(){null!=c&&c(m,function(b){m=b;t()})});n.setAttribute("title",mxResources.get("add"));n.className="geBtn";n.style.margin="0";f.addListener(mxEvent.ROOT,function(){m=f.hiddenTags.slice()});var t=mxUtils.bind(this,
+function(d,c){if(b()){for(var g=f.getAllTags(),e=0;e<g.length;e++)0>mxUtils.indexOf(m,g[e])&&m.push(g[e]);m.sort();f.isSelectionEmpty()?k(m):k(m,f.getCommonTagsForCells(f.getSelectionCells()))}});f.selectionModel.addListener(mxEvent.CHANGE,t);f.model.addListener(mxEvent.CHANGE,t);f.addListener(mxEvent.REFRESH,t);var u=document.createElement("div");u.style.boxSizing="border-box";u.style.whiteSpace="nowrap";u.style.position="absolute";u.style.overflow="hidden";u.style.bottom="0px";u.style.height="42px";
+u.style.right="10px";u.style.left="10px";f.isEnabled()&&(u.appendChild(v),u.appendChild(n),l.appendChild(u));return{div:l,refresh:t}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");d=
Graph.getFontUrl(b,d);for(var g=0;g<c.length;g++)c[g].getAttribute("face")==b&&c[g].getAttribute("data-font-src")!=d&&c[g].setAttribute("data-font-src",d)}};var E=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return E.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var b=
JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var d in b)this.globalVars[d]=b[d]}catch(J){null!=window.console&&console.log("Error in vars URL parameter: "+J)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var H=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var d=H.apply(this,arguments);null==d&&null!=this.globalVars&&(d=this.globalVars[b]);return d};Graph.prototype.getDefaultStylesheet=
-function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var N=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,d,c,g,e,k,f,m,l,p,v,t,n,u){var x=null,y=null,z=null;t||null==this.themes||"darkTheme"!=this.defaultThemeName||(x=this.stylesheet,y=this.shapeForegroundColor,z=this.shapeBackgroundColor,this.shapeForegroundColor=
+function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var N=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,d,c,g,e,k,f,m,l,p,v,n,t,u){var x=null,y=null,z=null;n||null==this.themes||"darkTheme"!=this.defaultThemeName||(x=this.stylesheet,y=this.shapeForegroundColor,z=this.shapeBackgroundColor,this.shapeForegroundColor=
"darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var q=N.apply(this,arguments),A=this.getCustomFonts();if(v&&0<A.length){var K=q.ownerDocument,C=null!=K.createElementNS?K.createElementNS(mxConstants.NS_SVG,"style"):K.createElement("style");null!=K.setAttributeNS?C.setAttributeNS("type","text/css"):C.setAttribute("type","text/css");for(var G=
"",O="",M=0;M<A.length;M++){var I=A[M].name,F=A[M].url;Graph.isCssFontUrl(F)?G+="@import url("+F+");\n":O+='@font-face {\nfont-family: "'+I+'";\nsrc: url("'+F+'");\n}\n'}C.appendChild(K.createTextNode(G+O));q.getElementsByTagName("defs")[0].appendChild(C)}null!=x&&(this.shapeBackgroundColor=z,this.shapeForegroundColor=y,this.stylesheet=x,this.refresh());return q};var A=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=A.apply(this,arguments);if(this.mathEnabled){var d=
b.drawText;b.drawText=function(b,c){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var g=b.text.getContentNode();if(null!=g){g=g.cloneNode(!0);if(g.getElementsByTagNameNS)for(var e=g.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=g.innerHTML&&(e=b.text.value,b.text.value=g.innerHTML,d.apply(this,arguments),b.text.value=e)}}else d.apply(this,
-arguments)}}return b};var G=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){G.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,b.text,b.secondLabel,b.control]};var I=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){I.apply(this,arguments);this.numberCounter=0};var L=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=
-function(b,d){var c=L.apply(this,arguments);d=null!=d?d:!0;var g=null!=c&&this.graph.model.isVertex(c.cell)?"1"==mxUtils.getValue(c.style,"enumerate",0):!1;d&&this.redrawNumberShape(c,g);return c};mxGraphView.prototype.redrawNumberShape=function(b,d){d&&this.graph.model.isVertex(b.cell)&&null!=b.shape&&null==b.secondLabel&&(b.secondLabel=new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),b.secondLabel.size=12,b.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,this.graph.cellRenderer.initializeLabel(b,
-b.secondLabel));if(null!=b&&null!=b.secondLabel)if(d){var c=mxUtils.getValue(b.style,"enumerateValue","");""==c&&(c=++this.numberCounter);var c='<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(c)+"</div>",g=this.graph.getView().getScale(),e=new mxRectangle(b.x+b.width-4*g,b.y+4*g,0,0);b.secondLabel.value=c;b.secondLabel.state=b;b.secondLabel.scale=g;b.secondLabel.bounds=e;b.secondLabel.redraw()}else b.secondLabel.destroy(),b.secondLabel=null};
-var M=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){M.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==
-this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};var K=Graph.prototype.refresh;Graph.prototype.refresh=function(){K.apply(this,arguments);this.refreshBackgroundImage()};
-Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var O=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){O.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};
-Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var c=!1,g=0,e=0,k=mxUtils.bind(this,function(){c||(c=!0,this.model.beginUpdate())}),f=mxUtils.bind(this,function(){c&&(c=!1,this.model.endUpdate())}),
-m=mxUtils.bind(this,function(){0<g&&g--;0==g&&l()}),l=mxUtils.bind(this,function(){if(e<b.length){var c=this.stoppingCustomActions,p=b[e++],v=[];if(null!=p.open)if(f(),this.isCustomLink(p.open)){if(!this.customLinkClicked(p.open))return}else this.openLink(p.open);null==p.wait||c||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;m()}),g++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=p.wait?parseInt(p.wait):
-1E3),f());null!=p.opacity&&null!=p.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(p.opacity,!0)),p.opacity.value);null!=p.fadeIn&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeIn,!0)),0,1,m,c?0:p.fadeIn.delay));null!=p.fadeOut&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeOut,!0)),1,0,m,c?0:p.fadeOut.delay));null!=p.wipeIn&&(v=v.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeIn,!0),!0)));null!=
-p.wipeOut&&(v=v.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeOut,!0),!1)));null!=p.toggle&&(k(),this.toggleCells(this.getCellsForAction(p.toggle,!0)));if(null!=p.show){k();var t=this.getCellsForAction(p.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(t),1);this.setCellsVisible(t,!0)}null!=p.hide&&(k(),t=this.getCellsForAction(p.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(t),0),this.setCellsVisible(t,!1));null!=p.toggleStyle&&null!=p.toggleStyle.key&&(k(),this.toggleCellStyles(p.toggleStyle.key,
-null!=p.toggleStyle.defaultValue?p.toggleStyle.defaultValue:"0",this.getCellsForAction(p.toggleStyle,!0)));null!=p.style&&null!=p.style.key&&(k(),this.setCellStyles(p.style.key,p.style.value,this.getCellsForAction(p.style,!0)));t=[];null!=p.select&&this.isEnabled()&&(t=this.getCellsForAction(p.select),this.setSelectionCells(t));null!=p.highlight&&(t=this.getCellsForAction(p.highlight),this.highlightCells(t,p.highlight.color,p.highlight.duration,p.highlight.opacity));null!=p.scroll&&(t=this.getCellsForAction(p.scroll));
-null!=p.viewbox&&this.fitWindow(p.viewbox,p.viewbox.border);0<t.length&&this.scrollCellToVisible(t[0]);if(null!=p.tags){t=[];null!=p.tags.hidden&&(t=t.concat(p.tags.hidden));if(null!=p.tags.visible)for(var n=this.getAllTags(),u=0;u<n.length;u++)0>mxUtils.indexOf(p.tags.visible,n[u])&&0>mxUtils.indexOf(t,n[u])&&t.push(n[u]);this.hiddenTags=t;this.refresh()}0<v.length&&(g++,this.executeAnimations(v,m,c?1:p.steps,c?0:p.delay));0==g?l():f()}else this.stoppingCustomActions=this.executingCustomActions=
-!1,f(),null!=d&&d()});l()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,d){var c=this.getLinkForCell(d);null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(d,this.updateCustomLink(b,c));if(this.isHtmlLabel(d)){var g=document.createElement("div");g.innerHTML=this.sanitizeHtml(this.getLabel(d));for(var e=g.getElementsByTagName("a"),k=!1,f=0;f<e.length;f++)c=e[f].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(e[f].setAttribute("href",this.updateCustomLink(b,
-c)),k=!0);k&&this.labelChanged(d,g.innerHTML)}};Graph.prototype.updateCustomLink=function(b,d){if("data:action/json,"==d.substring(0,17))try{var c=JSON.parse(d.substring(17));null!=c.actions&&(this.updateCustomLinkActions(b,c.actions),d="data:action/json,"+JSON.stringify(c))}catch(W){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<d.length;c++){var g=d[c],e;for(e in g)this.updateCustomLinkAction(b,g[e],"cells"),this.updateCustomLinkAction(b,g[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=
-function(b,d,c){if(null!=d&&null!=d[c]){for(var g=[],e=0;e<d[c].length;e++)if("*"==d[c][e])g.push(d[c][e]);else{var k=b[d[c][e]];null!=k?""!=k&&g.push(k):g.push(d[c][e])}d[c]=g}};Graph.prototype.getCellsForAction=function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var g=[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&g.push(c[e]);c=g}return c};Graph.prototype.getCellsById=function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==
-b[c])var g=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=g},g));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var U=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return U.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>
-mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,g){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());for(var k=0,f={},m=0;m<b.length;m++)0<b[m].length&&(f[b[m]]=!0,k++);for(m=0;m<d.length;m++)if(c&&this.model.getParent(d[m])==this.model.root||this.model.isVertex(d[m])||this.model.isEdge(d[m])){var l=this.getTagsForCell(d[m]),p=!1;if(0<l.length&&(l=l.split(" "),l.length>=b.length)){for(var v=p=0;v<l.length&&p<k;v++)null!=
-f[l[v]]&&p++;p=p==k}p&&(1!=g||this.isCellVisible(d[m]))&&e.push(d[m])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var d=null,c=[],g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]),c=[];if(0<e.length){for(var e=e.split(" "),k={},f=0;f<e.length;f++)if(null==d||null!=d[e[f]])k[e[f]]=!0,c.push(e[f]);d=k}else return[]}return c};Graph.prototype.getTagsForCells=function(b){for(var d=
-[],c={},g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]);if(0<e.length)for(var e=e.split(" "),k=0;k<e.length;k++)null==c[e[k]]&&(c[e[k]]=!0,d.push(e[k]))}return d};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){for(var g=this.getTagsForCell(b[c]),e=g.split(" "),k=!1,f=0;f<d.length;f++){var m=mxUtils.trim(d[f]);""!=m&&0>mxUtils.indexOf(e,
-m)&&(g=0<g.length?g+" "+m:m,k=!0)}k&&this.setAttributeForCell(b[c],"tags",g)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var g=this.getTagsForCell(b[c]);if(0<g.length){for(var e=g.split(" "),k=!1,f=0;f<d.length;f++){var m=mxUtils.indexOf(e,d[f]);0<=m&&(e.splice(m,1),k=!0)}k&&this.setAttributeForCell(b[c],"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=
-function(b){this.model.beginUpdate();try{for(var d=0;d<b.length;d++)this.model.setVisible(b[d],!this.model.isVisible(b[d]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,d){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],d)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(b,d,c,g){for(var e=0;e<b.length;e++)this.highlightCell(b[e],d,c,g)};Graph.prototype.highlightCell=function(b,d,c,g){d=null!=d?d:mxConstants.DEFAULT_VALID_COLOR;
-c=null!=c?c:1E3;b=this.view.getState(b);if(null!=b){var e=Math.max(5,mxUtils.getValue(b.style,mxConstants.STYLE_STROKEWIDTH,1)+4),k=new mxCellHighlight(this,d,e,!1);null!=g&&(k.opacity=g);k.highlight(b);window.setTimeout(function(){null!=k.shape&&(mxUtils.setPrefixedStyle(k.shape.node.style,"transition","all 1200ms ease-in-out"),k.shape.node.style.opacity=0);window.setTimeout(function(){k.destroy()},1200)},c)}};Graph.prototype.addSvgShadow=function(b,d,c,g){c=null!=c?c:!1;g=null!=g?g:!0;var e=b.ownerDocument,
-k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");k.setAttribute("id",this.shadowId);var f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");f.setAttribute("in","SourceAlpha");f.setAttribute("stdDeviation",this.svgShadowBlur);f.setAttribute("result","blur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");f.setAttribute("in",
-"blur");f.setAttribute("dx",this.svgShadowSize);f.setAttribute("dy",this.svgShadowSize);f.setAttribute("result","offsetBlur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");f.setAttribute("flood-color",this.svgShadowColor);f.setAttribute("flood-opacity",this.svgShadowOpacity);f.setAttribute("result","offsetColor");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");
-f.setAttribute("in","offsetColor");f.setAttribute("in2","offsetBlur");f.setAttribute("operator","in");f.setAttribute("result","offsetBlur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");f.setAttribute("in","SourceGraphic");f.setAttribute("in2","offsetBlur");k.appendChild(f);f=b.getElementsByTagName("defs");0==f.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=b.firstChild?
-b.insertBefore(e,b.firstChild):b.appendChild(e)):e=f[0];e.appendChild(k);c||(d=null!=d?d:b.getElementsByTagName("g")[0],null!=d&&(d.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(b.getAttribute("width")))&&g&&(b.setAttribute("width",parseInt(b.getAttribute("width"))+6),b.setAttribute("height",parseInt(b.getAttribute("height"))+6),d=b.getAttribute("viewBox"),null!=d&&0<d.length&&(d=d.split(" "),3<d.length&&(w=parseFloat(d[2])+6,h=parseFloat(d[3])+6,b.setAttribute("viewBox",d[0]+" "+
-d[1]+" "+w+" "+h))))));return k};Graph.prototype.setShadowVisible=function(b,d){mxClient.IS_SVG&&!mxClient.IS_SF&&(d=null!=d?d:!0,(this.shadowVisible=b)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),d&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var b=this.model.getChildCount(this.model.root),d,c=0;do d=this.model.getChildAt(this.model.root,
-c);while(c++<b&&"1"==mxUtils.getValue(this.getCellStyle(d),"locked","0"));null!=d&&this.setDefaultParent(d)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.bpmn2=
-[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.c4=[SHAPES_PATH+"/mxC4.js"];mxStencilRegistry.libraries.cisco19=[SHAPES_PATH+"/mxCisco19.js",STENCIL_PATH+"/cisco19.xml"];mxStencilRegistry.libraries.cisco_safe=[SHAPES_PATH+"/mxCiscoSafe.js",STENCIL_PATH+"/cisco_safe/architecture.xml",STENCIL_PATH+"/cisco_safe/business_icons.xml",STENCIL_PATH+"/cisco_safe/capability.xml",STENCIL_PATH+"/cisco_safe/design.xml",STENCIL_PATH+"/cisco_safe/iot_things_icons.xml",
-STENCIL_PATH+"/cisco_safe/people_places_things_icons.xml",STENCIL_PATH+"/cisco_safe/security_icons.xml",STENCIL_PATH+"/cisco_safe/technology_icons.xml",STENCIL_PATH+"/cisco_safe/threat.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.kubernetes=[SHAPES_PATH+"/mxKubernetes.js",STENCIL_PATH+"/kubernetes.xml"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];
-mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"];mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];
-mxStencilRegistry.libraries.ios7ui=[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/miscellaneous"]=
-[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/miscellaneous.xml"];mxStencilRegistry.libraries["electrical/signal_sources"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/signal_sources.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];
-mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]=[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];
-mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]=[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+
-"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.ibm=[SHAPES_PATH+"/mxIBM.js",STENCIL_PATH+"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=
-[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=
-[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=
-[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var X=mxMarker.createMarker;mxMarker.createMarker=function(b,d,c,g,e,k,f,m,l,p){if(null!=c&&null==mxMarker.markers[c]){var v=this.getPackageForType(c);null!=v&&mxStencilRegistry.getStencil(v)}return X.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){u.value=Math.max(1,
-Math.min(m,Math.max(parseInt(u.value),parseInt(n.value))));n.value=Math.max(1,Math.min(m,Math.min(parseInt(u.value),parseInt(n.value))))}function g(d){function c(d,c,k){var f=d.useCssTransforms,m=d.currentTranslate,l=d.currentScale,p=d.view.translate,v=d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=1,d.view.translate=new mxPoint(0,0),d.view.scale=1);var t=d.getGraphBounds(),n=0,u=0,y=H.get(),z=1/d.pageScale,A=q.checked;if(A)var z=parseInt(L.value),
-K=parseInt(C.value),z=Math.min(y.height*K/(t.height/d.view.scale),y.width*z/(t.width/d.view.scale));else z=parseInt(x.value)/(100*d.pageScale),isNaN(z)&&(g=1/d.pageScale,x.value="100 %");y=mxRectangle.fromRectangle(y);y.width=Math.ceil(y.width*g);y.height=Math.ceil(y.height*g);z*=g;!A&&d.pageVisible?(t=d.getPageLayout(),n-=t.x*y.width,u-=t.y*y.height):A=!0;if(null==c){c=PrintDialog.createPrintPreview(d,z,y,0,n,u,A);c.pageSelector=!1;c.mathEnabled=!1;n=b.getCurrentFile();null!=n&&(c.title=n.getTitle());
-var G=c.writeHead;c.writeHead=function(c){G.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),c.writeln("@media print {"),c.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),c.writeln("}"),c.writeln("</style>"));null!=b.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(b.editor.fontCss),c.writeln("</style>"));for(var g=
-d.getCustomFonts(),e=0;e<g.length;e++){var k=g[e].name,f=g[e].url;Graph.isCssFontUrl(f)?c.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(f)+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(k)+'";\nsrc: url("'+mxUtils.htmlEntities(f)+'");\n}'),c.writeln("</style>"))}};if("undefined"!==typeof MathJax){var O=c.renderPage;c.renderPage=function(d,c,g,e,k,f){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&
-!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var l=O.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}n=null;u=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(n=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());c.open(null,null,k,!0);e.enableFlowAnimation=u;null!=n&&(e.stylesheet=n,e.refresh())}else{y=d.background;if(null==
-y||""==y||y==mxConstants.NONE)y="#ffffff";c.backgroundColor=y;c.autoOrigin=A;c.appendGraph(d,z,n,u,k,!0);k=d.getCustomFonts();if(null!=c.wnd)for(n=0;n<k.length;n++)u=k[n].name,A=k[n].url,Graph.isCssFontUrl(A)?c.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(A)+'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),c.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(u)+'";\nsrc: url("'+mxUtils.htmlEntities(A)+'");\n}'),
-c.wnd.document.writeln("</style>"))}f&&(d.useCssTransforms=f,d.currentTranslate=m,d.currentScale=l,d.view.translate=p,d.view.scale=v);return c}var g=parseInt(S.value)/100;isNaN(g)&&(g=1,S.value="100 %");var g=.75*g,k=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(k=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var f=n.value,m=u.value,p=!v.checked,t=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,v.checked,f,m,q.checked,L.value,C.value,parseInt(x.value)/100,parseInt(S.value)/
-100,H.get());else{p&&(p=f==l&&m==l);if(!p&&null!=b.pages&&b.pages.length){var y=0,p=b.pages.length-1;v.checked||(y=parseInt(f)-1,p=parseInt(m)-1);for(var z=y;z<=p;z++){var A=b.pages[z],f=A==b.currentPage?e:null;if(null==f){var f=b.createTemporaryGraph(e.stylesheet),m=!0,y=!1,K=null,G=null;null==A.viewState&&null==A.root&&b.updatePageRoot(A);null!=A.viewState&&(m=A.viewState.pageVisible,y=A.viewState.mathEnabled,K=A.viewState.background,G=A.viewState.backgroundImage,f.extFonts=A.viewState.extFonts);
-f.background=K;f.backgroundImage=null!=G?new mxImage(G.src,G.width,G.height):null;f.pageVisible=m;f.mathEnabled=y;var O=f.getGlobalVariable;f.getGlobalVariable=function(d){return"page"==d?A.getName():"pagenumber"==d?z+1:"pagecount"==d?null!=b.pages?b.pages.length:1:O.apply(this,arguments)};document.body.appendChild(f.container);b.updatePageRoot(A);f.model.setRoot(A.root)}t=c(f,t,z!=p);f!=e&&f.container.parentNode.removeChild(f.container)}}else t=c(e);null==t?b.handleError({message:mxResources.get("errorUpdatingPreview")}):
-(t.mathEnabled&&(p=t.wnd.document,d&&(t.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&d&&PrintDialog.printPreview(t));null!=k&&(e.stylesheet=k,e.refresh())}}var e=b.editor.graph,k=document.createElement("div"),f=document.createElement("h3");f.style.width="100%";f.style.textAlign="center";f.style.marginTop="0px";mxUtils.write(f,d||mxResources.get("print"));k.appendChild(f);var m=1,l=1,p=
-document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var v=document.createElement("input");v.style.cssText="margin-right:8px;margin-bottom:8px;";v.setAttribute("value","all");v.setAttribute("type","radio");v.setAttribute("name","pages-printdialog");p.appendChild(v);f=document.createElement("span");mxUtils.write(f,mxResources.get("printAllPages"));p.appendChild(f);mxUtils.br(p);var t=v.cloneNode(!0);v.setAttribute("checked","checked");
-t.setAttribute("value","range");p.appendChild(t);f=document.createElement("span");mxUtils.write(f,mxResources.get("pages")+":");p.appendChild(f);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","1");n.setAttribute("type","number");n.setAttribute("min","1");n.style.width="50px";p.appendChild(n);f=document.createElement("span");mxUtils.write(f,mxResources.get("to"));p.appendChild(f);var u=n.cloneNode(!0);p.appendChild(u);mxEvent.addListener(n,"focus",
-function(){t.checked=!0});mxEvent.addListener(u,"focus",function(){t.checked=!0});mxEvent.addListener(n,"change",c);mxEvent.addListener(u,"change",c);if(null!=b.pages&&(m=b.pages.length,null!=b.currentPage))for(f=0;f<b.pages.length;f++)if(b.currentPage==b.pages[f]){l=f+1;n.value=l;u.value=l;break}n.setAttribute("max",m);u.setAttribute("max",m);b.isPagesEnabled()?1<m&&(k.appendChild(p),t.checked=!0):t.checked=!0;var y=document.createElement("div");y.style.marginBottom="10px";var z=document.createElement("input");
-z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");y.appendChild(z);f=document.createElement("span");mxUtils.write(f,mxResources.get("adjustTo"));y.appendChild(f);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width="50px";y.appendChild(x);mxEvent.addListener(x,"focus",function(){z.checked=!0});k.appendChild(y);var p=p.cloneNode(!1),q=z.cloneNode(!0);q.setAttribute("value",
-"fit");z.setAttribute("checked","checked");f=document.createElement("div");f.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";f.appendChild(q);p.appendChild(f);y=document.createElement("table");y.style.display="inline-block";var A=document.createElement("tbody"),K=document.createElement("tr"),G=K.cloneNode(!0),O=document.createElement("td"),M=O.cloneNode(!0),I=O.cloneNode(!0),F=O.cloneNode(!0),E=O.cloneNode(!0),D=O.cloneNode(!0);O.style.textAlign="right";F.style.textAlign=
-"right";mxUtils.write(O,mxResources.get("fitTo"));var L=document.createElement("input");L.style.cssText="margin:0 8px 0 8px;";L.setAttribute("value","1");L.setAttribute("min","1");L.setAttribute("type","number");L.style.width="40px";M.appendChild(L);f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsAcross"));I.appendChild(f);mxUtils.write(F,mxResources.get("fitToBy"));var C=L.cloneNode(!0);E.appendChild(C);mxEvent.addListener(L,"focus",function(){q.checked=!0});mxEvent.addListener(C,
-"focus",function(){q.checked=!0});f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsDown"));D.appendChild(f);K.appendChild(O);K.appendChild(M);K.appendChild(I);G.appendChild(F);G.appendChild(E);G.appendChild(D);A.appendChild(K);A.appendChild(G);y.appendChild(A);p.appendChild(y);k.appendChild(p);p=document.createElement("div");f=document.createElement("div");f.style.fontWeight="bold";f.style.marginBottom="12px";mxUtils.write(f,mxResources.get("paperSize"));p.appendChild(f);
-f=document.createElement("div");f.style.marginBottom="12px";var H=PageSetupDialog.addPageFormatPanel(f,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(f);f=document.createElement("span");mxUtils.write(f,mxResources.get("pageScale"));p.appendChild(f);var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";S.setAttribute("value","100 %");S.style.width="60px";p.appendChild(S);k.appendChild(p);f=document.createElement("div");f.style.cssText=
-"text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";b.editor.cancelFirst&&f.appendChild(p);b.isOffline()||(y=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),y.className="geBtn",f.appendChild(y));PrintDialog.previewEnabled&&(y=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();g(!1)}),y.className="geBtn",f.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?
-"print":"ok"),function(){b.hideDialog();g(!0)});y.className="geBtn gePrimaryBtn";f.appendChild(y);b.editor.cancelFirst||f.appendChild(p);k.appendChild(f);this.container=k};var ma=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 b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&
-(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}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 ma.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 ba=document.createElement("canvas"),S=new Image;S.onload=function(){try{ba.getContext("2d").drawImage(S,0,0);var b=ba.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=b&&6<b.length}catch(C){}};S.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(x){}})();
+arguments)}}return b};var G=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){G.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,b.text,b.secondLabel,b.control]};var I=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){I.apply(this,arguments);this.enumerationState=0};var L=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=
+function(b){null!=b.shape&&this.redrawEnumerationState(b);return L.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(b){b=mxUtils.getValue(b.style,"enumerateValue","");""==b&&(b=++this.enumerationState);return'<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(b)+"</div>"};mxGraphView.prototype.redrawEnumerationState=function(b){var d="1"==mxUtils.getValue(b.style,"enumerate",0);d&&null==b.secondLabel?(b.secondLabel=
+new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),b.secondLabel.size=12,b.secondLabel.state=b,b.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,this.graph.cellRenderer.initializeLabel(b,b.secondLabel)):d||null==b.secondLabel||(b.secondLabel.destroy(),b.secondLabel=null);d=b.secondLabel;if(null!=d){var c=b.view.scale,g=this.createEnumerationValue(b);b=this.graph.model.isVertex(b.cell)?new mxRectangle(b.x+b.width-4*c,b.y+4*c,0,0):mxRectangle.fromPoint(b.view.getPoint(b));
+d.bounds.equals(b)&&d.value==g&&d.scale==c||(d.bounds=b,d.value=g,d.scale=c,d.redraw())}};var M=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){M.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||
+this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};
+var K=Graph.prototype.refresh;Graph.prototype.refresh=function(){K.apply(this,arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var O=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){O.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==
+b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var c=!1,g=0,e=0,k=mxUtils.bind(this,function(){c||
+(c=!0,this.model.beginUpdate())}),f=mxUtils.bind(this,function(){c&&(c=!1,this.model.endUpdate())}),m=mxUtils.bind(this,function(){0<g&&g--;0==g&&l()}),l=mxUtils.bind(this,function(){if(e<b.length){var c=this.stoppingCustomActions,p=b[e++],v=[];if(null!=p.open)if(f(),this.isCustomLink(p.open)){if(!this.customLinkClicked(p.open))return}else this.openLink(p.open);null==p.wait||c||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;m()}),
+g++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=p.wait?parseInt(p.wait):1E3),f());null!=p.opacity&&null!=p.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(p.opacity,!0)),p.opacity.value);null!=p.fadeIn&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeIn,!0)),0,1,m,c?0:p.fadeIn.delay));null!=p.fadeOut&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeOut,!0)),1,0,m,c?0:p.fadeOut.delay));
+null!=p.wipeIn&&(v=v.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeIn,!0),!0)));null!=p.wipeOut&&(v=v.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeOut,!0),!1)));null!=p.toggle&&(k(),this.toggleCells(this.getCellsForAction(p.toggle,!0)));if(null!=p.show){k();var n=this.getCellsForAction(p.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(n),1);this.setCellsVisible(n,!0)}null!=p.hide&&(k(),n=this.getCellsForAction(p.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(n),
+0),this.setCellsVisible(n,!1));null!=p.toggleStyle&&null!=p.toggleStyle.key&&(k(),this.toggleCellStyles(p.toggleStyle.key,null!=p.toggleStyle.defaultValue?p.toggleStyle.defaultValue:"0",this.getCellsForAction(p.toggleStyle,!0)));null!=p.style&&null!=p.style.key&&(k(),this.setCellStyles(p.style.key,p.style.value,this.getCellsForAction(p.style,!0)));n=[];null!=p.select&&this.isEnabled()&&(n=this.getCellsForAction(p.select),this.setSelectionCells(n));null!=p.highlight&&(n=this.getCellsForAction(p.highlight),
+this.highlightCells(n,p.highlight.color,p.highlight.duration,p.highlight.opacity));null!=p.scroll&&(n=this.getCellsForAction(p.scroll));null!=p.viewbox&&this.fitWindow(p.viewbox,p.viewbox.border);0<n.length&&this.scrollCellToVisible(n[0]);if(null!=p.tags){n=[];null!=p.tags.hidden&&(n=n.concat(p.tags.hidden));if(null!=p.tags.visible)for(var t=this.getAllTags(),u=0;u<t.length;u++)0>mxUtils.indexOf(p.tags.visible,t[u])&&0>mxUtils.indexOf(n,t[u])&&n.push(t[u]);this.hiddenTags=n;this.refresh()}0<v.length&&
+(g++,this.executeAnimations(v,m,c?1:p.steps,c?0:p.delay));0==g?l():f()}else this.stoppingCustomActions=this.executingCustomActions=!1,f(),null!=d&&d()});l()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,d){var c=this.getLinkForCell(d);null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(d,this.updateCustomLink(b,c));if(this.isHtmlLabel(d)){var g=document.createElement("div");g.innerHTML=this.sanitizeHtml(this.getLabel(d));for(var e=g.getElementsByTagName("a"),k=!1,f=0;f<
+e.length;f++)c=e[f].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(e[f].setAttribute("href",this.updateCustomLink(b,c)),k=!0);k&&this.labelChanged(d,g.innerHTML)}};Graph.prototype.updateCustomLink=function(b,d){if("data:action/json,"==d.substring(0,17))try{var c=JSON.parse(d.substring(17));null!=c.actions&&(this.updateCustomLinkActions(b,c.actions),d="data:action/json,"+JSON.stringify(c))}catch(W){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<
+d.length;c++){var g=d[c],e;for(e in g)this.updateCustomLinkAction(b,g[e],"cells"),this.updateCustomLinkAction(b,g[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,d,c){if(null!=d&&null!=d[c]){for(var g=[],e=0;e<d[c].length;e++)if("*"==d[c][e])g.push(d[c][e]);else{var k=b[d[c][e]];null!=k?""!=k&&g.push(k):g.push(d[c][e])}d[c]=g}};Graph.prototype.getCellsForAction=function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var g=
+[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&g.push(c[e]);c=g}return c};Graph.prototype.getCellsById=function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==b[c])var g=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=g},g));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var U=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return U.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};
+Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,g){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());for(var k=0,f={},m=0;m<b.length;m++)0<b[m].length&&(f[b[m]]=!0,k++);for(m=0;m<d.length;m++)if(c&&this.model.getParent(d[m])==
+this.model.root||this.model.isVertex(d[m])||this.model.isEdge(d[m])){var l=this.getTagsForCell(d[m]),p=!1;if(0<l.length&&(l=l.split(" "),l.length>=b.length)){for(var v=p=0;v<l.length&&p<k;v++)null!=f[l[v]]&&p++;p=p==k}p&&(1!=g||this.isCellVisible(d[m]))&&e.push(d[m])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var d=null,c=[],g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]),
+c=[];if(0<e.length){for(var e=e.split(" "),k={},f=0;f<e.length;f++)if(null==d||null!=d[e[f]])k[e[f]]=!0,c.push(e[f]);d=k}else return[]}return c};Graph.prototype.getTagsForCells=function(b){for(var d=[],c={},g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]);if(0<e.length)for(var e=e.split(" "),k=0;k<e.length;k++)null==c[e[k]]&&(c[e[k]]=!0,d.push(e[k]))}return d};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,d){if(0<
+b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){for(var g=this.getTagsForCell(b[c]),e=g.split(" "),k=!1,f=0;f<d.length;f++){var m=mxUtils.trim(d[f]);""!=m&&0>mxUtils.indexOf(e,m)&&(g=0<g.length?g+" "+m:m,k=!0)}k&&this.setAttributeForCell(b[c],"tags",g)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var g=this.getTagsForCell(b[c]);if(0<g.length){for(var e=
+g.split(" "),k=!1,f=0;f<d.length;f++){var m=mxUtils.indexOf(e,d[f]);0<=m&&(e.splice(m,1),k=!0)}k&&this.setAttributeForCell(b[c],"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=function(b){this.model.beginUpdate();try{for(var d=0;d<b.length;d++)this.model.setVisible(b[d],!this.model.isVisible(b[d]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,d){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],d)}finally{this.model.endUpdate()}};
+Graph.prototype.highlightCells=function(b,d,c,g){for(var e=0;e<b.length;e++)this.highlightCell(b[e],d,c,g)};Graph.prototype.highlightCell=function(b,d,c,g){d=null!=d?d:mxConstants.DEFAULT_VALID_COLOR;c=null!=c?c:1E3;b=this.view.getState(b);if(null!=b){var e=Math.max(5,mxUtils.getValue(b.style,mxConstants.STYLE_STROKEWIDTH,1)+4),k=new mxCellHighlight(this,d,e,!1);null!=g&&(k.opacity=g);k.highlight(b);window.setTimeout(function(){null!=k.shape&&(mxUtils.setPrefixedStyle(k.shape.node.style,"transition",
+"all 1200ms ease-in-out"),k.shape.node.style.opacity=0);window.setTimeout(function(){k.destroy()},1200)},c)}};Graph.prototype.addSvgShadow=function(b,d,c,g){c=null!=c?c:!1;g=null!=g?g:!0;var e=b.ownerDocument,k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");k.setAttribute("id",this.shadowId);var f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");f.setAttribute("in","SourceAlpha");f.setAttribute("stdDeviation",
+this.svgShadowBlur);f.setAttribute("result","blur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");f.setAttribute("in","blur");f.setAttribute("dx",this.svgShadowSize);f.setAttribute("dy",this.svgShadowSize);f.setAttribute("result","offsetBlur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");f.setAttribute("flood-color",this.svgShadowColor);f.setAttribute("flood-opacity",
+this.svgShadowOpacity);f.setAttribute("result","offsetColor");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");f.setAttribute("in","offsetColor");f.setAttribute("in2","offsetBlur");f.setAttribute("operator","in");f.setAttribute("result","offsetBlur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");f.setAttribute("in","SourceGraphic");f.setAttribute("in2",
+"offsetBlur");k.appendChild(f);f=b.getElementsByTagName("defs");0==f.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=b.firstChild?b.insertBefore(e,b.firstChild):b.appendChild(e)):e=f[0];e.appendChild(k);c||(d=null!=d?d:b.getElementsByTagName("g")[0],null!=d&&(d.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(b.getAttribute("width")))&&g&&(b.setAttribute("width",parseInt(b.getAttribute("width"))+6),b.setAttribute("height",
+parseInt(b.getAttribute("height"))+6),d=b.getAttribute("viewBox"),null!=d&&0<d.length&&(d=d.split(" "),3<d.length&&(w=parseFloat(d[2])+6,h=parseFloat(d[3])+6,b.setAttribute("viewBox",d[0]+" "+d[1]+" "+w+" "+h))))));return k};Graph.prototype.setShadowVisible=function(b,d){mxClient.IS_SVG&&!mxClient.IS_SF&&(d=null!=d?d:!0,(this.shadowVisible=b)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),d&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};
+Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var b=this.model.getChildCount(this.model.root),d,c=0;do d=this.model.getChildAt(this.model.root,c);while(c++<b&&"1"==mxUtils.getValue(this.getCellStyle(d),"locked","0"));null!=d&&this.setDefaultParent(d)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+
+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.bpmn2=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.c4=[SHAPES_PATH+"/mxC4.js"];mxStencilRegistry.libraries.cisco19=[SHAPES_PATH+"/mxCisco19.js",STENCIL_PATH+"/cisco19.xml"];mxStencilRegistry.libraries.cisco_safe=[SHAPES_PATH+"/mxCiscoSafe.js",STENCIL_PATH+"/cisco_safe/architecture.xml",
+STENCIL_PATH+"/cisco_safe/business_icons.xml",STENCIL_PATH+"/cisco_safe/capability.xml",STENCIL_PATH+"/cisco_safe/design.xml",STENCIL_PATH+"/cisco_safe/iot_things_icons.xml",STENCIL_PATH+"/cisco_safe/people_places_things_icons.xml",STENCIL_PATH+"/cisco_safe/security_icons.xml",STENCIL_PATH+"/cisco_safe/technology_icons.xml",STENCIL_PATH+"/cisco_safe/threat.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.kubernetes=
+[SHAPES_PATH+"/mxKubernetes.js",STENCIL_PATH+"/kubernetes.xml"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"];
+mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui=[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]=
+[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/miscellaneous"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/miscellaneous.xml"];mxStencilRegistry.libraries["electrical/signal_sources"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/signal_sources.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries.infographic=
+[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]=[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];
+mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]=[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",SHAPES_PATH+
+"/mxBasic.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.ibm=[SHAPES_PATH+"/mxIBM.js",STENCIL_PATH+"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=
+[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",
+STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+
+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var X=mxMarker.createMarker;mxMarker.createMarker=function(b,d,c,g,e,k,f,m,l,p){if(null!=c&&null==mxMarker.markers[c]){var v=this.getPackageForType(c);null!=v&&
+mxStencilRegistry.getStencil(v)}return X.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){u.value=Math.max(1,Math.min(m,Math.max(parseInt(u.value),parseInt(t.value))));t.value=Math.max(1,Math.min(m,Math.min(parseInt(u.value),parseInt(t.value))))}function g(d){function c(d,c,k){var f=d.useCssTransforms,m=d.currentTranslate,l=d.currentScale,p=d.view.translate,v=d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=1,
+d.view.translate=new mxPoint(0,0),d.view.scale=1);var n=d.getGraphBounds(),t=0,u=0,y=H.get(),z=1/d.pageScale,A=q.checked;if(A)var z=parseInt(L.value),K=parseInt(C.value),z=Math.min(y.height*K/(n.height/d.view.scale),y.width*z/(n.width/d.view.scale));else z=parseInt(x.value)/(100*d.pageScale),isNaN(z)&&(g=1/d.pageScale,x.value="100 %");y=mxRectangle.fromRectangle(y);y.width=Math.ceil(y.width*g);y.height=Math.ceil(y.height*g);z*=g;!A&&d.pageVisible?(n=d.getPageLayout(),t-=n.x*y.width,u-=n.y*y.height):
+A=!0;if(null==c){c=PrintDialog.createPrintPreview(d,z,y,0,t,u,A);c.pageSelector=!1;c.mathEnabled=!1;t=b.getCurrentFile();null!=t&&(c.title=t.getTitle());var G=c.writeHead;c.writeHead=function(c){G.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),c.writeln("@media print {"),c.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),c.writeln("}"),
+c.writeln("</style>"));null!=b.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(b.editor.fontCss),c.writeln("</style>"));for(var g=d.getCustomFonts(),e=0;e<g.length;e++){var k=g[e].name,f=g[e].url;Graph.isCssFontUrl(f)?c.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(f)+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(k)+'";\nsrc: url("'+mxUtils.htmlEntities(f)+'");\n}'),c.writeln("</style>"))}};
+if("undefined"!==typeof MathJax){var O=c.renderPage;c.renderPage=function(d,c,g,e,k,f){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var l=O.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}t=null;u=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(t=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),
+e.refresh());c.open(null,null,k,!0);e.enableFlowAnimation=u;null!=t&&(e.stylesheet=t,e.refresh())}else{y=d.background;if(null==y||""==y||y==mxConstants.NONE)y="#ffffff";c.backgroundColor=y;c.autoOrigin=A;c.appendGraph(d,z,t,u,k,!0);k=d.getCustomFonts();if(null!=c.wnd)for(t=0;t<k.length;t++)u=k[t].name,A=k[t].url,Graph.isCssFontUrl(A)?c.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(A)+'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),
+c.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(u)+'";\nsrc: url("'+mxUtils.htmlEntities(A)+'");\n}'),c.wnd.document.writeln("</style>"))}f&&(d.useCssTransforms=f,d.currentTranslate=m,d.currentScale=l,d.view.translate=p,d.view.scale=v);return c}var g=parseInt(S.value)/100;isNaN(g)&&(g=1,S.value="100 %");var g=.75*g,k=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(k=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var f=t.value,m=u.value,p=!v.checked,
+n=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,v.checked,f,m,q.checked,L.value,C.value,parseInt(x.value)/100,parseInt(S.value)/100,H.get());else{p&&(p=f==l&&m==l);if(!p&&null!=b.pages&&b.pages.length){var y=0,p=b.pages.length-1;v.checked||(y=parseInt(f)-1,p=parseInt(m)-1);for(var z=y;z<=p;z++){var A=b.pages[z],f=A==b.currentPage?e:null;if(null==f){var f=b.createTemporaryGraph(e.stylesheet),m=!0,y=!1,K=null,G=null;null==A.viewState&&null==A.root&&b.updatePageRoot(A);null!=A.viewState&&
+(m=A.viewState.pageVisible,y=A.viewState.mathEnabled,K=A.viewState.background,G=A.viewState.backgroundImage,f.extFonts=A.viewState.extFonts);f.background=K;f.backgroundImage=null!=G?new mxImage(G.src,G.width,G.height):null;f.pageVisible=m;f.mathEnabled=y;var O=f.getGlobalVariable;f.getGlobalVariable=function(d){return"page"==d?A.getName():"pagenumber"==d?z+1:"pagecount"==d?null!=b.pages?b.pages.length:1:O.apply(this,arguments)};document.body.appendChild(f.container);b.updatePageRoot(A);f.model.setRoot(A.root)}n=
+c(f,n,z!=p);f!=e&&f.container.parentNode.removeChild(f.container)}}else n=c(e);null==n?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(n.mathEnabled&&(p=n.wnd.document,d&&(n.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),n.closeDocument(),!n.mathEnabled&&d&&PrintDialog.printPreview(n));null!=k&&(e.stylesheet=k,e.refresh())}}var e=b.editor.graph,k=document.createElement("div"),f=document.createElement("h3");
+f.style.width="100%";f.style.textAlign="center";f.style.marginTop="0px";mxUtils.write(f,d||mxResources.get("print"));k.appendChild(f);var m=1,l=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var v=document.createElement("input");v.style.cssText="margin-right:8px;margin-bottom:8px;";v.setAttribute("value","all");v.setAttribute("type","radio");v.setAttribute("name","pages-printdialog");p.appendChild(v);f=document.createElement("span");
+mxUtils.write(f,mxResources.get("printAllPages"));p.appendChild(f);mxUtils.br(p);var n=v.cloneNode(!0);v.setAttribute("checked","checked");n.setAttribute("value","range");p.appendChild(n);f=document.createElement("span");mxUtils.write(f,mxResources.get("pages")+":");p.appendChild(f);var t=document.createElement("input");t.style.cssText="margin:0 8px 0 8px;";t.setAttribute("value","1");t.setAttribute("type","number");t.setAttribute("min","1");t.style.width="50px";p.appendChild(t);f=document.createElement("span");
+mxUtils.write(f,mxResources.get("to"));p.appendChild(f);var u=t.cloneNode(!0);p.appendChild(u);mxEvent.addListener(t,"focus",function(){n.checked=!0});mxEvent.addListener(u,"focus",function(){n.checked=!0});mxEvent.addListener(t,"change",c);mxEvent.addListener(u,"change",c);if(null!=b.pages&&(m=b.pages.length,null!=b.currentPage))for(f=0;f<b.pages.length;f++)if(b.currentPage==b.pages[f]){l=f+1;t.value=l;u.value=l;break}t.setAttribute("max",m);u.setAttribute("max",m);b.isPagesEnabled()?1<m&&(k.appendChild(p),
+n.checked=!0):n.checked=!0;var y=document.createElement("div");y.style.marginBottom="10px";var z=document.createElement("input");z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");y.appendChild(z);f=document.createElement("span");mxUtils.write(f,mxResources.get("adjustTo"));y.appendChild(f);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width="50px";y.appendChild(x);
+mxEvent.addListener(x,"focus",function(){z.checked=!0});k.appendChild(y);var p=p.cloneNode(!1),q=z.cloneNode(!0);q.setAttribute("value","fit");z.setAttribute("checked","checked");f=document.createElement("div");f.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";f.appendChild(q);p.appendChild(f);y=document.createElement("table");y.style.display="inline-block";var A=document.createElement("tbody"),K=document.createElement("tr"),G=K.cloneNode(!0),O=document.createElement("td"),
+M=O.cloneNode(!0),I=O.cloneNode(!0),F=O.cloneNode(!0),E=O.cloneNode(!0),D=O.cloneNode(!0);O.style.textAlign="right";F.style.textAlign="right";mxUtils.write(O,mxResources.get("fitTo"));var L=document.createElement("input");L.style.cssText="margin:0 8px 0 8px;";L.setAttribute("value","1");L.setAttribute("min","1");L.setAttribute("type","number");L.style.width="40px";M.appendChild(L);f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsAcross"));I.appendChild(f);mxUtils.write(F,
+mxResources.get("fitToBy"));var C=L.cloneNode(!0);E.appendChild(C);mxEvent.addListener(L,"focus",function(){q.checked=!0});mxEvent.addListener(C,"focus",function(){q.checked=!0});f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsDown"));D.appendChild(f);K.appendChild(O);K.appendChild(M);K.appendChild(I);G.appendChild(F);G.appendChild(E);G.appendChild(D);A.appendChild(K);A.appendChild(G);y.appendChild(A);p.appendChild(y);k.appendChild(p);p=document.createElement("div");f=
+document.createElement("div");f.style.fontWeight="bold";f.style.marginBottom="12px";mxUtils.write(f,mxResources.get("paperSize"));p.appendChild(f);f=document.createElement("div");f.style.marginBottom="12px";var H=PageSetupDialog.addPageFormatPanel(f,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(f);f=document.createElement("span");mxUtils.write(f,mxResources.get("pageScale"));p.appendChild(f);var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";
+S.setAttribute("value","100 %");S.style.width="60px";p.appendChild(S);k.appendChild(p);f=document.createElement("div");f.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";b.editor.cancelFirst&&f.appendChild(p);b.isOffline()||(y=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),y.className="geBtn",f.appendChild(y));PrintDialog.previewEnabled&&(y=
+mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();g(!1)}),y.className="geBtn",f.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();g(!0)});y.className="geBtn gePrimaryBtn";f.appendChild(y);b.editor.cancelFirst||f.appendChild(p);k.appendChild(f);this.container=k};var na=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 b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}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 na.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 ca=document.createElement("canvas"),S=new Image;S.onload=function(){try{ca.getContext("2d").drawImage(S,0,0);var b=ca.toDataURL("image/png");Editor.prototype.useCanvasForExport=
+null!=b&&6<b.length}catch(C){}};S.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(x){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,e,f){f.ui=b.ui;return e};b.afterDecode=function(b,e,f){f.previousColor=f.color;f.previousImage=f.image;f.previousFormat=f.format;null!=f.foldingEnabled&&(f.foldingEnabled=!f.foldingEnabled);null!=f.mathEnabled&&(f.mathEnabled=!f.mathEnabled);null!=f.shadowVisible&&(f.shadowVisible=!f.shadowVisible);return f};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,e,f){f.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.2.7";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(b,e,f){f.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.3.0";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="1"==urlParams.dev?"/cache":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.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(b,c,g,e,f,l,n){l=null!=l?l:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -3445,19 +3451,19 @@ null!=p.viewState&&d.setBackgroundImage(p.viewState.backgroundImage);d.getGlobal
l){l=null!=l?l:!0;var d=null,k=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=c){var d=l?c.getGraphBounds():c.getBoundingBox(c.getSelectionCells()),m=c.view.scale;l=Math.floor(d.x/m-c.view.translate.x);m=Math.floor(d.y/m-c.view.translate.y);d=c.background;null==f&&(c=this.getBasenames().join(";"),0<c.length&&(k=EditorUi.drawHost+"/embed.js?s="+c));b.setAttribute("x0",l);b.setAttribute("y0",m)}null!=b&&(b.setAttribute("pan","1"),b.setAttribute("zoom","1"),b.setAttribute("resize","0"),b.setAttribute("fit",
"0"),b.setAttribute("border","20"),b.setAttribute("links","1"),null!=e&&b.setAttribute("edit",e));null!=f&&(f=f.replace(/&/g,"&amp;"));b=null!=b?Graph.zapGremlins(mxUtils.getXml(b)):"";e=Graph.compress(b);Graph.decompress(e)!=b&&(e=encodeURIComponent(b));return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=f?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==f?null!=g?"<title>"+mxUtils.htmlEntities(g)+
"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=f?'<meta http-equiv="refresh" content="0;URL=\''+f+"'\"/>\n":"")+"</head>\n<body"+(null==f&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+e+"</div>\n</div>\n"+(null==f?'<script type="text/javascript" src="'+k+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+
-f+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(b,c,e,f,m){c=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=m&&(m=m.replace(/&/g,"&amp;"));b={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(b),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(b.page=mxUtils.indexOf(this.pages,this.currentPage));
-return(null==m?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=m?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==m?null!=e?"<title>"+mxUtils.htmlEntities(e)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=m?'<meta http-equiv="refresh" content="0;URL=\''+m+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+
-mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==m?'<script type="text/javascript" src="'+c+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+m+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(b){b=this.validateFileData(b);this.pages=this.fileNode=this.currentPage=null;b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:
+f+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(b,c,g,e,f){c=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=f&&(f=f.replace(/&/g,"&amp;"));b={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(b),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(b.page=mxUtils.indexOf(this.pages,this.currentPage));
+return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=f?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==f?null!=g?"<title>"+mxUtils.htmlEntities(g)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=f?'<meta http-equiv="refresh" content="0;URL=\''+f+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+
+mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==f?'<script type="text/javascript" src="'+c+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+f+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(b){b=this.validateFileData(b);this.pages=this.fileNode=this.currentPage=null;b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:
null;var d=Editor.extractParserError(b,mxResources.get("invalidOrMissingFile"));if(d)throw Error(mxResources.get("notADiagramFile")+" ("+d+")");d=null!=b?this.editor.extractGraphModel(b,!0):null;null!=d&&(b=d);if(null!=b&&"mxfile"==b.nodeName&&(d=b.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){var c=null;this.fileNode=b;this.pages=[];for(var e=0;e<d.length;e++)null==d[e].getAttribute("id")&&d[e].setAttribute("id",e),b=new DiagramPage(d[e]),
null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[e+1])),this.pages.push(b),null!=urlParams["page-id"]&&b.getId()==urlParams["page-id"]&&(c=b);this.currentPage=null!=c?c:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];b=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=b&&(this.fileNode=b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",
[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(b);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");b={};for(e=0;e<f.length;e++)b[f[e]]=!0;for(var l=this.editor.graph.getModel(),n=l.getChildren(l.root),e=0;e<n.length;e++){var t=n[e];l.setVisible(t,b[t.id]||!1)}}catch(z){}};EditorUi.prototype.getBaseFilename=function(b){var d=this.getCurrentFile(),d=null!=d&&null!=d.getTitle()?d.getTitle():
-this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));/(\.drawio)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(b,c,e,f,m,l,n,t,z,y,q,D){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();
-var d=this.getBaseFilename("remoteSvg"==b?!1:!m),g=d+("xml"==b||"pdf"==b&&q?".drawio":"")+"."+b;if("xml"==b){var k=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,f,m,null,null,null,c);this.saveData(g,b,k,"text/xml")}else if("html"==b)k=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g,b,k,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export"))){var p,v;if("xmlpng"==b)g=d+".png";else if("jpeg"==b)g=d+".jpg";else if("remoteSvg"==
-b){g=d+".svg";b="svg";var u=parseInt(z);if(0<u){var F=this.editor.graph,M=F.getGraphBounds(),K=parseInt(t)/100;p=Math.ceil(M.width*K/F.view.scale+2*u);v=Math.ceil(M.height*K/F.view.scale+2*u)}}this.saveRequest(g,b,mxUtils.bind(this,function(d,c){try{var e=this.editor.graph.pageVisible;null!=l&&(this.editor.graph.pageVisible=l);var g=this.createDownloadRequest(d,b,f,c,n,m,t,z,y,q,D,p,v);this.editor.graph.pageVisible=e;return g}catch(J){this.handleError(J)}}))}else{var O=null,U=mxUtils.bind(this,function(b){b.length<=
-MAX_REQUEST_SIZE?this.saveData(g,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(O)}))});if("svg"==b){var X=this.editor.graph.background;if(n||X==mxConstants.NONE)X=null;var ma=this.editor.graph.getSvg(X,null,null,null,null,f);e&&this.editor.graph.addSvgShadow(ma);this.editor.convertImages(ma,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();U(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+
-"\n"+mxUtils.getXml(b))})))}else g=d+".svg",O=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();U(b)}),f)}}catch(ba){this.handleError(ba)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,f,m,l,n,t,z,y,q,D,E){var d=this.editor.graph,g=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==l?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var k="",p="";if(g.width*g.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};y=y?
-"1":"0";"pdf"==c&&(null!=q?p="&from="+q.from+"&to="+q.to:0==l&&(p="&allPages=1"));"xmlpng"==c&&(y="1",c="png");if(("xmlpng"==c||"svg"==c)&&null!=this.pages&&null!=this.currentPage)for(l=0;l<this.pages.length;l++)if(this.pages[l]==this.currentPage){k="&from="+l;break}l=d.background;"png"!=c&&"pdf"!=c&&"svg"!=c||!m?m||null!=l&&l!=mxConstants.NONE||(l="#ffffff"):l=mxConstants.NONE;m={globalVars:d.getExportVariables()};z&&(m.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});Graph.translateDiagram&&
-(m.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+k+p+"&bg="+(null!=l?l:mxConstants.NONE)+"&base64="+f+"&embedXml="+y+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(m))+(null!=n?"&scale="+n:"")+(null!=t?"&border="+t:"")+(D&&isFinite(D)?"&w="+D:"")+(E&&isFinite(E)?"&h="+E:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=
+this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));/(\.drawio)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(b,c,e,f,l,n,u,t,z,y,q,D){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();
+var d=this.getBaseFilename("remoteSvg"==b?!1:!l),g=d+("xml"==b||"pdf"==b&&q?".drawio":"")+"."+b;if("xml"==b){var k=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,f,l,null,null,null,c);this.saveData(g,b,k,"text/xml")}else if("html"==b)k=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g,b,k,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export"))){var m,p;if("xmlpng"==b)g=d+".png";else if("jpeg"==b)g=d+".jpg";else if("remoteSvg"==
+b){g=d+".svg";b="svg";var v=parseInt(z);if(0<v){var F=this.editor.graph,M=F.getGraphBounds(),K=parseInt(t)/100;m=Math.ceil(M.width*K/F.view.scale+2*v);p=Math.ceil(M.height*K/F.view.scale+2*v)}}this.saveRequest(g,b,mxUtils.bind(this,function(d,c){try{var e=this.editor.graph.pageVisible;null!=n&&(this.editor.graph.pageVisible=n);var g=this.createDownloadRequest(d,b,f,c,u,l,t,z,y,q,D,m,p);this.editor.graph.pageVisible=e;return g}catch(J){this.handleError(J)}}))}else{var O=null,U=mxUtils.bind(this,function(b){b.length<=
+MAX_REQUEST_SIZE?this.saveData(g,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(O)}))});if("svg"==b){var X=this.editor.graph.background;if(u||X==mxConstants.NONE)X=null;var na=this.editor.graph.getSvg(X,null,null,null,null,f);e&&this.editor.graph.addSvgShadow(na);this.editor.convertImages(na,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();U(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+
+"\n"+mxUtils.getXml(b))})))}else g=d+".svg",O=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();U(b)}),f)}}catch(ca){this.handleError(ca)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,f,l,n,u,t,z,y,q,D,E){var d=this.editor.graph,g=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==n?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var k="",m="";if(g.width*g.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};y=y?
+"1":"0";"pdf"==c&&(null!=q?m="&from="+q.from+"&to="+q.to:0==n&&(m="&allPages=1"));"xmlpng"==c&&(y="1",c="png");if(("xmlpng"==c||"svg"==c)&&null!=this.pages&&null!=this.currentPage)for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){k="&from="+n;break}n=d.background;"png"!=c&&"pdf"!=c&&"svg"!=c||!l?l||null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;l={globalVars:d.getExportVariables()};z&&(l.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});Graph.translateDiagram&&
+(l.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+k+m+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+f+"&embedXml="+y+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(l))+(null!=u?"&scale="+u:"")+(null!=t?"&border="+t:"")+(D&&isFinite(D)?"&w="+D:"")+(E&&isFinite(E)?"&h="+E:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=
window.location.hash,g=mxUtils.bind(this,function(e){var g=null!=b.data?b.data:"";null!=e&&0<e.length&&(0<g.length&&(g+="\n"),g+=e);e=new LocalFile(this,"csv"!=b.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);e.getHash=function(){return d};this.fileLoaded(e);"csv"==b.format&&this.importCsv(g,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var k=
null!=b.interval?parseInt(b.interval):6E4,f=null,l=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(b){d===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),m()):this.handleError({message:mxResources.get("error")+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),m=mxUtils.bind(this,function(){window.clearTimeout(f);
f=window.setTimeout(l,k)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){m();l()}));m();l()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){g(b)}),mxUtils.bind(this,function(b){null!=e&&e(b)})):g("")};EditorUi.prototype.updateDiagram=function(b){function d(b){var d=new mxCellOverlay(b.image||f.warningImage,b.tooltip,b.align,b.valign,b.offset);d.addListener(mxEvent.CLICK,function(d,c){e.alert(b.tooltip)});return d}var c=null,
@@ -3466,12 +3472,12 @@ q[D].nodeName,0<q[D].nodeValue.length?q[D].nodeValue:null)}}catch(M){null!=windo
t.id+": "+M)}try{var A=b.getAttribute("geometry");if(null!=A){var A=JSON.parse(A),G=f.getCellGeometry(t);if(null!=G){G=G.clone();for(key in A){var I=parseFloat(A[key]);"dx"==key?G.x+=I:"dy"==key?G.y+=I:"dw"==key?G.width+=I:"dh"==key?G.height+=I:G[key]=parseFloat(A[key])}f.model.setGeometry(t,G)}}}catch(M){null!=window.console&&console.log("Error in icon for "+t.id+": "+M)}}}else if("model"==b.nodeName){for(var L=b.firstChild;null!=L&&L.nodeType!=mxConstants.NODETYPE_ELEMENT;)L=L.nextSibling;null!=
L&&(new mxCodec(b.firstChild)).decode(L,l)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(f.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(n=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):1);b=b.nextSibling}}finally{l.endUpdate()}null!=n&&this.chromelessResize&&this.chromelessResize(!0,n)}return c};
EditorUi.prototype.getCopyFilename=function(b,c){var d=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,e="",k=d.lastIndexOf(".");0<=k&&(e=d.substring(k),d=d.substring(0,k));if(c)var f=new Date,k=f.getFullYear(),l=f.getMonth()+1,n=f.getDate(),z=f.getHours(),y=f.getMinutes(),f=f.getSeconds(),d=d+(" "+(k+"-"+l+"-"+n+"-"+z+"-"+y+"-"+f));return d=mxResources.get("copyOf",[d])+e};EditorUi.prototype.fileLoaded=function(b,c){var d=this.getCurrentFile();this.fileEditable=this.fileLoadedError=
-null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=d&&(EditorUi.debug("File.closed",[d]),d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var k=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&
+null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=d&&(EditorUi.debug("File.closed",[d]),d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var f=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&
(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();c||this.showSplash()});if(null!=b)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(b);b.addListener("descriptorChanged",this.descriptorChangedListener);b.addListener("contentChanged",this.descriptorChangedListener);b.open();
delete this.openingFile;this.setGraphEnabled(!0);this.setMode(b.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();b.isEditable()?b.isModified()?(b.addUnsavedStatus(),null!=b.backupPatch&&b.patch([b.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),
-this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));e=!0;if(!this.isOffline()&&null!=b.getMode()){var f="1"==urlParams.sketch?"sketch":uiTheme;if(null==f)f="default";else if("sketch"==f||"min"==f)f+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:b.getMode().toUpperCase()+"-OPEN-FILE-"+b.getHash(),
-action:"size_"+b.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+f})}EditorUi.debug("File.opened",[b]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));if(this.editor.editable&&this.mode==b.getMode()&&b.getMode()!=App.MODE_DEVICE&&null!=b.getMode())try{this.addRecent({id:b.getHash(),title:b.getTitle(),mode:b.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=
-u;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=b?b.getHash():"none"),action:"message_"+u.message,label:"stack_"+u.stack})}catch(t){}f=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):k()});c?f():this.handleError(u,mxResources.get("errorLoadingFile"),f,!0,null,null,!0)}else k();return e};EditorUi.prototype.getHashValueForPages=
+this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));e=!0;if(!this.isOffline()&&null!=b.getMode()){var k="1"==urlParams.sketch?"sketch":uiTheme;if(null==k)k="default";else if("sketch"==k||"min"==k)k+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:b.getMode().toUpperCase()+"-OPEN-FILE-"+b.getHash(),
+action:"size_"+b.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+k})}EditorUi.debug("File.opened",[b]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));if(this.editor.editable&&this.mode==b.getMode()&&b.getMode()!=App.MODE_DEVICE&&null!=b.getMode())try{this.addRecent({id:b.getHash(),title:b.getTitle(),mode:b.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=
+u;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=b?b.getHash():"none"),action:"message_"+u.message,label:"stack_"+u.stack})}catch(t){}k=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):f()});c?k():this.handleError(u,mxResources.get("errorLoadingFile"),k,!0,null,null,!0)}else f();return e};EditorUi.prototype.getHashValueForPages=
function(b,c){var d=0,e=new mxGraphModel,f=new mxCodec;null!=c&&(c.byteCount=0,c.attrCount=0,c.eltCount=0,c.nodeCount=0);for(var k=0;k<b.length;k++){this.updatePageRoot(b[k]);var l=b[k].node.cloneNode(!1);l.removeAttribute("name");e.root=b[k].root;var n=f.encode(e);this.editor.graph.saveViewState(b[k].viewState,n,!0);n.removeAttribute("pageWidth");n.removeAttribute("pageHeight");l.appendChild(n);null!=c&&(c.eltCount+=l.getElementsByTagName("*").length,c.nodeCount+=l.getElementsByTagName("mxCell").length);
d=(d<<5)-d+this.hashValue(l,function(b,d,c,e){return!e||"mxGeometry"!=b.nodeName&&"mxPoint"!=b.nodeName||"x"!=d&&"y"!=d&&"width"!=d&&"height"!=d?e&&"mxCell"==b.nodeName&&"previous"==d?null:c:Math.round(c)},c)<<0}return d};EditorUi.prototype.hashValue=function(b,c,e){var d=0;if(null!=b&&"object"===typeof b&&"number"===typeof b.nodeType&&"string"===typeof b.nodeName&&"function"===typeof b.getAttribute){null!=b.nodeName&&(d^=this.hashValue(b.nodeName,c,e));if(null!=b.attributes){null!=e&&(e.attrCount+=
b.attributes.length);for(var g=0;g<b.attributes.length;g++){var f=b.attributes[g].name,k=null!=c?c(b,f,b.attributes[g].value,!0):b.attributes[g].value;null!=k&&(d^=this.hashValue(f,c,e)+this.hashValue(k,c,e))}}if(null!=b.childNodes)for(g=0;g<b.childNodes.length;g++)d=(d<<5)-d+this.hashValue(b.childNodes[g],c,e)<<0}else if(null!=b&&"function"!==typeof b){b=String(b);c=0;null!=e&&(e.byteCount+=b.length);for(g=0;g<b.length;g++)c=(c<<5)-c+b.charCodeAt(g)<<0;d^=c}return d};EditorUi.prototype.descriptorChanged=
@@ -3490,100 +3496,100 @@ mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=E.getSele
"#f1f3f4",l.style.cursor="copy",E.panningManager.stop(),E.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){E.isMouseDown&&null!=E.panningManager&&null!=E.graphHandler&&(l.style.backgroundColor="",l.style.cursor="default",this.sidebar.showTooltips=!0,E.panningManager.stop(),E.graphHandler.reset(),E.isMouseDown=!1,E.autoScroll=!0,I(b),mxEvent.consume(b))}));mxEvent.addListener(l,"mouseleave",mxUtils.bind(this,function(b){E.isMouseDown&&null!=E.graphHandler.first&&(E.graphHandler.resume(),
null!=E.graphHandler.hint&&(E.graphHandler.hint.style.visibility="visible"),l.style.backgroundColor="",l.style.cursor="",E.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(l,"dragover",mxUtils.bind(this,function(b){l.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";l.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(l,"drop",mxUtils.bind(this,function(b){l.style.cursor="";l.style.backgroundColor="";0<b.dataTransfer.files.length&&
this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,e,f,m,p,n,v,t,u){if(null!=d&&"image/"==e.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,p,n),d)],d[0].vertex=!0,G(d,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:v.substring(0,v.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),
-g=null);else{var y=!1,z=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var f=Editor.extractGraphModelFromPdf(d);null!=f&&0<f.length&&(d=f)}if(null!=d)if(f=mxUtils.parseXml(d),"mxlibrary"==f.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(f.documentElement));k(m,l);c=c.concat(m);A(b);this.spinner.stop();y=!0}catch(na){}else if("mxfile"==f.documentElement.nodeName)try{for(var p=f.documentElement.getElementsByTagName("diagram"),m=0;m<p.length;m++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[m])),
-v=this.editor.graph.getBoundingBoxFromGeometry(n);G(n,new mxRectangle(0,0,v.width,v.height),b)}y=!0}catch(na){null!=window.console&&console.log("error in drop handler:",na)}y||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)});null!=u&&null!=v&&(/(\.v(dx|sdx?))($|\?)/i.test(v)||/(\.vs(x|sx?))($|\?)/i.test(v))?this.importVisio(u,function(b){z(b,"text/xml")},null,v):!this.isOffline()&&
+g=null);else{var y=!1,z=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var f=Editor.extractGraphModelFromPdf(d);null!=f&&0<f.length&&(d=f)}if(null!=d)if(f=mxUtils.parseXml(d),"mxlibrary"==f.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(f.documentElement));k(m,l);c=c.concat(m);A(b);this.spinner.stop();y=!0}catch(oa){}else if("mxfile"==f.documentElement.nodeName)try{for(var p=f.documentElement.getElementsByTagName("diagram"),m=0;m<p.length;m++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[m])),
+v=this.editor.graph.getBoundingBoxFromGeometry(n);G(n,new mxRectangle(0,0,v.width,v.height),b)}y=!0}catch(oa){null!=window.console&&console.log("error in drop handler:",oa)}y||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)});null!=u&&null!=v&&(/(\.v(dx|sdx?))($|\?)/i.test(v)||/(\.vs(x|sx?))($|\?)/i.test(v))?this.importVisio(u,function(b){z(b,"text/xml")},null,v):!this.isOffline()&&
(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,v)&&null!=u?this.parseFile(u,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?z(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):z(d,e)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(l,"dragleave",function(b){l.style.cursor="";l.style.backgroundColor="";b.stopPropagation();
b.preventDefault()}));q=q.cloneNode(!1);q.setAttribute("src",Editor.editImage);q.setAttribute("title",mxResources.get("edit"));n.insertBefore(q,n.firstChild);mxEvent.addListener(q,"click",N);mxEvent.addListener(l,"dblclick",function(b){mxEvent.getSource(b)==l&&N(b)});f=q.cloneNode(!1);f.setAttribute("src",Editor.plusImage);f.setAttribute("title",mxResources.get("add"));n.insertBefore(f,n.firstChild);mxEvent.addListener(f,"click",I);this.isOffline()||".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||
(f=document.createElement("span"),f.setAttribute("title",mxResources.get("help")),f.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(f,"?"),mxEvent.addGestureListeners(f,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),n.insertBefore(f,n.firstChild))}p.appendChild(n);p.style.paddingRight=18*n.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(b,c){for(var d=0;d<b.length;d++){var e=b[d],
f=e.data;if(null!=f){var f=this.convertDataUri(f),k="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==e.aspect&&(k+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(k+"image="+f,e.w,e.h,"",e.title||"",!1,null,!0))}else null!=e.xml&&(f=this.stringToCells(Graph.decompress(e.xml)),0<f.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(f,e.w,e.h,e.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(b){return null!=b?b[mxLanguage]||
b.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=
41,EditorUi.prototype.toolbarHeight=38):Editor.isDarkMode()&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor=Editor.darkColor,Format.inactiveTabBackgroundColor="black",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.shapeBackgroundColor=Editor.darkColor,Graph.prototype.shapeForegroundColor=Editor.lightColor,Graph.prototype.defaultPageBackgroundColor=Editor.darkColor,Graph.prototype.defaultPageBorderColor="#505759",BaseFormatPanel.prototype.buttonBackgroundColor=
-Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource="https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter";Editor.sketchFonts=[{fontFamily:Editor.sketchFontFamily,fontUrl:decodeURIComponent(Editor.sketchFontSource)},{fontFamily:"Rock Salt",fontUrl:"https://fonts.googleapis.com/css?family=Rock+Salt"},
-{fontFamily:"Permanent Marker",fontUrl:"https://fonts.googleapis.com/css?family=Permanent+Marker"}];"1"==urlParams.sketch&&("undefined"!==typeof Menus&&(Menus.prototype.defaultFonts=Menus.prototype.defaultFonts.concat(Editor.sketchFonts)),Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle={edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=
-".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(b,c,e,f,l,n,u){b=new ImageDialog(this,b,c,e,f,l,n,u);this.showDialog(b.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=
-function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,d){if(!d){var c=new ChangePageSetup(this,null,b);c.ignoreColor=!0;this.editor.graph.model.execute(c)}});var d=new BackgroundImageDialog(this,b,c);this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(b,c,e,f,l){b=new LibraryDialog(this,b,c,e,f,l);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};
-var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var d=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";
-c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var e=c.getElementsByTagName("span")[0];e.style.fontSize="18px";e.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};
-EditorUi.prototype.handleError=function(b,c,e,f,l,n,u){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{u?null!=window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(H){}if(null!=g||null!=c){u=mxUtils.htmlEntities(mxResources.get("unknownError"));var k=
-mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=g){null!=g.retry&&(k=mxResources.get("cancel"),m=function(){d();g.retry()});if(404==g.code||404==g.status||403==g.code){u=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=l?l:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var p=null!=
-l?null:null!=n?n:window.location.hash;if(null!=p&&("#G"==p.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==p.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==g.code||404==g.status)){p="#U"==p.substring(0,2)?p.substring(45,p.lastIndexOf("%26ex")):p.substring(2);this.showError(c,u,mxResources.get("openInNewWindow"),
-mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+p);this.handleError(b,c,e,f,l)}),m,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){g.innerHTML="";for(var b=0;b<d.length;b++){var c=document.createElement("option");mxUtils.write(c,d[b].displayName);c.value=b;g.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(c,"<"+d[b].email+">");c.setAttribute("disabled","disabled");g.appendChild(c)}c=
-document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=d.length;g.appendChild(c)}var d=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+": ");c.appendChild(e);var g=document.createElement("select");g.style.width="200px";b();mxEvent.addListener(g,"change",mxUtils.bind(this,function(){var c=g.value,e=d.length!=c;e&&this.drive.setUser(d[c]);this.drive.authorize(e,
-mxUtils.bind(this,function(){e||(d=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));c.appendChild(g);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=e&&e()}),480,150);return}}null!=g.message?u=""==g.message&&null!=g.name?mxUtils.htmlEntities(g.name):mxUtils.htmlEntities(g.message):
-null!=g.response&&null!=g.response.error?u=mxUtils.htmlEntities(g.response.error):"undefined"!==typeof window.App&&(g.code==App.ERROR_TIMEOUT?u=mxUtils.htmlEntities(mxResources.get("timeout")):g.code==App.ERROR_BUSY?u=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof g&&0<g.length&&(u=mxUtils.htmlEntities(g)))}var v=n=null;null!=g&&null!=g.helpLink?(n=mxResources.get("help"),v=mxUtils.bind(this,function(){return this.editor.graph.openLink(g.helpLink)})):null!=g&&null!=g.ownerEmail&&
-(n=mxResources.get("contactOwner"),u+=mxUtils.htmlEntities(" ("+n+": "+g.ownerEmail+")"),v=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(g.ownerEmail))}));this.showError(c,u,k,e,m,null,null,n,v,null,null,null,f?e:null)}else null!=e&&e()};EditorUi.prototype.alert=function(b,c,e){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,e||340,100,!0,!1);b.init()};EditorUi.prototype.confirm=function(b,c,e,f,l,n){var d=null!=this.spinner&&null!=
-this.spinner.pause?this.spinner.pause():function(){},g=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){d();null!=c&&c()},function(){d();null!=e&&e()},f,l,null,null,null,null,g);this.showDialog(b.container,340,46+g,!0,n);b.init()};EditorUi.prototype.showBanner=function(b,c,e,f){var d=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+b])){var g=document.createElement("div");g.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+
-mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(g.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(g.style,"transition","all 1s ease");g.className="geBtn gePrimaryBtn";d=document.createElement("img");d.setAttribute("src",IMAGE_PATH+"/logo.png");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";g.appendChild(d);
-d=document.createElement("img");d.setAttribute("src",Dialog.prototype.closeImage);d.setAttribute("title",mxResources.get(f?"doNotShowAgain":"close"));d.setAttribute("border","0");d.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";g.appendChild(d);mxUtils.write(g,c);document.body.appendChild(g);this.bannerShowing=!0;c=document.createElement("div");c.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var k=document.createElement("input");
-k.setAttribute("type","checkbox");k.setAttribute("id","geDoNotShowAgainCheckbox");k.style.marginRight="6px";if(!f){c.appendChild(k);var l=document.createElement("label");l.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(l,mxResources.get("doNotShowAgain"));c.appendChild(l);g.style.paddingBottom="30px";g.appendChild(c)}var p=mxUtils.bind(this,function(){null!=g.parentNode&&(g.parentNode.removeChild(g),this.bannerShowing=!1,k.checked||f)&&(this["hideBanner"+b]=!0,isLocalStorage&&null!=
-mxSettings.settings&&(mxSettings.settings["close"+b]=Date.now(),mxSettings.save()))});mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){mxEvent.consume(b);p()}));var n=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){p()}),1E3)});mxEvent.addListener(g,"click",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);d!=k&&d!=l?(null!=e&&e(),p(),mxEvent.consume(b)):n()}));window.setTimeout(mxUtils.bind(this,
-function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(n,3E4);d=!0}return d};EditorUi.prototype.setCurrentFile=function(b){null!=b&&(b.opened=new Date);this.currentFile=b};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(b,c,e,f){b=b.toDataURL("image/"+e);if(null!=b&&6<b.length)null!=c&&(b=Editor.writeGraphModelToPng(b,
-"tEXt","mxfile",encodeURIComponent(c))),0<f&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",f));else throw{message:mxResources.get("unknownError")};return b};EditorUi.prototype.saveCanvas=function(b,c,e,f,l){var d="jpeg"==e?"jpg":e;f=this.getBaseFilename(f)+(null!=c?".drawio":"")+"."+d;b=this.createImageDataUri(b,c,e,l);this.saveData(f,d,b.substring(b.lastIndexOf(",")+1),"image/"+e,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&
-"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var d=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));d.textarea.style.width="600px";d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,e,f,
-l,n){"text/xml"!=e||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=n?n:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=f?this.base64ToBlob(b,e):new Blob([b],{type:e}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)e=window.open("about:blank","_blank"),null==e?mxUtils.popup(b,!0):(e.document.write(b),e.document.close(),e.document.execCommand("SaveAs",!0,c),e.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||
-null==e||"image/"!=e.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,e,f);else{var d=document.createElement("a");n=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);n=65==(g?parseInt(g[2],10):!1)?!1:n}if(n||this.isOffline()){d.href=URL.createObjectURL(f?this.base64ToBlob(b,e):new Blob([b],{type:e}));n?d.download=c:d.setAttribute("target",
-"_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(z){}}else this.createEchoRequest(b,c,e,f,l).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,e,f,l,n){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,b+(null!=e?"&mime="+e:"")+(null!=l?"&format="+l:"")+(null!=n?"&base64="+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=
-function(b,c){c=c||"";for(var d=atob(b),e=d.length,f=Math.ceil(e/1024),k=Array(f),l=0;l<f;++l){for(var n=1024*l,q=Math.min(n+1024,e),y=Array(q-n),F=0;n<q;++F,++n)y[F]=d[n].charCodeAt(0);k[l]=new Uint8Array(y)}return new Blob(k,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,e,f,l,n,u,t){n=null!=n?n:!1;u=null!=u?u:"vsdx"!=l&&(!mxClient.IS_IOS||!navigator.standalone);l=this.getServiceCount(n);isLocalStorage&&l++;var d=4>=l?2:6<l?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(d,c){try{if("_blank"==
-c)if(null!=e&&"image/"==e.substring(0,6))this.openInNewWindow(b,e,f);else if(null!=e&&"text/html"==e.substring(0,9)){var g=new EmbedDialog(this,b);this.showDialog(g.container,450,240,!0,!0);g.init()}else{var k=window.open("about:blank");null==k?mxUtils.popup(b,!0):(k.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),k.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,f,null,t):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(g){try{this.exportFile(b,
-d,e,f,c,g)}catch(N){this.handleError(N)}}))}catch(H){this.handleError(H)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,u,null,1<l,d,b,e,f);n=this.isServices(l)?l>d?390:270:160;this.showDialog(c.container,420,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(b,c,e){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?d.document.write("<html>"+
-b+"</html>"):(b=e?b:btoa(unescape(encodeURIComponent(b))),d.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):d.document.write("<html><pre>"+mxUtils.htmlEntities(b,!1)+"</pre></html>"),d.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};
-EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var d=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",
-this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height="auto",this.tagsComponent.div.style.position="fixed",this.tagsComponent.div.style.fontFamily=Editor.defaultHtmlFont,mxClient.IS_IE||mxClient.IS_IE11?(this.tagsComponent.div.style.backgroundColor="#ffffff",this.tagsComponent.div.style.border="2px solid black",this.tagsComponent.div.style.color=
-"#000000"):(this.tagsComponent.div.style.backgroundColor="#000000",this.tagsComponent.div.style.color="#ffffff",mxUtils.setOpacity(this.tagsComponent.div,80)));if(null!=this.tagsDialog)this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null;else{this.tagsDialog=this.tagsComponent.div;mxEvent.addListener(this.tagsDialog,"mouseleave",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));var c=d.getBoundingClientRect();
-this.tagsDialog.style.left=c.left+"px";this.tagsDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=c.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(b)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,
-mxUtils.bind(this,function(){var b=this.editor.graph.getAllTags();d.style.display=0<b.length?"":"none"}))}f.apply(this,arguments);this.editor.addListener("tagsDialogShown",mxUtils.bind(this,function(){null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));this.editor.addListener("layersDialogShown",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));this.editor.addListener("pageSelected",
-mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));mxEvent.addListener(this.editor.graph.container,"click",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),
-this.layersDialog=null)}));if(this.isExportToCanvas()&&this.isChromelessImageExportEnabled()){this.exportDialog=null;var c=b(mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",d);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)d.apply(this);else{this.exportDialog=document.createElement("div");var e=c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,
-"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily=Editor.defaultHtmlFont;this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=e.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
-this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=e.zIndex;var g=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(b){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(b,
-null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));b.setAttribute("border","0");b.setAttribute("src",c);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,
-function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,e,f,l){this.isLocalFileSave()?this.saveLocalFile(e,b,f,l,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,d){return this.createEchoRequest(e,b,f,l,c,d)}),e,l,f)};EditorUi.prototype.saveRequest=
-function(b,c,e,f,l,n,u){u=null!=u?u:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);isLocalStorage&&d++;var g=4>=d?2:6<d?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){if("_blank"==d||null!=b&&0<b.length){var g=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":
-"image/"+c;if(null!=f)try{this.exportFile(f,b,n,!0,d,e)}catch(H){this.handleError(H)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),b,n,!0,d,e)}catch(H){this.handleError(H)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),
-mxResources.get("saveAs"),mxResources.get("download"),!1,!1,u,null,1<d,g,f,n,l);d=this.isServices(d)?4<d?390:270:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,f,l,n){};EditorUi.prototype.pickFolder=function(b,c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,f,l,n,u,t,q,y,F,D,E,H){if(this.spinner.spin(document.body,
-mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var g=c?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==c&&(g=F?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var k=this.editor.graph.getSvg(g,b,u,t,null,e,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,F,D);f&&this.editor.graph.addSvgShadow(k);var m=this.getBaseFilename()+(l?".drawio":"")+".svg";H=null!=H?H:mxUtils.bind(this,function(b){this.isLocalFileSave()||
-b.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var p=mxUtils.bind(this,function(b){this.spinner.stop();l&&b.setAttribute("content",this.getFileData(!0,null,null,null,e,q,null,null,null,!1));H(Graph.xmlDeclaration+"\n"+(l?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(k);
-var v=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,p,this.thumbImageCache)):p(b)});E?this.embedFonts(k,v):(this.editor.addFontCss(k),v(k))}catch(K){this.handleError(K)}};EditorUi.prototype.addRadiobox=function(b,c,e,f,l,n,u){return this.addCheckbox(b,e,f,l,n,u,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,e,f,l,n,u,t){n=null!=n?n:!0;var d=document.createElement("input");d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",
-u?"radio":"checkbox");u="geCheckbox-"+Editor.guid();d.id=u;null!=t&&d.setAttribute("name",t);e&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);f&&d.setAttribute("disabled","disabled");n&&(b.appendChild(d),e=document.createElement("label"),mxUtils.write(e,c),e.setAttribute("for",u),b.appendChild(e),l||mxUtils.br(b));return d};EditorUi.prototype.addEditButton=function(b,c){var d=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);d.style.marginLeft="24px";var e=this.getCurrentFile(),
-f="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var k=document.createElement("select");k.style.maxWidth="200px";k.style.width="auto";k.style.marginLeft="8px";k.style.marginRight="10px";k.className="geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("makeCopy"));k.appendChild(e);e=document.createElement("option");e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");
-k.appendChild(e);b.appendChild(k);mxEvent.addListener(k,"change",mxUtils.bind(this,function(){if("custom"==k.value){var b=new FilenameDialog(this,f,mxResources.get("ok"),function(b){null!=b?f=b:k.value="blank"},mxResources.get("url"),null,null,null,null,function(){k.value="blank"});this.showDialog(b.container,300,80,!0,!1);b.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==c||c.checked)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")}));
-mxUtils.br(b);return{getLink:function(){return d.checked?"blank"===k.value?"_blank":f:null},getEditInput:function(){return d},getEditSelect:function(){return k}}};EditorUi.prototype.addLinkSection=function(b,c){function d(){var b=document.createElement("div");b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=k&&k!=mxConstants.NONE?(b.style.border="1px solid black",b.style.backgroundColor=k):(b.style.backgroundPosition="center center",b.style.backgroundRepeat="no-repeat",
-b.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");l.innerHTML="";l.appendChild(b)}mxUtils.write(b,mxResources.get("links")+":");var e=document.createElement("select");e.style.width="100px";e.style.padding="0px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));e.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,
-mxResources.get("openInNewWindow"));e.appendChild(f);f=document.createElement("option");f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));e.appendChild(f);c&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),e.appendChild(f));b.appendChild(e);mxUtils.write(b,mxResources.get("borderColor")+":");var k="#0000ff",l=null,l=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(k||
-"none",function(b){k=b;d()});mxEvent.consume(b)}));d();l.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";l.style.marginLeft="4px";l.style.height="22px";l.style.width="22px";l.style.position="relative";l.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";l.className="geColorBtn";b.appendChild(l);mxUtils.br(b);return{getColor:function(){return k},getTarget:function(){return e.value},focus:function(){e.focus()}}};EditorUi.prototype.createUrlParameters=function(b,c,e,f,l,n,
-u){u=null!=u?u:[];f&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||u.push("lightbox=1"),"auto"!=b&&u.push("target="+b),null!=c&&c!=mxConstants.NONE&&u.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=l&&0<l.length&&u.push("edit="+encodeURIComponent(l)),n&&u.push("layers=1"),this.editor.graph.foldingEnabled&&u.push("nav=1"));e&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&u.push("page-id="+this.currentPage.getId());return u};EditorUi.prototype.createLink=
-function(b,c,e,f,l,n,u,t,q,y){q=this.createUrlParameters(b,c,e,f,l,n,q);b=this.getCurrentFile();c=!0;null!=u?e="#U"+encodeURIComponent(u):(b=this.getCurrentFile(),t||null==b||b.constructor!=window.DriveFile?e="#R"+encodeURIComponent(e?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(e="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=this.defaultFilename&&q.push("title="+encodeURIComponent(b.getTitle()));y&&
-1<e.length&&(q.push("open="+e.substring(1)),e="");return(f&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<q.length?"?"+q.join("&"):"")+e};EditorUi.prototype.createHtml=function(b,c,e,f,l,n,u,t,q,y,F,D){this.getBasenames();var d={};""!=l&&l!=mxConstants.NONE&&(d.highlight=l);"auto"!==f&&(d.target=f);y||(d.lightbox=!1);d.nav=this.editor.graph.foldingEnabled;
-e=parseInt(e);isNaN(e)||100==e||(d.zoom=e/100);e=[];u&&(e.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(e.push("zoom"),d.resize=!0);t&&e.push("layers");q&&e.push("tags");0<e.length&&(y&&e.push("lightbox"),d.toolbar=e.join(" "));null!=F&&0<F.length&&(d.edit=F);null!=b?d.url=b:d.xml=this.getFileData(!0,null,null,null,null,!u);c='<div class="mxgraph" style="'+(n?"max-width:100%;":"")+(""!=e?"border:1px solid transparent;":
-"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';b=null!=b?"&fetch="+encodeURIComponent(b):"";D(c,'<script type="text/javascript" src="'+(0<b.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,
-c,e,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value",
-"url");l.setAttribute("type","radio");l.setAttribute("name","type-embedhtmldialog");g=l.cloneNode(!0);g.setAttribute("value","copy");k.appendChild(g);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));k.appendChild(p);mxUtils.br(k);k.appendChild(l);p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));k.appendChild(p);var n=this.getCurrentFile();null==e&&null!=n&&n.constructor==window.DriveFile&&(p=document.createElement("a"),
-p.style.paddingLeft="12px",p.style.color="gray",p.style.cursor="pointer",mxUtils.write(p,mxResources.get("share")),k.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(n.getId())})));g.setAttribute("checked","checked");null==e&&l.setAttribute("disabled","disabled");d.appendChild(k);var q=this.addLinkSection(d),D=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var E=document.createElement("input");E.setAttribute("type",
-"text");E.style.marginRight="16px";E.style.width="60px";E.style.marginLeft="4px";E.style.marginRight="12px";E.value="100%";d.appendChild(E);var H=this.addCheckbox(d,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,N=N=this.addCheckbox(d,mxResources.get("allPages"),k,!k),A=this.addCheckbox(d,mxResources.get("layers"),!0),G=this.addCheckbox(d,mxResources.get("tags"),!0),I=this.addCheckbox(d,mxResources.get("lightbox"),!0),L=this.addEditButton(d,I),M=L.getEditInput();M.style.marginBottom=
-"16px";mxEvent.addListener(I,"change",function(){I.checked?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled");M.checked&&I.checked?L.getEditSelect().removeAttribute("disabled"):L.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){f(l.checked?e:null,D.checked,E.value,q.getTarget(),q.getColor(),H.checked,N.checked,A.checked,G.checked,I.checked,L.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=
-function(b,c,e,f,l,n,u,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,b||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var k=this.getCurrentFile();b=0;if(null==k||k.constructor!=window.DriveFile||c)u=null!=u?u:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;u=null!=u?u:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";
-g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));g.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(k.getId())}));m.style.marginTop="12px";m.className="geBtn";g.appendChild(m);d.appendChild(g);m=document.createElement("a");
-m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.style.cursor="pointer";mxUtils.write(m,mxResources.get("check"));g.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,
-300,80,!0,!1);b.init()}))}))}var p=null,v=null;if(null!=e||null!=f)b+=30,mxUtils.write(d,mxResources.get("width")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.marginRight="16px",p.style.width="50px",p.style.marginLeft="6px",p.style.marginRight="16px",p.style.marginBottom="10px",p.value="100%",d.appendChild(p),mxUtils.write(d,mxResources.get("height")+":"),v=document.createElement("input"),v.setAttribute("type","text"),v.style.width="50px",v.style.marginLeft="6px",v.style.marginBottom=
-"10px",v.value=f+"px",d.appendChild(v),mxUtils.br(d);var q=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var A=null;if(null==k||k.constructor!=window.DriveFile||c)A=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var G=this.addCheckbox(d,mxResources.get("lightbox"),!0,null,null,!n),I=this.addEditButton(d,G),L=I.getEditInput();n&&(L.style.marginLeft=G.style.marginLeft,G.style.display="none",b-=20);var M=this.addCheckbox(d,mxResources.get("layers"),!0);M.style.marginLeft=L.style.marginLeft;
-M.style.marginTop="8px";var K=this.addCheckbox(d,mxResources.get("tags"),!0);K.style.marginLeft=L.style.marginLeft;K.style.marginBottom="16px";K.style.marginTop="16px";mxEvent.addListener(G,"change",function(){G.checked?(M.removeAttribute("disabled"),L.removeAttribute("disabled")):(M.setAttribute("disabled","disabled"),L.setAttribute("disabled","disabled"));L.checked&&G.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,
-d,mxUtils.bind(this,function(){l(q.getTarget(),q.getColor(),null==A?!0:A.checked,G.checked,I.getLink(),M.checked,null!=p?p.value:null,null!=v?v.value:null,K.checked)}),null,mxResources.get("create"),u,t);this.showDialog(c.container,340,300+b,!0,!0);null!=p?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)):q.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace=
-"nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(l?"10":"4")+"px";d.appendChild(g);if(l){mxUtils.write(d,mxResources.get("zoom")+":");var k=document.createElement("input");k.setAttribute("type","text");k.style.marginRight="16px";k.style.width="60px";k.style.marginLeft="4px";k.style.marginRight="12px";k.value=this.lastExportZoom||"100%";d.appendChild(k);mxUtils.write(d,mxResources.get("borderWidth")+
-":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.value=this.lastExportBorder||"0";d.appendChild(m);mxUtils.br(d)}var p=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=f?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),g=this.editor.graph,q=f?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==
-mxConstants.NONE||null==g.background);null!=q&&(q.style.marginBottom="16px");b=new CustomDialog(this,d,mxUtils.bind(this,function(){var b=parseInt(k.value)/100||1,d=parseInt(m.value)||0;e(!p.checked,null!=n?n.checked:!1,null!=q?q.checked:!1,b,d)}),null,b,c);this.showDialog(b.container,300,(l?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,e,f,l,n,u,t,q){u=null!=u?u:Editor.defaultIncludeDiagram;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph,
-k="jpeg"==t?220:300,m=document.createElement("h3");mxUtils.write(m,b);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(m);mxUtils.write(d,mxResources.get("zoom")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="12px";p.value=this.lastExportZoom||"100%";d.appendChild(p);mxUtils.write(d,mxResources.get("borderWidth")+":");var v=document.createElement("input");
-v.setAttribute("type","text");v.style.marginRight="16px";v.style.width="60px";v.style.marginLeft="4px";v.value=this.lastExportBorder||"0";d.appendChild(v);mxUtils.br(d);var A=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),z=document.createElement("input");z.style.marginTop="16px";z.style.marginRight="8px";z.style.marginLeft="24px";z.setAttribute("disabled","disabled");z.setAttribute("type","checkbox");var I=document.createElement("select");I.style.marginTop="16px";I.style.marginLeft=
-"8px";b=["selectionOnly","diagram","page"];for(var L={},m=0;m<b.length;m++)if(!g.isSelectionEmpty()||"selectionOnly"!=b[m]){var M=document.createElement("option");mxUtils.write(M,mxResources.get(b[m]));M.setAttribute("value",b[m]);I.appendChild(M);L[b[m]]=M}q?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(I),mxUtils.br(d),k+=26,mxEvent.addListener(I,"change",function(){"selectionOnly"==I.value&&(A.checked=!0)})):n&&(d.appendChild(z),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),
-k+=30,mxEvent.addListener(A,"change",function(){A.checked?z.removeAttribute("disabled"):z.setAttribute("disabled","disabled")}));g.isSelectionEmpty()?q&&(A.style.display="none",A.nextSibling.style.display="none",A.nextSibling.nextSibling.style.display="none",k-=30):(I.value="diagram",z.setAttribute("checked","checked"),z.defaultChecked=!0,mxEvent.addListener(A,"change",function(){I.value=A.checked?"selectionOnly":"diagram"}));var K=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,
-null,"jpeg"!=t),O=null;Editor.isDarkMode()&&(O=this.addCheckbox(d,mxResources.get("dark"),!0),k+=26);var U=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),X=null;if("png"==t||"jpeg"==t)X=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),k+=30;var ma=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),u,null,null,"jpeg"!=t);ma.style.marginBottom="16px";var ba=document.createElement("input");ba.style.marginBottom="16px";ba.style.marginRight=
-"8px";ba.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ba.setAttribute("disabled","disabled");var S=document.createElement("select");S.style.maxWidth="260px";S.style.marginLeft="8px";S.style.marginRight="10px";S.style.marginBottom="16px";S.className="geBtn";n=document.createElement("option");n.setAttribute("value","none");mxUtils.write(n,mxResources.get("noChange"));S.appendChild(n);n=document.createElement("option");n.setAttribute("value","embedFonts");mxUtils.write(n,
-mxResources.get("embedFonts"));S.appendChild(n);n=document.createElement("option");n.setAttribute("value","lblToSvg");mxUtils.write(n,mxResources.get("lblToSvg"));S.appendChild(n);this.isOffline()&&n.setAttribute("disabled","disabled");mxEvent.addListener(S,"change",mxUtils.bind(this,function(){"lblToSvg"==S.value?(ba.checked=!0,ba.setAttribute("disabled","disabled"),L.page.style.display="none","page"==I.value&&(I.value="diagram"),U.checked=!1,U.setAttribute("disabled","disabled"),C.style.display=
-"inline-block",x.style.display="none"):"disabled"==ba.getAttribute("disabled")&&(ba.checked=!1,ba.removeAttribute("disabled"),U.removeAttribute("disabled"),L.page.style.display="",C.style.display="none",x.style.display="")}));c&&(d.appendChild(ba),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),mxUtils.write(d,mxResources.get("txtSettings")+":"),d.appendChild(S),mxUtils.br(d),k+=60);var x=document.createElement("select");x.style.maxWidth="260px";x.style.marginLeft="8px";x.style.marginRight=
-"10px";x.className="geBtn";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));x.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));x.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));x.appendChild(c);var C=document.createElement("div");mxUtils.write(C,mxResources.get("LinksLost"));
-C.style.margin="7px";C.style.display="none";"svg"==t&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(x),d.appendChild(C),mxUtils.br(d),mxUtils.br(d),k+=50);e=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=v.value;this.lastExportZoom=p.value;l(p.value,K.checked,!A.checked,U.checked,ma.checked,ba.checked,v.value,z.checked,!1,x.value,null!=X?X.checked:null,null!=O?O.checked:null,I.value,"embedFonts"==S.value,"lblToSvg"==S.value)}),null,e,f);this.showDialog(e.container,
-340,k,!0,!0,null,null,null,null,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=c){var k=document.createElement("h3");mxUtils.write(k,c);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(k)}var m=this.addCheckbox(d,mxResources.get("fit"),
-!0),p=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),n=this.addCheckbox(d,e),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),E=this.addEditButton(d,q),H=E.getEditInput(),N=1<g.model.getChildCount(g.model.getRoot()),A=this.addCheckbox(d,mxResources.get("layers"),N,!N);A.style.marginLeft=H.style.marginLeft;A.style.marginBottom="12px";A.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(N&&A.removeAttribute("disabled"),H.removeAttribute("disabled")):
-(A.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"));H.checked&&q.checked?E.getEditSelect().removeAttribute("disabled"):E.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){b(m.checked,p.checked,n.checked,q.checked,E.getLink(),A.checked)}),null,mxResources.get("embed"),l);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,f,l,n,u,t){function d(d){var c=" ",m="";f&&(c=" 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('"+
+Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource=encodeURIComponent(STYLE_PATH+"/fonts/ArchitectsDaughter-Regular.ttf");Editor.sketchFonts=[{fontFamily:Editor.sketchFontFamily,fontUrl:decodeURIComponent(Editor.sketchFontSource)}];"1"==urlParams.sketch&&("undefined"!==typeof Menus&&(Menus.prototype.defaultFonts=Menus.prototype.defaultFonts.concat(Editor.sketchFonts)),
+Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle={edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=
+new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(b,c,e,f,l,n,u){b=new ImageDialog(this,b,c,e,f,l,n,u);this.showDialog(b.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,d){if(!d){var c=new ChangePageSetup(this,null,b);c.ignoreColor=!0;this.editor.graph.model.execute(c)}});var d=new BackgroundImageDialog(this,b,c);this.showDialog(d.container,
+360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(b,c,e,f,l){b=new LibraryDialog(this,b,c,e,f,l);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var d=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&
+d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var e=c.getElementsByTagName("span")[0];e.style.fontSize="18px";e.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+
+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,e,f,l,n,u){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{u?null!=
+window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(H){}if(null!=g||null!=c){u=mxUtils.htmlEntities(mxResources.get("unknownError"));var k=mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=g){null!=g.retry&&(k=mxResources.get("cancel"),m=function(){d();g.retry()});if(404==g.code||404==g.status||403==g.code){u=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):
+mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=l?l:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var p=null!=l?null:null!=n?n:window.location.hash;if(null!=p&&("#G"==p.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==p.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||
+null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==g.code||404==g.status)){p="#U"==p.substring(0,2)?p.substring(45,p.lastIndexOf("%26ex")):p.substring(2);this.showError(c,u,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+p);this.handleError(b,c,e,f,l)}),m,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){g.innerHTML="";for(var b=0;b<d.length;b++){var c=document.createElement("option");
+mxUtils.write(c,d[b].displayName);c.value=b;g.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(c,"<"+d[b].email+">");c.setAttribute("disabled","disabled");g.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=d.length;g.appendChild(c)}var d=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+
+": ");c.appendChild(e);var g=document.createElement("select");g.style.width="200px";b();mxEvent.addListener(g,"change",mxUtils.bind(this,function(){var c=g.value,e=d.length!=c;e&&this.drive.setUser(d[c]);this.drive.authorize(e,mxUtils.bind(this,function(){e||(d=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));c.appendChild(g);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,
+300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=e&&e()}),480,150);return}}null!=g.message?u=""==g.message&&null!=g.name?mxUtils.htmlEntities(g.name):mxUtils.htmlEntities(g.message):null!=g.response&&null!=g.response.error?u=mxUtils.htmlEntities(g.response.error):"undefined"!==typeof window.App&&(g.code==App.ERROR_TIMEOUT?u=mxUtils.htmlEntities(mxResources.get("timeout")):g.code==App.ERROR_BUSY?u=mxUtils.htmlEntities(mxResources.get("busy")):"string"===
+typeof g&&0<g.length&&(u=mxUtils.htmlEntities(g)))}var v=n=null;null!=g&&null!=g.helpLink?(n=mxResources.get("help"),v=mxUtils.bind(this,function(){return this.editor.graph.openLink(g.helpLink)})):null!=g&&null!=g.ownerEmail&&(n=mxResources.get("contactOwner"),u+=mxUtils.htmlEntities(" ("+n+": "+g.ownerEmail+")"),v=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(g.ownerEmail))}));this.showError(c,u,k,e,m,null,null,n,v,null,null,null,f?e:null)}else null!=e&&e()};EditorUi.prototype.alert=
+function(b,c,e){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,e||340,100,!0,!1);b.init()};EditorUi.prototype.confirm=function(b,c,e,f,l,n){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){d();null!=c&&c()},function(){d();null!=e&&e()},f,l,null,null,null,null,g);this.showDialog(b.container,340,46+g,!0,n);b.init()};EditorUi.prototype.showBanner=function(b,
+c,e,f){var d=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+b])){var g=document.createElement("div");g.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(g.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(g.style,"transform",
+"translate(-50%,120%)");mxUtils.setPrefixedStyle(g.style,"transition","all 1s ease");g.className="geBtn gePrimaryBtn";d=document.createElement("img");d.setAttribute("src",IMAGE_PATH+"/logo.png");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";g.appendChild(d);d=document.createElement("img");d.setAttribute("src",Dialog.prototype.closeImage);d.setAttribute("title",mxResources.get(f?"doNotShowAgain":
+"close"));d.setAttribute("border","0");d.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";g.appendChild(d);mxUtils.write(g,c);document.body.appendChild(g);this.bannerShowing=!0;c=document.createElement("div");c.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var k=document.createElement("input");k.setAttribute("type","checkbox");k.setAttribute("id","geDoNotShowAgainCheckbox");k.style.marginRight="6px";if(!f){c.appendChild(k);
+var l=document.createElement("label");l.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(l,mxResources.get("doNotShowAgain"));c.appendChild(l);g.style.paddingBottom="30px";g.appendChild(c)}var p=mxUtils.bind(this,function(){null!=g.parentNode&&(g.parentNode.removeChild(g),this.bannerShowing=!1,k.checked||f)&&(this["hideBanner"+b]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+b]=Date.now(),mxSettings.save()))});mxEvent.addListener(d,"click",mxUtils.bind(this,
+function(b){mxEvent.consume(b);p()}));var n=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){p()}),1E3)});mxEvent.addListener(g,"click",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);d!=k&&d!=l?(null!=e&&e(),p(),mxEvent.consume(b)):n()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(n,3E4);d=!0}return d};
+EditorUi.prototype.setCurrentFile=function(b){null!=b&&(b.opened=new Date);this.currentFile=b};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(b,c,e,f){b=b.toDataURL("image/"+e);if(null!=b&&6<b.length)null!=c&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(c))),0<f&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",f));else throw{message:mxResources.get("unknownError")};
+return b};EditorUi.prototype.saveCanvas=function(b,c,e,f,l){var d="jpeg"==e?"jpg":e;f=this.getBaseFilename(f)+(null!=c?".drawio":"")+"."+d;b=this.createImageDataUri(b,c,e,l);this.saveData(f,d,b.substring(b.lastIndexOf(",")+1),"image/"+e,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||
+mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var d=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,e,f,l,n){"text/xml"!=e||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=n?n:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=f?this.base64ToBlob(b,
+e):new Blob([b],{type:e}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)e=window.open("about:blank","_blank"),null==e?mxUtils.popup(b,!0):(e.document.write(b),e.document.close(),e.document.execCommand("SaveAs",!0,c),e.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==e||"image/"!=e.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,e,f);else{var d=document.createElement("a");n=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&
+"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);n=65==(g?parseInt(g[2],10):!1)?!1:n}if(n||this.isOffline()){d.href=URL.createObjectURL(f?this.base64ToBlob(b,e):new Blob([b],{type:e}));n?d.download=c:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(z){}}else this.createEchoRequest(b,c,e,
+f,l).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,e,f,l,n){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,b+(null!=e?"&mime="+e:"")+(null!=l?"&format="+l:"")+(null!=n?"&base64="+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var d=atob(b),e=d.length,f=Math.ceil(e/1024),k=Array(f),l=0;l<f;++l){for(var n=1024*l,q=Math.min(n+1024,e),y=Array(q-n),F=0;n<q;++F,++n)y[F]=
+d[n].charCodeAt(0);k[l]=new Uint8Array(y)}return new Blob(k,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,e,f,l,n,u,t){n=null!=n?n:!1;u=null!=u?u:"vsdx"!=l&&(!mxClient.IS_IOS||!navigator.standalone);l=this.getServiceCount(n);isLocalStorage&&l++;var d=4>=l?2:6<l?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(d,c){try{if("_blank"==c)if(null!=e&&"image/"==e.substring(0,6))this.openInNewWindow(b,e,f);else if(null!=e&&"text/html"==e.substring(0,9)){var g=new EmbedDialog(this,b);this.showDialog(g.container,
+450,240,!0,!0);g.init()}else{var k=window.open("about:blank");null==k?mxUtils.popup(b,!0):(k.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),k.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,f,null,t):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(g){try{this.exportFile(b,d,e,f,c,g)}catch(N){this.handleError(N)}}))}catch(H){this.handleError(H)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
+!1,n,u,null,1<l,d,b,e,f);n=this.isServices(l)?l>d?390:280:160;this.showDialog(c.container,420,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(b,c,e){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?d.document.write("<html>"+b+"</html>"):(b=e?b:btoa(unescape(encodeURIComponent(b))),d.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):d.document.write("<html><pre>"+
+mxUtils.htmlEntities(b,!1)+"</pre></html>"),d.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var d=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&
+(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height=
+"auto",this.tagsComponent.div.style.position="fixed",this.tagsComponent.div.style.fontFamily=Editor.defaultHtmlFont,mxClient.IS_IE||mxClient.IS_IE11?(this.tagsComponent.div.style.backgroundColor="#ffffff",this.tagsComponent.div.style.border="2px solid black",this.tagsComponent.div.style.color="#000000"):(this.tagsComponent.div.style.backgroundColor="#000000",this.tagsComponent.div.style.color="#ffffff",mxUtils.setOpacity(this.tagsComponent.div,80)));if(null!=this.tagsDialog)this.tagsDialog.parentNode.removeChild(this.tagsDialog),
+this.tagsDialog=null;else{this.tagsDialog=this.tagsComponent.div;mxEvent.addListener(this.tagsDialog,"mouseleave",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));var c=d.getBoundingClientRect();this.tagsDialog.style.left=c.left+"px";this.tagsDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=
+c.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(b)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var b=this.editor.graph.getAllTags();d.style.display=0<b.length?"":"none"}))}f.apply(this,arguments);this.editor.addListener("tagsDialogShown",mxUtils.bind(this,function(){null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),
+this.layersDialog=null)}));this.editor.addListener("layersDialogShown",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));this.editor.addListener("pageSelected",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));mxEvent.addListener(this.editor.graph.container,
+"click",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));if(this.isExportToCanvas()&&this.isChromelessImageExportEnabled()){this.exportDialog=null;var c=b(mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",d);null!=this.exportDialog&&
+(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)d.apply(this);else{this.exportDialog=document.createElement("div");var e=c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily=Editor.defaultHtmlFont;this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width=
+"50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=e.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=e.zIndex;var g=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",
+speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(b){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(b,null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));
+b.setAttribute("border","0");b.setAttribute("src",c);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),
+Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,e,f,l){this.isLocalFileSave()?this.saveLocalFile(e,b,f,l,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,d){return this.createEchoRequest(e,b,f,l,c,d)}),e,l,f)};EditorUi.prototype.saveRequest=function(b,c,e,f,l,n,u){u=null!=u?u:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);isLocalStorage&&d++;var g=4>=d?2:6<d?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){if("_blank"==
+d||null!=b&&0<b.length){var g=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=f)try{this.exportFile(f,b,n,!0,d,e)}catch(H){this.handleError(H)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=
+g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),b,n,!0,d,e)}catch(H){this.handleError(H)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,u,null,1<d,g,f,n,l);d=this.isServices(d)?4<d?390:280:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=
+b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,f,l,n){};EditorUi.prototype.pickFolder=function(b,c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,f,l,n,u,t,q,y,F,D,E,H){if(this.spinner.spin(document.body,mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var g=c?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==c&&(g=F?this.editor.graph.defaultPageBackgroundColor:
+"#ffffff");var k=this.editor.graph.getSvg(g,b,u,t,null,e,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,F,D);f&&this.editor.graph.addSvgShadow(k);var m=this.getBaseFilename()+(l?".drawio":"")+".svg";H=null!=H?H:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var p=mxUtils.bind(this,
+function(b){this.spinner.stop();l&&b.setAttribute("content",this.getFileData(!0,null,null,null,e,q,null,null,null,!1));H(Graph.xmlDeclaration+"\n"+(l?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(k);var v=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,p,this.thumbImageCache)):p(b)});E?this.embedFonts(k,v):(this.editor.addFontCss(k),v(k))}catch(K){this.handleError(K)}};
+EditorUi.prototype.addRadiobox=function(b,c,e,f,l,n,u){return this.addCheckbox(b,e,f,l,n,u,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,e,f,l,n,u,t){n=null!=n?n:!0;var d=document.createElement("input");d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",u?"radio":"checkbox");u="geCheckbox-"+Editor.guid();d.id=u;null!=t&&d.setAttribute("name",t);e&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);f&&d.setAttribute("disabled","disabled");n&&(b.appendChild(d),e=document.createElement("label"),
+mxUtils.write(e,c),e.setAttribute("for",u),b.appendChild(e),l||mxUtils.br(b));return d};EditorUi.prototype.addEditButton=function(b,c){var d=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);d.style.marginLeft="24px";var e=this.getCurrentFile(),f="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var k=document.createElement("select");k.style.maxWidth="200px";k.style.width="auto";k.style.marginLeft="8px";k.style.marginRight="10px";k.className=
+"geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("makeCopy"));k.appendChild(e);e=document.createElement("option");e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");k.appendChild(e);b.appendChild(k);mxEvent.addListener(k,"change",mxUtils.bind(this,function(){if("custom"==k.value){var b=new FilenameDialog(this,f,mxResources.get("ok"),function(b){null!=b?f=b:k.value="blank"},mxResources.get("url"),null,null,null,
+null,function(){k.value="blank"});this.showDialog(b.container,300,80,!0,!1);b.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==c||c.checked)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")}));mxUtils.br(b);return{getLink:function(){return d.checked?"blank"===k.value?"_blank":f:null},getEditInput:function(){return d},getEditSelect:function(){return k}}};EditorUi.prototype.addLinkSection=function(b,c){function d(){var b=document.createElement("div");
+b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=k&&k!=mxConstants.NONE?(b.style.border="1px solid black",b.style.backgroundColor=k):(b.style.backgroundPosition="center center",b.style.backgroundRepeat="no-repeat",b.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");l.innerHTML="";l.appendChild(b)}mxUtils.write(b,mxResources.get("links")+":");var e=document.createElement("select");e.style.width="100px";e.style.padding="0px";e.style.marginLeft="8px";e.style.marginRight=
+"10px";e.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));e.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));e.appendChild(f);f=document.createElement("option");f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));e.appendChild(f);c&&(f=document.createElement("option"),f.setAttribute("value","frame"),
+mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),e.appendChild(f));b.appendChild(e);mxUtils.write(b,mxResources.get("borderColor")+":");var k="#0000ff",l=null,l=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(k||"none",function(b){k=b;d()});mxEvent.consume(b)}));d();l.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";l.style.marginLeft="4px";l.style.height="22px";l.style.width="22px";l.style.position="relative";l.style.top=mxClient.IS_IE||mxClient.IS_IE11||
+mxClient.IS_EDGE?"6px":"1px";l.className="geColorBtn";b.appendChild(l);mxUtils.br(b);return{getColor:function(){return k},getTarget:function(){return e.value},focus:function(){e.focus()}}};EditorUi.prototype.createUrlParameters=function(b,c,e,f,l,n,u){u=null!=u?u:[];f&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||u.push("lightbox=1"),"auto"!=b&&u.push("target="+b),null!=c&&c!=mxConstants.NONE&&u.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=l&&0<l.length&&
+u.push("edit="+encodeURIComponent(l)),n&&u.push("layers=1"),this.editor.graph.foldingEnabled&&u.push("nav=1"));e&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&u.push("page-id="+this.currentPage.getId());return u};EditorUi.prototype.createLink=function(b,c,e,f,l,n,u,t,q,y){q=this.createUrlParameters(b,c,e,f,l,n,q);b=this.getCurrentFile();c=!0;null!=u?e="#U"+encodeURIComponent(u):(b=this.getCurrentFile(),t||null==b||b.constructor!=window.DriveFile?e="#R"+encodeURIComponent(e?
+this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(e="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=this.defaultFilename&&q.push("title="+encodeURIComponent(b.getTitle()));y&&1<e.length&&(q.push("open="+e.substring(1)),e="");return(f&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+
+"/"+(0<q.length?"?"+q.join("&"):"")+e};EditorUi.prototype.createHtml=function(b,c,e,f,l,n,u,t,q,y,F,D){this.getBasenames();var d={};""!=l&&l!=mxConstants.NONE&&(d.highlight=l);"auto"!==f&&(d.target=f);y||(d.lightbox=!1);d.nav=this.editor.graph.foldingEnabled;e=parseInt(e);isNaN(e)||100==e||(d.zoom=e/100);e=[];u&&(e.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(e.push("zoom"),d.resize=!0);t&&e.push("layers");q&&e.push("tags");
+0<e.length&&(y&&e.push("lightbox"),d.toolbar=e.join(" "));null!=F&&0<F.length&&(d.edit=F);null!=b?d.url=b:d.xml=this.getFileData(!0,null,null,null,null,!u);c='<div class="mxgraph" style="'+(n?"max-width:100%;":"")+(""!=e?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';b=null!=b?"&fetch="+encodeURIComponent(b):"";D(c,'<script type="text/javascript" src="'+(0<b.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+
+"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,c,e,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var k=document.createElement("div");
+k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name","type-embedhtmldialog");g=l.cloneNode(!0);g.setAttribute("value","copy");k.appendChild(g);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));k.appendChild(p);mxUtils.br(k);k.appendChild(l);
+p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));k.appendChild(p);var n=this.getCurrentFile();null==e&&null!=n&&n.constructor==window.DriveFile&&(p=document.createElement("a"),p.style.paddingLeft="12px",p.style.color="gray",p.style.cursor="pointer",mxUtils.write(p,mxResources.get("share")),k.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(n.getId())})));g.setAttribute("checked","checked");null==
+e&&l.setAttribute("disabled","disabled");d.appendChild(k);var q=this.addLinkSection(d),D=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var E=document.createElement("input");E.setAttribute("type","text");E.style.marginRight="16px";E.style.width="60px";E.style.marginLeft="4px";E.style.marginRight="12px";E.value="100%";d.appendChild(E);var H=this.addCheckbox(d,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,N=N=this.addCheckbox(d,mxResources.get("allPages"),
+k,!k),A=this.addCheckbox(d,mxResources.get("layers"),!0),G=this.addCheckbox(d,mxResources.get("tags"),!0),I=this.addCheckbox(d,mxResources.get("lightbox"),!0),L=this.addEditButton(d,I),M=L.getEditInput();M.style.marginBottom="16px";mxEvent.addListener(I,"change",function(){I.checked?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled");M.checked&&I.checked?L.getEditSelect().removeAttribute("disabled"):L.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,
+mxUtils.bind(this,function(){f(l.checked?e:null,D.checked,E.value,q.getTarget(),q.getColor(),H.checked,N.checked,A.checked,G.checked,I.checked,L.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,e,f,l,n,u,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,b||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
+d.appendChild(g);var k=this.getCurrentFile();b=0;if(null==k||k.constructor!=window.DriveFile||c)u=null!=u?u:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;u=null!=u?u:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));
+g.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(k.getId())}));m.style.marginTop="12px";m.className="geBtn";g.appendChild(m);d.appendChild(g);m=document.createElement("a");m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.style.cursor="pointer";mxUtils.write(m,mxResources.get("check"));g.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&
+this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,300,80,!0,!1);b.init()}))}))}var p=null,v=null;if(null!=e||null!=f)b+=30,mxUtils.write(d,mxResources.get("width")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.marginRight="16px",p.style.width="50px",p.style.marginLeft="6px",p.style.marginRight=
+"16px",p.style.marginBottom="10px",p.value="100%",d.appendChild(p),mxUtils.write(d,mxResources.get("height")+":"),v=document.createElement("input"),v.setAttribute("type","text"),v.style.width="50px",v.style.marginLeft="6px",v.style.marginBottom="10px",v.value=f+"px",d.appendChild(v),mxUtils.br(d);var q=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var A=null;if(null==k||k.constructor!=window.DriveFile||c)A=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var G=this.addCheckbox(d,
+mxResources.get("lightbox"),!0,null,null,!n),I=this.addEditButton(d,G),L=I.getEditInput();n&&(L.style.marginLeft=G.style.marginLeft,G.style.display="none",b-=20);var M=this.addCheckbox(d,mxResources.get("layers"),!0);M.style.marginLeft=L.style.marginLeft;M.style.marginTop="8px";var K=this.addCheckbox(d,mxResources.get("tags"),!0);K.style.marginLeft=L.style.marginLeft;K.style.marginBottom="16px";K.style.marginTop="16px";mxEvent.addListener(G,"change",function(){G.checked?(M.removeAttribute("disabled"),
+L.removeAttribute("disabled")):(M.setAttribute("disabled","disabled"),L.setAttribute("disabled","disabled"));L.checked&&G.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){l(q.getTarget(),q.getColor(),null==A?!0:A.checked,G.checked,I.getLink(),M.checked,null!=p?p.value:null,null!=v?v.value:null,K.checked)}),null,mxResources.get("create"),u,t);this.showDialog(c.container,340,300+b,!0,
+!0);null!=p?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)):q.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(l?"10":"4")+"px";d.appendChild(g);if(l){mxUtils.write(d,mxResources.get("zoom")+
+":");var k=document.createElement("input");k.setAttribute("type","text");k.style.marginRight="16px";k.style.width="60px";k.style.marginLeft="4px";k.style.marginRight="12px";k.value=this.lastExportZoom||"100%";d.appendChild(k);mxUtils.write(d,mxResources.get("borderWidth")+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.value=this.lastExportBorder||"0";d.appendChild(m);mxUtils.br(d)}var p=this.addCheckbox(d,
+mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=f?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),g=this.editor.graph,q=f?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==mxConstants.NONE||null==g.background);null!=q&&(q.style.marginBottom="16px");b=new CustomDialog(this,d,mxUtils.bind(this,function(){var b=parseInt(k.value)/100||1,d=parseInt(m.value)||0;e(!p.checked,null!=n?n.checked:!1,null!=
+q?q.checked:!1,b,d)}),null,b,c);this.showDialog(b.container,300,(l?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,e,f,l,n,u,t,q){u=null!=u?u:Editor.defaultIncludeDiagram;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph,k="jpeg"==t?220:300,m=document.createElement("h3");mxUtils.write(m,b);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(m);mxUtils.write(d,mxResources.get("zoom")+":");var p=
+document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="12px";p.value=this.lastExportZoom||"100%";d.appendChild(p);mxUtils.write(d,mxResources.get("borderWidth")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.marginRight="16px";v.style.width="60px";v.style.marginLeft="4px";v.value=this.lastExportBorder||"0";d.appendChild(v);mxUtils.br(d);var A=this.addCheckbox(d,mxResources.get("selectionOnly"),
+!1,g.isSelectionEmpty()),z=document.createElement("input");z.style.marginTop="16px";z.style.marginRight="8px";z.style.marginLeft="24px";z.setAttribute("disabled","disabled");z.setAttribute("type","checkbox");var I=document.createElement("select");I.style.marginTop="16px";I.style.marginLeft="8px";b=["selectionOnly","diagram","page"];for(var L={},m=0;m<b.length;m++)if(!g.isSelectionEmpty()||"selectionOnly"!=b[m]){var M=document.createElement("option");mxUtils.write(M,mxResources.get(b[m]));M.setAttribute("value",
+b[m]);I.appendChild(M);L[b[m]]=M}q?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(I),mxUtils.br(d),k+=26,mxEvent.addListener(I,"change",function(){"selectionOnly"==I.value&&(A.checked=!0)})):n&&(d.appendChild(z),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),k+=30,mxEvent.addListener(A,"change",function(){A.checked?z.removeAttribute("disabled"):z.setAttribute("disabled","disabled")}));g.isSelectionEmpty()?q&&(A.style.display="none",A.nextSibling.style.display="none",A.nextSibling.nextSibling.style.display=
+"none",k-=30):(I.value="diagram",z.setAttribute("checked","checked"),z.defaultChecked=!0,mxEvent.addListener(A,"change",function(){I.value=A.checked?"selectionOnly":"diagram"}));var K=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=t),O=null;Editor.isDarkMode()&&(O=this.addCheckbox(d,mxResources.get("dark"),!0),k+=26);var U=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),X=null;if("png"==t||"jpeg"==t)X=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||
+!this.canvasSupported,!1,!0),k+=30;var na=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),u,null,null,"jpeg"!=t);na.style.marginBottom="16px";var ca=document.createElement("input");ca.style.marginBottom="16px";ca.style.marginRight="8px";ca.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ca.setAttribute("disabled","disabled");var S=document.createElement("select");S.style.maxWidth="260px";S.style.marginLeft="8px";S.style.marginRight="10px";S.style.marginBottom=
+"16px";S.className="geBtn";n=document.createElement("option");n.setAttribute("value","none");mxUtils.write(n,mxResources.get("noChange"));S.appendChild(n);n=document.createElement("option");n.setAttribute("value","embedFonts");mxUtils.write(n,mxResources.get("embedFonts"));S.appendChild(n);n=document.createElement("option");n.setAttribute("value","lblToSvg");mxUtils.write(n,mxResources.get("lblToSvg"));S.appendChild(n);this.isOffline()&&n.setAttribute("disabled","disabled");mxEvent.addListener(S,
+"change",mxUtils.bind(this,function(){"lblToSvg"==S.value?(ca.checked=!0,ca.setAttribute("disabled","disabled"),L.page.style.display="none","page"==I.value&&(I.value="diagram"),U.checked=!1,U.setAttribute("disabled","disabled"),C.style.display="inline-block",x.style.display="none"):"disabled"==ca.getAttribute("disabled")&&(ca.checked=!1,ca.removeAttribute("disabled"),U.removeAttribute("disabled"),L.page.style.display="",C.style.display="none",x.style.display="")}));c&&(d.appendChild(ca),mxUtils.write(d,
+mxResources.get("embedImages")),mxUtils.br(d),mxUtils.write(d,mxResources.get("txtSettings")+":"),d.appendChild(S),mxUtils.br(d),k+=60);var x=document.createElement("select");x.style.maxWidth="260px";x.style.marginLeft="8px";x.style.marginRight="10px";x.className="geBtn";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));x.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));
+x.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));x.appendChild(c);var C=document.createElement("div");mxUtils.write(C,mxResources.get("LinksLost"));C.style.margin="7px";C.style.display="none";"svg"==t&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(x),d.appendChild(C),mxUtils.br(d),mxUtils.br(d),k+=50);e=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=v.value;this.lastExportZoom=
+p.value;l(p.value,K.checked,!A.checked,U.checked,na.checked,ca.checked,v.value,z.checked,!1,x.value,null!=X?X.checked:null,null!=O?O.checked:null,I.value,"embedFonts"==S.value,"lblToSvg"==S.value)}),null,e,f);this.showDialog(e.container,340,k,!0,!0,null,null,null,null,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace=
+"nowrap";var g=this.editor.graph;if(null!=c){var k=document.createElement("h3");mxUtils.write(k,c);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(k)}var m=this.addCheckbox(d,mxResources.get("fit"),!0),p=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),n=this.addCheckbox(d,e),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),E=this.addEditButton(d,q),H=E.getEditInput(),N=1<g.model.getChildCount(g.model.getRoot()),A=this.addCheckbox(d,
+mxResources.get("layers"),N,!N);A.style.marginLeft=H.style.marginLeft;A.style.marginBottom="12px";A.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(N&&A.removeAttribute("disabled"),H.removeAttribute("disabled")):(A.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"));H.checked&&q.checked?E.getEditSelect().removeAttribute("disabled"):E.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){b(m.checked,
+p.checked,n.checked,q.checked,E.getLink(),A.checked)}),null,mxResources.get("embed"),l);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,f,l,n,u,t){function d(d){var c=" ",m="";f&&(c=" 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('"+
EditorUi.lightboxHost+"/?client=1"+(null!=k?"&page="+k:"")+(l?"&edit=_blank":"")+(n?"&layers=1":"")+"');}})(this);\"",m+="cursor:pointer;");b&&(m+="max-width:100%;");var p="";e&&(p=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');u('<img src="'+d+'"'+p+(""!=m?' style="'+m+'"':"")+c+"/>")}var g=this.editor.graph.getGraphBounds(),k=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=f?this.getFileData(!0):null;b=
this.createImageDataUri(b,c,"png");d(b)}),null,null,null,mxUtils.bind(this,function(b){t({message:mxResources.get("unknownError")})}),null,!0,e?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),g.width*g.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var m="";e&&(m="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var p=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+m+"&xml="+encodeURIComponent(c));p.send(mxUtils.bind(this,function(){200<=p.getStatus()&&
299>=p.getStatus()?d("data:image/png;base64,"+p.getText()):t({message:mxResources.get("unknownError")})}))}else t({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,e,f,l,n,u){var d=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!e),g=d.getElementsByTagName("a");if(null!=g)for(var k=0;k<g.length;k++){var m=g[k].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==g[k].getAttribute("target")&&g[k].removeAttribute("target")}f&&
@@ -3634,15 +3640,15 @@ EditorUi.prototype.importZipFile=function(b,c,e){var d=this,g=mxUtils.bind(this,
null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,q)):d=this.importXml(b,e,f,y,null,null!=D?mxEvent.isControlDown(D):null);null!=t&&t(d)});"image"==c.substring(0,5)?(z=!1,"image/png"==c.substring(0,9)&&(c=F?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(g=this.importXml(c,e,f,y,null,null!=D?mxEvent.isControlDown(D):null),z=!0)),z||(c=this.editor.graph,z=b.indexOf(";"),0<z&&(b=b.substring(0,z)+b.substring(b.indexOf(",",z+1))),y&&c.isGridEnabled()&&(e=c.snap(e),
f=c.snap(f)),g=[c.insertVertex(null,null,"",e,f,l,n,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b+";")])):/(\.*<graphml )/.test(b)?(d=!0,this.importGraphML(b,k)):null!=z&&null!=q&&(/(\.v(dx|sdx?))($|\?)/i.test(q)||/(\.vs(x|sx?))($|\?)/i.test(q))?(d=!0,this.importVisio(z,k)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,q)?(d=!0,l=mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&
299>=b.status?k(b.responseText):null!=t&&t(null))}),null!=b?this.parseFileData(b,l,q):this.parseFile(z,l,q)):0==b.indexOf("PK")&&null!=z?(d=!0,this.importZipFile(z,k,mxUtils.bind(this,function(){g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,y);t(g)}))):/(\.v(sd|dx))($|\?)/i.test(q)||/(\.vs(s|x))($|\?)/i.test(q)||(g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,y,null,null!=D?mxEvent.isControlDown(D):null));d||null==t||t(g);return g};EditorUi.prototype.importFiles=function(b,c,
-e,f,l,n,q,t,z,y,F,D,E){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var d=null!=c&&null!=e,g=!0;c=null!=c?c:0;e=null!=e?e:0;var k=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=F||this.resampleThreshold,p=0;p<b.length;p++)if("image/"==b[p].type.substring(0,6)&&b[p].size>m){k=!0;break}var v=mxUtils.bind(this,function(){var k=this.editor.graph,m=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(b,c,e,g,f,k,l,m,p){try{return null!=b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),
-this.loadLibrary(new LocalLibrary(this,b,l)),null):this.importFile(b,c,e,g,f,k,l,m,p,d,D,E)}catch(ua){return this.handleError(ua),null}});n=null!=n?n:mxUtils.bind(this,function(b){k.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=b.length,v=p,u=[],A=mxUtils.bind(this,function(b,d){u[b]=d;if(0==--v){this.spinner.stop();if(null!=t)t(u);else{var c=[];k.getModel().beginUpdate();try{for(var e=0;e<u.length;e++){var g=u[e]();null!=g&&(c=c.concat(g))}}finally{k.getModel().endUpdate()}}n(c)}}),
-z=0;z<p;z++)mxUtils.bind(this,function(d){var p=b[d];if(null!=p){var n=new FileReader;n.onload=mxUtils.bind(this,function(b){if(null==q||q(p))if("image/"==p.type.substring(0,6))if("image/svg"==p.type.substring(0,9)){var n=Graph.clipSvgDataUri(b.target.result),t=n.indexOf(","),v=decodeURIComponent(escape(atob(n.substring(t+1)))),u=mxUtils.parseXml(v),v=u.getElementsByTagName("svg");if(0<v.length){var v=v[0],x=D?null:v.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?
-atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?A(d,mxUtils.bind(this,function(){try{if(n.substring(0,t+1),null!=u){var b=u.getElementsByTagName("svg");if(0<b.length){var g=b[0],q=g.getAttribute("width"),v=g.getAttribute("height"),q=null!=q&&"%"!=q.charAt(q.length-1)?parseFloat(q):NaN,v=null!=v&&"%"!=v.charAt(v.length-1)?parseFloat(v):NaN,x=g.getAttribute("viewBox");if(null==x||0==x.length)g.setAttribute("viewBox",
-"0 0 "+q+" "+v);else if(isNaN(q)||isNaN(v)){var y=x.split(" ");3<y.length&&(q=parseFloat(y[2]),v=parseFloat(y[3]))}n=Editor.createSvgDataUri(mxUtils.getXml(g));var A=Math.min(1,Math.min(f/Math.max(1,q)),f/Math.max(1,v)),z=l(n,p.type,c+d*m,e+d*m,Math.max(1,Math.round(q*A)),Math.max(1,Math.round(v*A)),p.name);if(isNaN(q)||isNaN(v)){var K=new Image;K.onload=mxUtils.bind(this,function(){q=Math.max(1,K.width);v=Math.max(1,K.height);z[0].geometry.width=q;z[0].geometry.height=v;g.setAttribute("viewBox",
-"0 0 "+q+" "+v);n=Editor.createSvgDataUri(mxUtils.getXml(g));var b=n.indexOf(";");0<b&&(n=n.substring(0,b)+n.substring(n.indexOf(",",b+1)));k.setCellStyles("image",n,[z[0]])});K.src=Editor.createSvgDataUri(mxUtils.getXml(g))}return z}}}catch(qa){}return null})):A(d,mxUtils.bind(this,function(){return l(x,"text/xml",c+d*m,e+d*m,0,0,p.name)}))}else A(d,mxUtils.bind(this,function(){return null}))}else{v=!1;if("image/png"==p.type){var z=D?null:this.extractGraphModelFromPng(b.target.result);if(null!=z&&
-0<z.length){var K=new Image;K.src=b.target.result;A(d,mxUtils.bind(this,function(){return l(z,"text/xml",c+d*m,e+d*m,K.width,K.height,p.name)}));v=!0}}v||(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(b.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,
-b.target.result,mxUtils.bind(this,function(b,k,n){A(d,mxUtils.bind(this,function(){if(null!=b&&b.length<y){var t=g&&this.isResampleImageSize(p.size,F)?Math.min(1,Math.min(f/k,f/n)):1;return l(b,p.type,c+d*m,e+d*m,Math.round(k*t),Math.round(n*t),p.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,f,F,p.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else n=b.target.result,l(n,p.type,c+d*m,e+d*m,240,160,p.name,
-function(b){A(d,function(){return b})},p)});/(\.v(dx|sdx?))($|\?)/i.test(p.name)||/(\.vs(x|sx?))($|\?)/i.test(p.name)?l(null,p.type,c+d*m,e+d*m,240,160,p.name,function(b){A(d,function(){return b})},p):"image"==p.type.substring(0,5)||"application/pdf"==p.type?n.readAsDataURL(p):n.readAsText(p)}})(z)});if(k){k=[];for(p=0;p<b.length;p++)k.push(b[p]);b=k;this.confirmImageResize(function(b){g=b;v()},z)}else v()};EditorUi.prototype.confirmImageResize=function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&
+e,f,l,n,q,t,z,y,F,D,E){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var d=null!=c&&null!=e,g=!0;c=null!=c?c:0;e=null!=e?e:0;var k=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=F||this.resampleThreshold,p=0;p<b.length;p++)if("image/"==b[p].type.substring(0,6)&&b[p].size>m){k=!0;break}var v=mxUtils.bind(this,function(){var k=this.editor.graph,m=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(b,c,e,g,f,k,l,m,n){try{return null!=b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),
+this.loadLibrary(new LocalLibrary(this,b,l)),null):this.importFile(b,c,e,g,f,k,l,m,n,d,D,E)}catch(ua){return this.handleError(ua),null}});n=null!=n?n:mxUtils.bind(this,function(b){k.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=b.length,v=p,u=[],A=mxUtils.bind(this,function(b,d){u[b]=d;if(0==--v){this.spinner.stop();if(null!=t)t(u);else{var c=[];k.getModel().beginUpdate();try{for(var e=0;e<u.length;e++){var g=u[e]();null!=g&&(c=c.concat(g))}}finally{k.getModel().endUpdate()}}n(c)}}),
+z=0;z<p;z++)mxUtils.bind(this,function(d){var n=b[d];if(null!=n){var p=new FileReader;p.onload=mxUtils.bind(this,function(b){if(null==q||q(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var p=Graph.clipSvgDataUri(b.target.result),t=p.indexOf(","),v=decodeURIComponent(escape(atob(p.substring(t+1)))),u=mxUtils.parseXml(v),v=u.getElementsByTagName("svg");if(0<v.length){var v=v[0],x=D?null:v.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?
+atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?A(d,mxUtils.bind(this,function(){try{if(p.substring(0,t+1),null!=u){var b=u.getElementsByTagName("svg");if(0<b.length){var g=b[0],q=g.getAttribute("width"),v=g.getAttribute("height"),q=null!=q&&"%"!=q.charAt(q.length-1)?parseFloat(q):NaN,v=null!=v&&"%"!=v.charAt(v.length-1)?parseFloat(v):NaN,y=g.getAttribute("viewBox");if(null==y||0==y.length)g.setAttribute("viewBox",
+"0 0 "+q+" "+v);else if(isNaN(q)||isNaN(v)){var x=y.split(" ");3<x.length&&(q=parseFloat(x[2]),v=parseFloat(x[3]))}p=Editor.createSvgDataUri(mxUtils.getXml(g));var A=Math.min(1,Math.min(f/Math.max(1,q)),f/Math.max(1,v)),z=l(p,n.type,c+d*m,e+d*m,Math.max(1,Math.round(q*A)),Math.max(1,Math.round(v*A)),n.name);if(isNaN(q)||isNaN(v)){var K=new Image;K.onload=mxUtils.bind(this,function(){q=Math.max(1,K.width);v=Math.max(1,K.height);z[0].geometry.width=q;z[0].geometry.height=v;g.setAttribute("viewBox",
+"0 0 "+q+" "+v);p=Editor.createSvgDataUri(mxUtils.getXml(g));var b=p.indexOf(";");0<b&&(p=p.substring(0,b)+p.substring(p.indexOf(",",b+1)));k.setCellStyles("image",p,[z[0]])});K.src=Editor.createSvgDataUri(mxUtils.getXml(g))}return z}}}catch(qa){}return null})):A(d,mxUtils.bind(this,function(){return l(x,"text/xml",c+d*m,e+d*m,0,0,n.name)}))}else A(d,mxUtils.bind(this,function(){return null}))}else{v=!1;if("image/png"==n.type){var z=D?null:this.extractGraphModelFromPng(b.target.result);if(null!=z&&
+0<z.length){var K=new Image;K.src=b.target.result;A(d,mxUtils.bind(this,function(){return l(z,"text/xml",c+d*m,e+d*m,K.width,K.height,n.name)}));v=!0}}v||(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(b.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,
+b.target.result,mxUtils.bind(this,function(b,k,p){A(d,mxUtils.bind(this,function(){if(null!=b&&b.length<y){var q=g&&this.isResampleImageSize(n.size,F)?Math.min(1,Math.min(f/k,f/p)):1;return l(b,n.type,c+d*m,e+d*m,Math.round(k*q),Math.round(p*q),n.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,f,F,n.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else p=b.target.result,l(p,n.type,c+d*m,e+d*m,240,160,n.name,
+function(b){A(d,function(){return b})},n)});/(\.v(dx|sdx?))($|\?)/i.test(n.name)||/(\.vs(x|sx?))($|\?)/i.test(n.name)?l(null,n.type,c+d*m,e+d*m,240,160,n.name,function(b){A(d,function(){return b})},n):"image"==n.type.substring(0,5)||"application/pdf"==n.type?p.readAsDataURL(n):p.readAsText(n)}})(z)});if(k){k=[];for(p=0;p<b.length;p++)k.push(b[p]);b=k;this.confirmImageResize(function(b){g=b;v()},z)}else v()};EditorUi.prototype.confirmImageResize=function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&
null!=this.spinner.pause?this.spinner.pause():function(){},e=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,f=function(e,g){if(e||c)mxSettings.setResizeImages(e?g:null),mxSettings.save();d();b(g)};null==e||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){f(b,!0)},function(b){f(b,!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):f(!1,e)};EditorUi.prototype.parseFile=function(b,c,e){e=null!=e?e:b.name;var d=new FileReader;d.onload=mxUtils.bind(this,function(){this.parseFileData(d.result,c,e)});d.readAsText(b)};EditorUi.prototype.parseFileData=function(b,c,e){var d=new XMLHttpRequest;d.open("POST",OPEN_URL);d.setRequestHeader("Content-Type","application/x-www-form-urlencoded");d.onreadystatechange=
function(){c(d)};d.send("format=xml&filename="+encodeURIComponent(e)+"&data="+encodeURIComponent(b));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(m){}};EditorUi.prototype.isResampleImageSize=function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,e,f,l,n,q){l=null!=l?l:this.maxImageSize;var d=Math.max(1,b.width),g=Math.max(1,b.height);if(f&&this.isResampleImageSize(null!=q?q:c.length,n))try{var k=Math.max(d/
@@ -3671,8 +3677,8 @@ mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHT
"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var N=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:N.apply(this,arguments)}}H=document.getElementById("geInfo");null!=H&&H.parentNode.removeChild(H);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var A=null;mxEvent.addListener(c.container,"dragleave",function(b){c.isEnabled()&&(null!=A&&(A.parentNode.removeChild(A),
A=null),b.stopPropagation(),b.preventDefault())});mxEvent.addListener(c.container,"dragover",mxUtils.bind(this,function(b){null==A&&(!mxClient.IS_IE||10<document.documentMode)&&(A=this.highlightElement(c.container));null!=this.sidebar&&this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(b){null!=A&&(A.parentNode.removeChild(A),A=null);if(c.isEnabled()){var d=mxUtils.convertPoint(c.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),
e=c.view.translate,g=c.view.scale,f=d.x/g-e.x,k=d.y/g-e.y;if(0<b.dataTransfer.files.length)mxEvent.isShiftDown(b)?this.openFiles(b.dataTransfer.files,!0):(mxEvent.isAltDown(b)&&(k=f=null),this.importFiles(b.dataTransfer.files,f,k,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(b),null,null,mxEvent.isShiftDown(b),b));else{mxEvent.isAltDown(b)&&(k=f=0);var l=0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(b,
-null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,f,k,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var p=null,e=d.getElementsByTagName("img");null!=e&&1==e.length?(m=e[0].getAttribute("src"),null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(p=!0)):(e=d.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):
-(d=d.getElementsByTagName("pre"),null!=d&&1==d.length&&(m=mxUtils.getTextContent(d[0]))));var n=!0,q=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,f,k,!0,p,null,n,mxEvent.isControlDown(b)))});p&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(b){n=b;q()},mxEvent.isControlDown(b)):q()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this,function(b){var d=Math.max(1,b.width);b=Math.max(1,b.height);
+null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,f,k,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var n=null,e=d.getElementsByTagName("img");null!=e&&1==e.length?(m=e[0].getAttribute("src"),null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(n=!0)):(e=d.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):
+(d=d.getElementsByTagName("pre"),null!=d&&1==d.length&&(m=mxUtils.getTextContent(d[0]))));var p=!0,q=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,f,k,!0,n,null,p,mxEvent.isControlDown(b)))});n&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(b){p=b;q()},mxEvent.isControlDown(b)):q()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this,function(b){var d=Math.max(1,b.width);b=Math.max(1,b.height);
var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,d)),e/Math.max(1,b));c.setSelectionCell(c.insertVertex(null,null,"",f,k,d*e,b*e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(b){c.setSelectionCells(this.insertTextAt(l,f,k,!0))})):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&c.setSelectionCells(this.insertTextAt(b.dataTransfer.getData("text/plain"),f,k,!0))}}b.stopPropagation();
b.preventDefault()}),!1)}c.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var b=this.editor.graph;b.container.addEventListener("paste",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d))try{for(var c=d.clipboardData||d.originalEvent.clipboardData,e=!1,f=0;f<c.types.length;f++)if("text/"===c.types[f].substring(0,5)){e=!0;break}if(!e){var k=c.items;for(index in k){var l=
k[index];if("file"===l.kind){if(b.isEditing())this.importFiles([l.getAsFile()],0,0,this.maxImageSize,function(d,c,e,g,f,k){b.insertImage(d,f,k)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()});else{var n=this.editor.graph.getInsertPoint();this.importFiles([l.getAsFile()],n.x,n.y,this.maxImageSize);mxEvent.consume(d)}break}}}}catch(z){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function b(){window.setTimeout(function(){e.innerHTML=
@@ -3697,10 +3703,10 @@ g,f,mxUtils.bind(this,function(b){this.handleError(b)}))}catch(z){this.handleErr
"text/html":new Blob(['<img src="'+b+'" width="'+c+'" height="'+e+'">'],{type:"text/html"})});navigator.clipboard.write([b])["catch"](f)};EditorUi.prototype.copyCells=function(b,c){var d=this.editor.graph;if(d.isSelectionEmpty())b.innerHTML="";else{var e=mxUtils.sortCells(d.model.getTopmostCells(d.getSelectionCells())),f=mxUtils.getXml(d.encodeCells(e));mxUtils.setTextContent(b,encodeURIComponent(f));c?(d.removeCells(e,!1),d.lastPasteXml=null):(d.lastPasteXml=f,d.pasteCounter=0);b.focus();document.execCommand("selectAll",
!1,null)}};EditorUi.prototype.copyXml=function(){var b=null;if(Editor.enableNativeCipboard){var c=this.editor.graph;c.isSelectionEmpty()||(b=mxUtils.sortCells(c.getExportableCells(c.model.getTopmostCells(c.getSelectionCells()))),c=mxUtils.getXml(c.encodeCells(b)),navigator.clipboard.writeText(c))}return b};EditorUi.prototype.pasteXml=function(b,c,e,f){var d=this.editor.graph,g=null;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var k=d.pasteCounter*d.gridSize;if(e||this.isCompatibleString(b))g=
this.importXml(b,k,k),d.setSelectionCells(g);else if(c&&1==d.getSelectionCount()){k=d.getStartEditingCell(d.getSelectionCell(),f);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b)&&"image"==d.getCurrentCellStyle(k)[mxConstants.STYLE_SHAPE])d.setCellStyles(mxConstants.STYLE_IMAGE,b,[k]);else{d.model.beginUpdate();try{d.labelChanged(k,b),Graph.isLink(b)&&d.setLinkForCell(k,b)}finally{d.model.endUpdate()}}d.setSelectionCell(k)}else g=d.getInsertPoint(),d.isMouseInsertPoint()&&(k=0,d.lastPasteXml==b&&0<d.pasteCounter&&
-d.pasteCounter--),g=this.insertTextAt(b,g.x+k,g.y+k,!0),d.setSelectionCells(g);d.isSelectionEmpty()||(d.scrollCellToVisible(d.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell())));return g};EditorUi.prototype.pasteCells=function(b,c,e,f){if(!mxEvent.isConsumed(b)){var d=c,g=!1;if(e&&null!=b.clipboardData&&b.clipboardData.getData){var k=b.clipboardData.getData("text/plain"),l=!1;if(null!=k&&0<k.length&&"%3CmxGraphModel%3E"==k.substring(0,18)){var p=
-decodeURIComponent(k);this.isCompatibleString(p)&&(l=!0,k=p)}l=l?null:b.clipboardData.getData("text/html");null!=l&&0<l.length?(d=this.parseHtmlData(l),g="text/plain"!=d.getAttribute("data-type")):null!=k&&0<k.length&&(d=document.createElement("div"),mxUtils.setTextContent(d,l))}k=d.getElementsByTagName("span");if(null!=k&&0<k.length&&"application/vnd.lucid.chart.objects"===k[0].getAttribute("data-lucid-type"))e=k[0].getAttribute("data-lucid-content"),null!=e&&0<e.length&&(this.convertLucidChart(e,
-mxUtils.bind(this,function(b){var d=this.editor.graph;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var c=d.pasteCounter*d.gridSize;d.setSelectionCells(this.importXml(b,c,c));d.scrollCellToVisible(d.getSelectionCell())}),mxUtils.bind(this,function(b){this.handleError(b)})),mxEvent.consume(b));else{g=g?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);l=!1;try{var n=g.lastIndexOf("%3E");0<=n&&n<g.length-3&&(g=g.substring(0,n+3))}catch(D){}try{k=
-d.getElementsByTagName("span"),p=null!=k&&0<k.length?mxUtils.trim(decodeURIComponent(k[0].textContent)):decodeURIComponent(g),this.isCompatibleString(p)&&(l=!0,g=p)}catch(D){}try{if(null!=g&&0<g.length){this.pasteXml(g,f,l,b);try{mxEvent.consume(b)}catch(D){}}else if(!e){var q=this.editor.graph;q.lastPasteXml=null;q.pasteCounter=0}}catch(D){this.handleError(D)}}}c.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(b){if(Graph.fileSupport)for(var d=null,c=0;c<b.length;c++)mxEvent.addListener(b[c],
+d.pasteCounter--),g=this.insertTextAt(b,g.x+k,g.y+k,!0),d.setSelectionCells(g);d.isSelectionEmpty()||(d.scrollCellToVisible(d.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell())));return g};EditorUi.prototype.pasteCells=function(b,c,e,f){if(!mxEvent.isConsumed(b)){var d=c,g=!1;if(e&&null!=b.clipboardData&&b.clipboardData.getData){var k=b.clipboardData.getData("text/plain"),l=!1;if(null!=k&&0<k.length&&"%3CmxGraphModel%3E"==k.substring(0,18)){var n=
+decodeURIComponent(k);this.isCompatibleString(n)&&(l=!0,k=n)}l=l?null:b.clipboardData.getData("text/html");null!=l&&0<l.length?(d=this.parseHtmlData(l),g="text/plain"!=d.getAttribute("data-type")):null!=k&&0<k.length&&(d=document.createElement("div"),mxUtils.setTextContent(d,l))}k=d.getElementsByTagName("span");if(null!=k&&0<k.length&&"application/vnd.lucid.chart.objects"===k[0].getAttribute("data-lucid-type"))e=k[0].getAttribute("data-lucid-content"),null!=e&&0<e.length&&(this.convertLucidChart(e,
+mxUtils.bind(this,function(b){var d=this.editor.graph;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var c=d.pasteCounter*d.gridSize;d.setSelectionCells(this.importXml(b,c,c));d.scrollCellToVisible(d.getSelectionCell())}),mxUtils.bind(this,function(b){this.handleError(b)})),mxEvent.consume(b));else{g=g?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);l=!1;try{var p=g.lastIndexOf("%3E");0<=p&&p<g.length-3&&(g=g.substring(0,p+3))}catch(D){}try{k=
+d.getElementsByTagName("span"),n=null!=k&&0<k.length?mxUtils.trim(decodeURIComponent(k[0].textContent)):decodeURIComponent(g),this.isCompatibleString(n)&&(l=!0,g=n)}catch(D){}try{if(null!=g&&0<g.length){this.pasteXml(g,f,l,b);try{mxEvent.consume(b)}catch(D){}}else if(!e){var q=this.editor.graph;q.lastPasteXml=null;q.pasteCounter=0}}catch(D){this.handleError(D)}}}c.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(b){if(Graph.fileSupport)for(var d=null,c=0;c<b.length;c++)mxEvent.addListener(b[c],
"dragleave",function(b){null!=d&&(d.parentNode.removeChild(d),d=null);b.stopPropagation();b.preventDefault()}),mxEvent.addListener(b[c],"dragover",mxUtils.bind(this,function(b){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==d&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(d=this.highlightElement());b.stopPropagation();b.preventDefault()})),mxEvent.addListener(b[c],"drop",mxUtils.bind(this,function(b){null!=d&&(d.parentNode.removeChild(d),d=null);if(this.editor.graph.isEnabled()||
"1"!=urlParams.embed)if(0<b.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(b)&&!mxEvent.isShiftDown(b)):this.openFiles(b.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(b);if(null==c){var e=null!=b.dataTransfer?b.dataTransfer:b.clipboardData;null!=e&&(10==document.documentMode||11==document.documentMode?c=e.getData("Text"):(c=null,c=0<=mxUtils.indexOf(e.types,
"text/uri-list")?b.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(e.types,"text/html")?e.getData("text/html"):null,null!=c&&0<c.length?(e=document.createElement("div"),e.innerHTML=this.editor.graph.sanitizeHtml(c),e=e.getElementsByTagName("img"),0<e.length&&(c=e[0].getAttribute("src"))):0<=mxUtils.indexOf(e.types,"text/plain")&&(c=e.getData("text/plain"))),null!=c&&(Editor.isPngDataUrl(c)?(c=Editor.extractGraphModelFromPng(c),null!=c&&0<c.length&&this.openLocalFile(c,null,!0)):!this.isOffline()&&
@@ -3725,53 +3731,53 @@ function(b){var c=this.editor.graph;return{event:b,pageVisible:c.pageVisible,tra
this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),c,null,!0,mxUtils.bind(this,function(c){d.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=b?!b:!0,data:Editor.createSvgDataUri(c)}),"*")}),null,null,!0,e,1,this.embedExportBorder)}else b||d.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");b||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,c.model.clear(),this.editor.undoManager.clear(),
this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(b){var c=null,d=!1,e=!1,f=null,l=mxUtils.bind(this,function(b,c){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE,l);mxEvent.addListener(window,"message",mxUtils.bind(this,
function(g){if(g.source==(window.opener||window.parent)){var k=g.data,l=null,m=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):"data:image/svg+xml;utf8,"==b.substring(0,24)&&(b=b.substring(24)),null!=b&&("%"==b.charAt(0)?b=decodeURIComponent(b):"<"!=b.charAt(0)&&(b=Graph.decompress(b)))}catch(ta){}return b});if("json"==urlParams.proto){var p=
-!1;try{k=JSON.parse(k)}catch(da){k=null}try{if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("layout"==k.action){this.executeLayoutList(k.layouts);return}if("prompt"==k.action){this.spinner.stop();var q=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):
+!1;try{k=JSON.parse(k)}catch(ea){k=null}try{if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("layout"==k.action){this.executeLayoutList(k.layouts);return}if("prompt"==k.action){this.spinner.stop();var q=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):
k.ok,function(b){null!=b?n.postMessage(JSON.stringify({event:"prompt",value:b,message:k}),"*"):n.postMessage(JSON.stringify({event:"prompt-cancel",message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(q.container,300,80,!0,!1);q.init();return}if("draft"==k.action){var t=m(k.xml);this.spinner.stop();q=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),t,mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",
result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(q.container,640,480,!0,!1,mxUtils.bind(this,function(b){b&&this.actions.get("exit").funct()}));
-try{q.init()}catch(da){n.postMessage(JSON.stringify({event:"draft",error:da.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var v=1==k.enableRecent,u=1==k.enableSearch,z=1==k.enableCustomTemp;if("1"==urlParams.newTempDlg&&!k.templatesOnly&&null!=k.callback){var L=this.getCurrentUser(),M=new TemplatesDialog(this,function(b,c,d){b=b||this.emptyDiagramXml;n.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,tempUrl:d.url,libs:d.libs,
+try{q.init()}catch(ea){n.postMessage(JSON.stringify({event:"draft",error:ea.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var v=1==k.enableRecent,u=1==k.enableSearch,z=1==k.enableCustomTemp;if("1"==urlParams.newTempDlg&&!k.templatesOnly&&null!=k.callback){var L=this.getCurrentUser(),M=new TemplatesDialog(this,function(b,c,d){b=b||this.emptyDiagramXml;n.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,tempUrl:d.url,libs:d.libs,
builtIn:null!=d.info&&null!=d.info.custContentId,message:k}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=L?L.id:null,v?mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getRecentDiagrams",[d],null,b,c)}):null,u?mxUtils.bind(this,function(b,c,d,e){this.remoteInvoke("searchDiagrams",[b,e],null,c,d)}):null,mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getFileContent",[b.url],null,c,d)}),null,z?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",
null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(M.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,k.templatesOnly?!1:null!=k.callback,mxUtils.bind(this,function(c,d,e,f){c=c||this.emptyDiagramXml;null!=k.callback?n.postMessage(JSON.stringify({event:"template",xml:c,blank:c==this.emptyDiagramXml,name:d,tempUrl:e,libs:f,builtIn:!0,message:k}),"*"):(b(c,g,c!=this.emptyDiagramXml,k.toSketch),this.editor.modified||this.editor.setStatus(""))}),
null,null,null,null,null,null,null,v?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,u?mxUtils.bind(this,function(b,c){this.remoteInvoke("searchDiagrams",[b,null],null,c,function(){c(null,"Network Error!")})}):null,mxUtils.bind(this,function(b,c,d){n.postMessage(JSON.stringify({event:"template",docUrl:b,info:c,name:d}),"*")}),null,null,z?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},
0)})}):null,1==k.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==k.action){var K=this.getDiagramTextContent();n.postMessage(JSON.stringify({event:"textContent",data:K,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));
null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var O=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,O):this.spinner.stop();return}if("exit"==k.action){this.actions.get("exit").funct();return}if("viewport"==k.action){null!=k.viewport&&(this.embedViewport=k.viewport);return}if("snapshot"==k.action){this.sendEmbeddedSvgExport(!0);return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==
-k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var U=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var X=this.editor.graph,ma=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var c=this.createLoadMessage("export");c.format=k.format;c.message=k;c.data=b;c.xml=U;n.postMessage(JSON.stringify(c),"*")}),ba=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&
-(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(U)));X!=this.editor.graph&&X.container.parentNode.removeChild(X.container);ma(b)}),S=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var x=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=S){var b=X.getGlobalVariable;X=this.createTemporaryGraph(X.getStylesheet());for(var c,d=0;d<this.pages.length;d++)if(this.pages[d].getId()==S){c=
-this.updatePageRoot(this.pages[d]);break}null==c&&(c=this.currentPage);X.getGlobalVariable=function(d){return"page"==d?c.getName():"pagenumber"==d?1:b.apply(this,arguments)};document.body.appendChild(X.container);X.model.setRoot(c.root)}if(null!=k.layerIds){for(var e=X.model,g=e.getChildCells(e.getRoot()),f={},d=0;d<k.layerIds.length;d++)f[k.layerIds[d]]=!0;for(d=0;d<g.length;d++)e.setVisible(g[d],f[g[d].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){ba(b.toDataURL("image/png"))}),
-k.width,null,k.background,mxUtils.bind(this,function(){ba(null)}),null,null,k.scale,k.transparent,k.shadow,null,X,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(d=!0,this.setFileData(U),d=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},0):x()):x()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=S?"&pageId="+S:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):
-"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(U))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?ma("data:image/png;base64,"+b.getText()):ba(null)}),mxUtils.bind(this,function(){ba(null)}))}}else x=mxUtils.bind(this,function(){var b=this.createLoadMessage("export");b.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var c=this.getXmlFileData();b.xml=mxUtils.getXml(c);b.data=this.getFileData(null,
+k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var U=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var X=this.editor.graph,na=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var c=this.createLoadMessage("export");c.format=k.format;c.message=k;c.data=b;c.xml=U;n.postMessage(JSON.stringify(c),"*")}),ca=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&
+(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(U)));X!=this.editor.graph&&X.container.parentNode.removeChild(X.container);na(b)}),S=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var x=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=S){var b=X.getGlobalVariable;X=this.createTemporaryGraph(X.getStylesheet());for(var c,d=0;d<this.pages.length;d++)if(this.pages[d].getId()==S){c=
+this.updatePageRoot(this.pages[d]);break}null==c&&(c=this.currentPage);X.getGlobalVariable=function(d){return"page"==d?c.getName():"pagenumber"==d?1:b.apply(this,arguments)};document.body.appendChild(X.container);X.model.setRoot(c.root)}if(null!=k.layerIds){for(var e=X.model,g=e.getChildCells(e.getRoot()),f={},d=0;d<k.layerIds.length;d++)f[k.layerIds[d]]=!0;for(d=0;d<g.length;d++)e.setVisible(g[d],f[g[d].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){ca(b.toDataURL("image/png"))}),
+k.width,null,k.background,mxUtils.bind(this,function(){ca(null)}),null,null,k.scale,k.transparent,k.shadow,null,X,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(d=!0,this.setFileData(U),d=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},0):x()):x()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=S?"&pageId="+S:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):
+"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(U))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?na("data:image/png;base64,"+b.getText()):ca(null)}),mxUtils.bind(this,function(){ca(null)}))}}else x=mxUtils.bind(this,function(){var b=this.createLoadMessage("export");b.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var c=this.getXmlFileData();b.xml=mxUtils.getXml(c);b.data=this.getFileData(null,
null,!0,null,null,null,c);b.format=k.format}else if("html"==k.format)c=this.editor.getGraphXml(),b.data=this.getHtml(c,this.editor.graph),b.xml=mxUtils.getXml(c),b.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;c=null!=k.background?k.background:this.editor.graph.background;c==mxConstants.NONE&&(c=null);b.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);b.format="svg";var d=mxUtils.bind(this,function(c){this.editor.graph.setEnabled(!0);this.spinner.stop();b.data=Editor.createSvgDataUri(c);
n.postMessage(JSON.stringify(b),"*")});if("xmlsvg"==k.format)(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))&&this.getEmbeddedSvg(b.xml,this.editor.graph,null,!0,d,null,null,k.embedImages,c,k.scale,k.border,k.shadow,k.keepTheme);else if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))this.editor.graph.setEnabled(!1),c=this.editor.graph.getSvg(c,k.scale,k.border,null,
null,null,null,null,null,this.editor.graph.shadowVisible||k.shadow,null,k.keepTheme),(this.editor.graph.shadowVisible||k.shadow)&&this.editor.graph.addSvgShadow(c),this.embedFonts(c,mxUtils.bind(this,function(b){k.embedImages||null==k.embedImages?this.editor.convertImages(b,mxUtils.bind(this,function(b){d(mxUtils.getXml(b))})):d(mxUtils.getXml(b))}));return}n.postMessage(JSON.stringify(b),"*")}),null!=k.xml&&0<k.xml.length?(d=!0,this.setFileData(k.xml),d=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},
0):x()):x();return}if("load"==k.action){p=k.toSketch;e=1==k.autosave;this.hideDialog();null!=k.modified&&null==urlParams.modified&&(urlParams.modified=k.modified);null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=k.saveAndExit);null!=k.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=k.noSaveBtn);if(null!=k.rough){var C=Editor.sketchMode;this.doSetSketchMode(k.rough);C!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=k.dark&&(C=Editor.darkMode,
this.doSetDarkMode(k.dark),C!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=k.border&&(this.embedExportBorder=k.border);null!=k.background&&(this.embedExportBackground=k.background);null!=k.viewport&&(this.embedViewport=k.viewport);this.embedExitPoint=null;if(null!=k.rect){var J=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=k.rect.top+"px";this.diagramContainer.style.left=k.rect.left+"px";this.diagramContainer.style.height=
k.rect.height+"px";this.diagramContainer.style.width=k.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";l=mxUtils.bind(this,function(){var b=this.editor.graph,c=b.maxFitScale;b.maxFitScale=k.maxFitScale;b.fit(2*J);b.maxFitScale=c;b.container.scrollTop-=2*J;b.container.scrollLeft-=2*J;this.fireEvent(new mxEventObject("editInlineStart","data",[k]))})}null!=k.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=k.noExitBtn);null!=k.title&&null!=this.buttonContainer&&
-(t=document.createElement("span"),mxUtils.write(t,k.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=t);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(da){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var W=this.getCurrentFile();null!=W&&(t=m(k.xml),null!=t&&""!=t&&W.mergeFile(new LocalFile(this,t),function(){n.postMessage(JSON.stringify({event:"merge",
-message:k}),"*")},function(b){n.postMessage(JSON.stringify({event:"merge",message:k,error:b}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(n):"remoteInvoke"==k.action?this.handleRemoteInvoke(k,g.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):n.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(da){this.handleError(da)}}var ca=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&
-1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),aa=mxUtils.bind(this,function(g,k){d=!0;try{b(g,k,null,p)}catch(ga){this.handleError(ga)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");f=ca();e&&null==c&&(c=mxUtils.bind(this,function(b,c){var e=ca();if(e!=f&&!d){var g=this.createLoadMessage("autosave");g.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}f=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,c),this.editor.graph.addListener("gridSizeChanged",
+(t=document.createElement("span"),mxUtils.write(t,k.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=t);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(ea){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var W=this.getCurrentFile();null!=W&&(t=m(k.xml),null!=t&&""!=t&&W.mergeFile(new LocalFile(this,t),function(){n.postMessage(JSON.stringify({event:"merge",
+message:k}),"*")},function(b){n.postMessage(JSON.stringify({event:"merge",message:k,error:b}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(n):"remoteInvoke"==k.action?this.handleRemoteInvoke(k,g.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):n.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(ea){this.handleError(ea)}}var da=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&
+1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),aa=mxUtils.bind(this,function(g,k){d=!0;try{b(g,k,null,p)}catch(ha){this.handleError(ha)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");f=da();e&&null==c&&(c=mxUtils.bind(this,function(b,c){var e=da();if(e!=f&&!d){var g=this.createLoadMessage("autosave");g.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}f=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,c),this.editor.graph.addListener("gridSizeChanged",
c),this.editor.graph.addListener("shadowVisibleChanged",c),this.addListener("pageFormatChanged",c),this.addListener("pageScaleChanged",c),this.addListener("backgroundColorChanged",c),this.addListener("backgroundImageChanged",c),this.addListener("foldingEnabledChanged",c),this.addListener("mathEnabledChanged",c),this.addListener("gridEnabledChanged",c),this.addListener("guidesEnabledChanged",c),this.addListener("pageViewChanged",c));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var m=this.createLoadMessage("load");
m.xml=g;n.postMessage(JSON.stringify(m),"*")}null!=l&&l()});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(m="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(b){aa(b,g)},mxUtils.bind(this,function(b){this.handleError(b)}),m)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFileData(k,mxUtils.bind(this,
-function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&aa(b.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){aa(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),aa(k,g)):this.loadDescriptor(k,mxUtils.bind(this,function(b){aa(ca(),g)}),mxUtils.bind(this,function(b){this.handleError(b,
+function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&aa(b.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){aa(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),aa(k,g)):this.loadDescriptor(k,mxUtils.bind(this,function(b){aa(da(),g)}),mxUtils.bind(this,function(b){this.handleError(b,
mxResources.get("errorLoadingFile"))}))}}));var n=window.opener||window.parent,l="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";n.postMessage(l,"*");if("json"==urlParams.proto){var q=this.editor.graph.openLink;this.editor.graph.openLink=function(b,c,d){q.apply(this,arguments);n.postMessage(JSON.stringify({event:"openLink",href:b,target:c,allowOpener:d}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var b=document.createElement("div");
b.style.display="inline-block";b.style.position="absolute";b.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";b.style.paddingLeft="8px";b.style.paddingBottom="2px";var c=document.createElement("button");c.className="geBigButton";var e=c;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var f="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,f);c.setAttribute("title",f);mxEvent.addListener(c,"click",mxUtils.bind(this,
function(){this.actions.get("saveAndExit").funct()}));b.appendChild(c)}}else mxUtils.write(c,mxResources.get("save")),c.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),b.appendChild(c),"1"==urlParams.saveAndExit&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("saveAndExit")),c.setAttribute("title",mxResources.get("saveAndExit")),c.className="geBigButton geBigStandardButton",
c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),b.appendChild(c),e=c);"1"!=urlParams.noExitBtn&&(c=document.createElement("a"),e="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(c,e),c.setAttribute("title",e),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),b.appendChild(c),
e=c);e.style.marginRight="20px";this.toolbar.container.appendChild(b);this.toolbar.staticElements.push(b);b.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(b){this.importCsv(b)}),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.executeLayoutList=function(b,c){for(var d=this.editor.graph,e=d.getSelectionCells(),f=0;f<b.length;f++){var k=new window[b[f].layout](d);if(null!=b[f].config)for(var l in b[f].config)k[l]=b[f].config[l];this.executeLayout(function(){k.execute(d.getDefaultParent(),0==e.length?null:e)},f==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),
-e=[],f=[],k=[],l={};if(0<d.length){for(var n={},q=this.editor.graph,y=null,F=null,D=null,E=null,H=null,N=null,A="whiteSpace=wrap;html=1;",G=null,I=null,L="",M="auto",K="auto",O=null,U=null,X=40,ma=40,ba=100,S=0,x=function(){null!=c?c(Z):(q.setSelectionCells(Z),q.scrollCellToVisible(q.getSelectionCell()))},C=q.getFreeInsertPoint(),J=C.x,W=C.y,C=W,ca=null,aa="auto",I=null,da=[],ta=null,ua=null,ga=0;ga<d.length&&"#"==d[ga].charAt(0);){b=d[ga];for(ga++;ga<d.length&&"\\"==b.charAt(b.length-1)&&"#"==d[ga].charAt(0);)b=
-b.substring(0,b.length-1)+mxUtils.trim(d[ga].substring(1)),ga++;if("#"!=b.charAt(1)){var na=b.indexOf(":");if(0<na){var Y=mxUtils.trim(b.substring(1,na)),Q=mxUtils.trim(b.substring(na+1));"label"==Y?ca=q.sanitizeHtml(Q):"labelname"==Y&&0<Q.length&&"-"!=Q?H=Q:"labels"==Y&&0<Q.length&&"-"!=Q?N=JSON.parse(Q):"style"==Y?F=Q:"parentstyle"==Y?A=Q:"stylename"==Y&&0<Q.length&&"-"!=Q?E=Q:"styles"==Y&&0<Q.length&&"-"!=Q?D=JSON.parse(Q):"vars"==Y&&0<Q.length&&"-"!=Q?y=JSON.parse(Q):"identity"==Y&&0<Q.length&&
-"-"!=Q?G=Q:"parent"==Y&&0<Q.length&&"-"!=Q?I=Q:"namespace"==Y&&0<Q.length&&"-"!=Q?L=Q:"width"==Y?M=Q:"height"==Y?K=Q:"left"==Y&&0<Q.length?O=Q:"top"==Y&&0<Q.length?U=Q:"ignore"==Y?ua=Q.split(","):"connect"==Y?da.push(JSON.parse(Q)):"link"==Y?ta=Q:"padding"==Y?S=parseFloat(Q):"edgespacing"==Y?X=parseFloat(Q):"nodespacing"==Y?ma=parseFloat(Q):"levelspacing"==Y?ba=parseFloat(Q):"layout"==Y&&(aa=Q)}}}if(null==d[ga])throw Error(mxResources.get("invalidOrMissingFile"));for(var ea=this.editor.csvToArray(d[ga]),
-Y=na=null,Q=[],T=0;T<ea.length;T++)G==ea[T]&&(na=T),I==ea[T]&&(Y=T),Q.push(mxUtils.trim(ea[T]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==ca&&(ca="%"+Q[0]+"%");if(null!=da)for(var la=0;la<da.length;la++)null==n[da[la].to]&&(n[da[la].to]={});G=[];for(T=ga+1;T<d.length;T++){var oa=this.editor.csvToArray(d[T]);if(null==oa){var ra=40<d[T].length?d[T].substring(0,40)+"...":d[T];throw Error(ra+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));}0<oa.length&&G.push(oa)}q.model.beginUpdate();
-try{for(T=0;T<G.length;T++){var oa=G[T],R=null,qa=null!=na?L+oa[na]:null;null!=qa&&(R=q.model.getCell(qa));var d=null!=R,ia=new mxCell(ca,new mxGeometry(J,C,0,0),F||"whiteSpace=wrap;html=1;");ia.vertex=!0;ia.id=qa;for(var fa=0;fa<oa.length;fa++)q.setAttributeForCell(ia,Q[fa],oa[fa]);if(null!=H&&null!=N){var ha=N[ia.getAttribute(H)];null!=ha&&q.labelChanged(ia,ha)}if(null!=E&&null!=D){var pa=D[ia.getAttribute(E)];null!=pa&&(ia.style=pa)}q.setAttributeForCell(ia,"placeholders","1");ia.style=q.replacePlaceholders(ia,
-ia.style,y);d?(0>mxUtils.indexOf(k,R)&&k.push(R),q.fireEvent(new mxEventObject("cellsInserted","cells",[R]))):q.fireEvent(new mxEventObject("cellsInserted","cells",[ia]));R=ia;if(!d)for(la=0;la<da.length;la++)n[da[la].to][R.getAttribute(da[la].to)]=R;null!=ta&&"link"!=ta&&(q.setLinkForCell(R,R.getAttribute(ta)),q.setAttributeForCell(R,ta,null));var Aa=this.editor.graph.getPreferredSizeForCell(R),I=null!=Y?q.model.getCell(L+oa[Y]):null;if(R.vertex){ra=null!=I?0:J;ga=null!=I?0:W;null!=O&&null!=R.getAttribute(O)&&
-(R.geometry.x=ra+parseFloat(R.getAttribute(O)));null!=U&&null!=R.getAttribute(U)&&(R.geometry.y=ga+parseFloat(R.getAttribute(U)));var xa="@"==M.charAt(0)?R.getAttribute(M.substring(1)):null;R.geometry.width=null!=xa&&"auto"!=xa?parseFloat(R.getAttribute(M.substring(1))):"auto"==M||"auto"==xa?Aa.width+S:parseFloat(M);var sa="@"==K.charAt(0)?R.getAttribute(K.substring(1)):null;R.geometry.height=null!=sa&&"auto"!=sa?parseFloat(sa):"auto"==K||"auto"==sa?Aa.height+S:parseFloat(K);C+=R.geometry.height+
-ma}d?(null==l[qa]&&(l[qa]=[]),l[qa].push(R)):(e.push(R),null!=I?(I.style=q.replacePlaceholders(I,A,y),q.addCell(R,I),f.push(I)):k.push(q.addCell(R)))}for(T=0;T<f.length;T++)xa="@"==M.charAt(0)?f[T].getAttribute(M.substring(1)):null,sa="@"==K.charAt(0)?f[T].getAttribute(K.substring(1)):null,"auto"!=M&&"auto"!=xa||"auto"!=K&&"auto"!=sa||q.updateGroupBounds([f[T]],S,!0);for(var ja=k.slice(),Z=k.slice(),la=0;la<da.length;la++)for(var P=da[la],T=0;T<e.length;T++){var R=e[T],Ga=mxUtils.bind(this,function(b,
+e=[],f=[],k=[],l={};if(0<d.length){for(var n={},q=this.editor.graph,y=null,F=null,D=null,E=null,H=null,N=null,A="whiteSpace=wrap;html=1;",G=null,I=null,L="",M="auto",K="auto",O=null,U=null,X=40,na=40,ca=100,S=0,x=function(){null!=c?c(Z):(q.setSelectionCells(Z),q.scrollCellToVisible(q.getSelectionCell()))},C=q.getFreeInsertPoint(),J=C.x,W=C.y,C=W,da=null,aa="auto",I=null,ea=[],ta=null,ua=null,ha=0;ha<d.length&&"#"==d[ha].charAt(0);){b=d[ha];for(ha++;ha<d.length&&"\\"==b.charAt(b.length-1)&&"#"==d[ha].charAt(0);)b=
+b.substring(0,b.length-1)+mxUtils.trim(d[ha].substring(1)),ha++;if("#"!=b.charAt(1)){var oa=b.indexOf(":");if(0<oa){var Y=mxUtils.trim(b.substring(1,oa)),Q=mxUtils.trim(b.substring(oa+1));"label"==Y?da=q.sanitizeHtml(Q):"labelname"==Y&&0<Q.length&&"-"!=Q?H=Q:"labels"==Y&&0<Q.length&&"-"!=Q?N=JSON.parse(Q):"style"==Y?F=Q:"parentstyle"==Y?A=Q:"stylename"==Y&&0<Q.length&&"-"!=Q?E=Q:"styles"==Y&&0<Q.length&&"-"!=Q?D=JSON.parse(Q):"vars"==Y&&0<Q.length&&"-"!=Q?y=JSON.parse(Q):"identity"==Y&&0<Q.length&&
+"-"!=Q?G=Q:"parent"==Y&&0<Q.length&&"-"!=Q?I=Q:"namespace"==Y&&0<Q.length&&"-"!=Q?L=Q:"width"==Y?M=Q:"height"==Y?K=Q:"left"==Y&&0<Q.length?O=Q:"top"==Y&&0<Q.length?U=Q:"ignore"==Y?ua=Q.split(","):"connect"==Y?ea.push(JSON.parse(Q)):"link"==Y?ta=Q:"padding"==Y?S=parseFloat(Q):"edgespacing"==Y?X=parseFloat(Q):"nodespacing"==Y?na=parseFloat(Q):"levelspacing"==Y?ca=parseFloat(Q):"layout"==Y&&(aa=Q)}}}if(null==d[ha])throw Error(mxResources.get("invalidOrMissingFile"));for(var fa=this.editor.csvToArray(d[ha]),
+Y=oa=null,Q=[],T=0;T<fa.length;T++)G==fa[T]&&(oa=T),I==fa[T]&&(Y=T),Q.push(mxUtils.trim(fa[T]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==da&&(da="%"+Q[0]+"%");if(null!=ea)for(var la=0;la<ea.length;la++)null==n[ea[la].to]&&(n[ea[la].to]={});G=[];for(T=ha+1;T<d.length;T++){var pa=this.editor.csvToArray(d[T]);if(null==pa){var ra=40<d[T].length?d[T].substring(0,40)+"...":d[T];throw Error(ra+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));}0<pa.length&&G.push(pa)}q.model.beginUpdate();
+try{for(T=0;T<G.length;T++){var pa=G[T],R=null,qa=null!=oa?L+pa[oa]:null;null!=qa&&(R=q.model.getCell(qa));var d=null!=R,ia=new mxCell(da,new mxGeometry(J,C,0,0),F||"whiteSpace=wrap;html=1;");ia.vertex=!0;ia.id=qa;for(var ga=0;ga<pa.length;ga++)q.setAttributeForCell(ia,Q[ga],pa[ga]);if(null!=H&&null!=N){var ba=N[ia.getAttribute(H)];null!=ba&&q.labelChanged(ia,ba)}if(null!=E&&null!=D){var ma=D[ia.getAttribute(E)];null!=ma&&(ia.style=ma)}q.setAttributeForCell(ia,"placeholders","1");ia.style=q.replacePlaceholders(ia,
+ia.style,y);d?(0>mxUtils.indexOf(k,R)&&k.push(R),q.fireEvent(new mxEventObject("cellsInserted","cells",[R]))):q.fireEvent(new mxEventObject("cellsInserted","cells",[ia]));R=ia;if(!d)for(la=0;la<ea.length;la++)n[ea[la].to][R.getAttribute(ea[la].to)]=R;null!=ta&&"link"!=ta&&(q.setLinkForCell(R,R.getAttribute(ta)),q.setAttributeForCell(R,ta,null));var Aa=this.editor.graph.getPreferredSizeForCell(R),I=null!=Y?q.model.getCell(L+pa[Y]):null;if(R.vertex){ra=null!=I?0:J;ha=null!=I?0:W;null!=O&&null!=R.getAttribute(O)&&
+(R.geometry.x=ra+parseFloat(R.getAttribute(O)));null!=U&&null!=R.getAttribute(U)&&(R.geometry.y=ha+parseFloat(R.getAttribute(U)));var xa="@"==M.charAt(0)?R.getAttribute(M.substring(1)):null;R.geometry.width=null!=xa&&"auto"!=xa?parseFloat(R.getAttribute(M.substring(1))):"auto"==M||"auto"==xa?Aa.width+S:parseFloat(M);var sa="@"==K.charAt(0)?R.getAttribute(K.substring(1)):null;R.geometry.height=null!=sa&&"auto"!=sa?parseFloat(sa):"auto"==K||"auto"==sa?Aa.height+S:parseFloat(K);C+=R.geometry.height+
+na}d?(null==l[qa]&&(l[qa]=[]),l[qa].push(R)):(e.push(R),null!=I?(I.style=q.replacePlaceholders(I,A,y),q.addCell(R,I),f.push(I)):k.push(q.addCell(R)))}for(T=0;T<f.length;T++)xa="@"==M.charAt(0)?f[T].getAttribute(M.substring(1)):null,sa="@"==K.charAt(0)?f[T].getAttribute(K.substring(1)):null,"auto"!=M&&"auto"!=xa||"auto"!=K&&"auto"!=sa||q.updateGroupBounds([f[T]],S,!0);for(var ja=k.slice(),Z=k.slice(),la=0;la<ea.length;la++)for(var P=ea[la],T=0;T<e.length;T++){var R=e[T],Ga=mxUtils.bind(this,function(b,
c,d){var e=c.getAttribute(d.from);if(null!=e&&""!=e)for(var e=e.split(","),g=0;g<e.length;g++){var f=n[d.to][e[g]];if(null==f){f=new mxCell(e[g],new mxGeometry(J,W,0,0),F||"whiteSpace=wrap;html=1;");f.style=q.replacePlaceholders(c,f.style,y);var l=this.editor.graph.getPreferredSizeForCell(f);f.geometry.width=l.width+S;f.geometry.height=l.height+S;n[d.to][e[g]]=f;f.vertex=!0;f.id=e[g];k.push(q.addCell(f))}l=d.label;null!=d.fromlabel&&(l=(c.getAttribute(d.fromlabel)||"")+(l||""));null!=d.sourcelabel&&
(l=q.replacePlaceholders(c,d.sourcelabel,y)+(l||""));null!=d.tolabel&&(l=(l||"")+(f.getAttribute(d.tolabel)||""));null!=d.targetlabel&&(l=(l||"")+q.replacePlaceholders(f,d.targetlabel,y));var m="target"==d.placeholders==!d.invert?f:b,m=null!=d.style?q.replacePlaceholders(m,d.style,y):q.createCurrentEdgeStyle(),l=q.insertEdge(null,null,l||"",d.invert?f:b,d.invert?b:f,m);if(null!=d.labels)for(m=0;m<d.labels.length;m++){var p=d.labels[m],t=new mxCell(p.label||m,new mxGeometry(null!=p.x?p.x:0,null!=p.y?
-p.y:0,0,0),"resizable=0;html=1;");t.vertex=!0;t.connectable=!1;t.geometry.relative=!0;null!=p.placeholders&&(t.value=q.replacePlaceholders("target"==p.placeholders==!d.invert?f:b,t.value,y));if(null!=p.dx||null!=p.dy)t.geometry.offset=new mxPoint(null!=p.dx?p.dx:0,null!=p.dy?p.dy:0);l.insert(t)}Z.push(l);mxUtils.remove(d.invert?b:f,ja)}});Ga(R,R,P);if(null!=l[R.id])for(fa=0;fa<l[R.id].length;fa++)Ga(R,l[R.id][fa],P)}if(null!=ua)for(T=0;T<e.length;T++)for(R=e[T],fa=0;fa<ua.length;fa++)q.setAttributeForCell(R,
-mxUtils.trim(ua[fa]),null);if(0<k.length){var Da=new mxParallelEdgeLayout(q);Da.spacing=X;Da.checkOverlap=!0;var ya=function(){0<Da.spacing&&Da.execute(q.getDefaultParent());for(var b=0;b<k.length;b++){var c=q.getCellGeometry(k[b]);c.x=Math.round(q.snap(c.x));c.y=Math.round(q.snap(c.y));"auto"==M&&(c.width=Math.round(q.snap(c.width)));"auto"==K&&(c.height=Math.round(q.snap(c.height)))}};if("["==aa.charAt(0)){var Ea=x;q.view.validate();this.executeLayoutList(JSON.parse(aa),function(){ya();Ea()});x=
-null}else if("circle"==aa){var va=new mxCircleLayout(q);va.disableEdgeStyle=!1;va.resetEdges=!1;var Ha=va.isVertexIgnored;va.isVertexIgnored=function(b){return Ha.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){va.execute(q.getDefaultParent());ya()},!0,x);x=null}else if("horizontaltree"==aa||"verticaltree"==aa||"auto"==aa&&Z.length==2*k.length-1&&1==ja.length){q.view.validate();var Ca=new mxCompactTreeLayout(q,"horizontaltree"==aa);Ca.levelDistance=ma;Ca.edgeRouting=!1;
-Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(q.getDefaultParent(),0<ja.length?ja[0]:null)},!0,x);x=null}else if("horizontalflow"==aa||"verticalflow"==aa||"auto"==aa&&1==ja.length){q.view.validate();var za=new mxHierarchicalLayout(q,"horizontalflow"==aa?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);za.intraCellSpacing=ma;za.parallelEdgeSpacing=X;za.interRankCellSpacing=ba;za.disableEdgeStyle=!1;this.executeLayout(function(){za.execute(q.getDefaultParent(),Z);q.moveCells(Z,J,
-W)},!0,x);x=null}else if("organic"==aa||"auto"==aa&&Z.length>k.length){q.view.validate();var Ba=new mxFastOrganicLayout(q);Ba.forceConstant=3*ma;Ba.disableEdgeStyle=!1;Ba.resetEdges=!1;var V=Ba.isVertexIgnored;Ba.isVertexIgnored=function(b){return V.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){Ba.execute(q.getDefaultParent());ya()},!0,x);x=null}}this.hideDialog()}finally{q.model.endUpdate()}null!=x&&x()}}catch(Fa){this.handleError(Fa)}};EditorUi.prototype.getSearch=
+p.y:0,0,0),"resizable=0;html=1;");t.vertex=!0;t.connectable=!1;t.geometry.relative=!0;null!=p.placeholders&&(t.value=q.replacePlaceholders("target"==p.placeholders==!d.invert?f:b,t.value,y));if(null!=p.dx||null!=p.dy)t.geometry.offset=new mxPoint(null!=p.dx?p.dx:0,null!=p.dy?p.dy:0);l.insert(t)}Z.push(l);mxUtils.remove(d.invert?b:f,ja)}});Ga(R,R,P);if(null!=l[R.id])for(ga=0;ga<l[R.id].length;ga++)Ga(R,l[R.id][ga],P)}if(null!=ua)for(T=0;T<e.length;T++)for(R=e[T],ga=0;ga<ua.length;ga++)q.setAttributeForCell(R,
+mxUtils.trim(ua[ga]),null);if(0<k.length){var Da=new mxParallelEdgeLayout(q);Da.spacing=X;Da.checkOverlap=!0;var ya=function(){0<Da.spacing&&Da.execute(q.getDefaultParent());for(var b=0;b<k.length;b++){var c=q.getCellGeometry(k[b]);c.x=Math.round(q.snap(c.x));c.y=Math.round(q.snap(c.y));"auto"==M&&(c.width=Math.round(q.snap(c.width)));"auto"==K&&(c.height=Math.round(q.snap(c.height)))}};if("["==aa.charAt(0)){var Ea=x;q.view.validate();this.executeLayoutList(JSON.parse(aa),function(){ya();Ea()});x=
+null}else if("circle"==aa){var va=new mxCircleLayout(q);va.disableEdgeStyle=!1;va.resetEdges=!1;var Ha=va.isVertexIgnored;va.isVertexIgnored=function(b){return Ha.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){va.execute(q.getDefaultParent());ya()},!0,x);x=null}else if("horizontaltree"==aa||"verticaltree"==aa||"auto"==aa&&Z.length==2*k.length-1&&1==ja.length){q.view.validate();var Ca=new mxCompactTreeLayout(q,"horizontaltree"==aa);Ca.levelDistance=na;Ca.edgeRouting=!1;
+Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(q.getDefaultParent(),0<ja.length?ja[0]:null)},!0,x);x=null}else if("horizontalflow"==aa||"verticalflow"==aa||"auto"==aa&&1==ja.length){q.view.validate();var za=new mxHierarchicalLayout(q,"horizontalflow"==aa?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);za.intraCellSpacing=na;za.parallelEdgeSpacing=X;za.interRankCellSpacing=ca;za.disableEdgeStyle=!1;this.executeLayout(function(){za.execute(q.getDefaultParent(),Z);q.moveCells(Z,J,
+W)},!0,x);x=null}else if("organic"==aa||"auto"==aa&&Z.length>k.length){q.view.validate();var Ba=new mxFastOrganicLayout(q);Ba.forceConstant=3*na;Ba.disableEdgeStyle=!1;Ba.resetEdges=!1;var V=Ba.isVertexIgnored;Ba.isVertexIgnored=function(b){return V.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){Ba.execute(q.getDefaultParent());ya()},!0,x);x=null}}this.hideDialog()}finally{q.model.endUpdate()}null!=x&&x()}}catch(Fa){this.handleError(Fa)}};EditorUi.prototype.getSearch=
function(b){var c="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var d="?",e;for(e in urlParams)0>mxUtils.indexOf(b,e)&&null!=urlParams[e]&&(c+=d+e+"="+urlParams[e],d="&")}else c=window.location.search;return c};EditorUi.prototype.getUrl=function(b){b=null!=b?b:window.location.pathname;var c=0<b.indexOf("?")?1:0;if("1"==urlParams.offline)b+=window.location.search;else{var d="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),
e;for(e in urlParams)0>mxUtils.indexOf(d,e)&&(b=0==c?b+"?":b+"&",null!=urlParams[e]&&(b+=e+"="+urlParams[e],c++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,e,f,l){b=new LinkDialog(this,b,c,e,!0,f,l);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=function(b){var c=1;null==this.drive&&"function"!==typeof window.DriveClient||c++;null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||
c++;null!=this.gitHub&&c++;null!=this.gitLab&&c++;null!=this.notion&&c++;b&&isLocalStorage&&"1"==urlParams.browser&&c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var b=this.getCurrentFile(),c=null!=b||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(c);this.menus.get("viewZoom").setEnabled(c);var e=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==b||b.isRestricted());this.actions.get("makeCopy").setEnabled(!e);
@@ -3925,12 +3931,12 @@ c==mxConstants.DIRECTION_WEST?-1:1,0<=e&&e<=f.length-1&&t.setSelectionCell(f[e].
var F=t.removeCells;t.removeCells=function(c,d){d=null!=d?d:!0;null==c&&(c=this.getDeletableCells(this.getSelectionCells()));d&&(c=this.getDeletableCells(this.addAllEdges(c)));for(var f=[],g=0;g<c.length;g++){var k=c[g];z.isEdge(k)&&e(k)&&(f.push(k),k=z.getTerminal(k,!1));if(b(k)){var l=[];t.traverse(k,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});0<l.length&&(f=f.concat(l),k=t.getIncomingTreeEdges(c[g]),c=c.concat(k))}else null!=k&&f.push(c[g])}c=
f;return F.apply(this,arguments)};u.hoverIcons.getStateAt=function(c,d,e){return b(c.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,e))};var D=t.duplicateCells;t.duplicateCells=function(c,d){c=null!=c?c:this.getSelectionCells();for(var e=c.slice(0),f=0;f<e.length;f++){var g=t.view.getState(e[f]);if(null!=g&&b(g.cell))for(var k=t.getIncomingTreeEdges(g.cell),g=0;g<k.length;g++)mxUtils.remove(k[g],c)}this.model.beginUpdate();try{var l=D.call(this,c,d);if(l.length==c.length)for(f=0;f<c.length;f++)if(b(c[f])){var m=
t.getIncomingTreeEdges(l[f]),k=t.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,t.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var E=t.moveCells;t.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var n=g,p=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||t.model.isEdge(c[q])&&null==t.model.getTerminal(c[q],
-!0)){g=t.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var u=t.getIncomingTreeEdges(c[0]);if(0<u.length){var x=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=x){var v=t.view.getState(n);null!=v&&(d=(v.getCenterX()-x.getCenterX())/t.view.scale,e=(v.getCenterY()-x.getCenterY())/t.view.scale)}}}}m=E.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
+!0)){g=t.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var u=t.getIncomingTreeEdges(c[0]);if(0<u.length){var v=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=v){var A=t.view.getState(n);null!=A&&(d=(A.getCenterX()-v.getCenterX())/t.view.scale,e=(A.getCenterY()-v.getCenterY())/t.view.scale)}}}}m=E.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
!0))&&this.model.setTerminal(m[q],n,!0);else if(b(c[q])&&(u=t.getIncomingTreeEdges(c[q]),0<u.length))if(!f)b(n)&&0>mxUtils.indexOf(c,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],n,!0);else if(0==t.getIncomingTreeEdges(m[q]).length){p=n;if(null==p||p==t.model.getParent(c[q]))p=t.model.getTerminal(u[0],!0);f=this.cloneCell(u[0]);this.addEdge(f,t.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=u.sidebar){var H=u.sidebar.dropAndConnect;u.sidebar.dropAndConnect=
function(c,d,e,f){var g=t.model,k=null;g.beginUpdate();try{if(k=H.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=t.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var N={88:u.actions.get("selectChildren"),84:u.actions.get("selectSubtree"),80:u.actions.get("selectParent"),83:u.actions.get("selectSiblings")},A=u.onKeyDown;u.onKeyDown=function(c){try{if(t.isEnabled()&&
!t.isEditing()&&b(t.getSelectionCell())&&1==t.getSelectionCount()){var d=null;0<t.getIncomingTreeEdges(t.getSelectionCell()).length&&(9==c.which?d=mxEvent.isShiftDown(c)?g(t.getSelectionCell()):p(t.getSelectionCell()):13==c.which&&(d=k(t.getSelectionCell(),!mxEvent.isShiftDown(c))));if(null!=d&&0<d.length)1==d.length&&t.model.isEdge(d[0])?t.setSelectionCell(t.model.getTerminal(d[0],!1)):t.setSelectionCell(d[d.length-1]),null!=u.hoverIcons&&u.hoverIcons.update(t.view.getState(t.getSelectionCell())),
t.startEditingAtCell(t.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=N[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(v(t.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(v(t.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(v(t.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(v(t.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(c))}}catch(ma){u.handleError(ma)}mxEvent.isConsumed(c)||A.apply(this,arguments)};var G=t.connectVertex;t.connectVertex=function(c,e,f,l,m,n,q){var u=t.getIncomingTreeEdges(c);if(b(c)){var x=d(c),v=x==mxConstants.DIRECTION_EAST||x==mxConstants.DIRECTION_WEST,A=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return x==e||0==u.length?p(c,e):v==A?g(c):k(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return G.apply(this,arguments)};t.getSubtree=function(d){var e=
+mxEvent.consume(c))}}catch(na){u.handleError(na)}mxEvent.isConsumed(c)||A.apply(this,arguments)};var G=t.connectVertex;t.connectVertex=function(c,e,f,l,m,n,q){var u=t.getIncomingTreeEdges(c);if(b(c)){var v=d(c),A=v==mxConstants.DIRECTION_EAST||v==mxConstants.DIRECTION_WEST,x=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return v==e||0==u.length?p(c,e):A==x?g(c):k(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return G.apply(this,arguments)};t.getSubtree=function(d){var e=
[d];!c(d)&&!b(d)||q(d)||t.traverse(d,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&0>mxUtils.indexOf(e,c)&&e.push(c);(null==c||d)&&0>mxUtils.indexOf(e,b)&&e.push(b);return null==c||d});return e};var I=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){I.apply(this,arguments);(c(this.state.cell)||b(this.state.cell))&&!q(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(b){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(b);
this.graph.isMouseDown=!0;u.hoverIcons.reset();mxEvent.consume(b)})))};var L=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){L.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 M=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){M.apply(this,
@@ -4025,7 +4031,7 @@ k.style.width="34px"):mxUtils.write(k,b);mxEvent.addListener(k,mxClient.IS_POINT
f.addListener("stateChanged",b),n.addListener("enabledChanged",b),b());return k}function g(b,c,d){d=document.createElement("div");d.className="geMenuItem";d.style.display="inline-block";d.style.verticalAlign="top";d.style.marginRight="6px";d.style.padding="0 4px 0 4px";d.style.height="30px";d.style.position="relative";d.style.top="0px";"1"==urlParams.sketch&&(d.style.boxShadow="none");for(var e=0;e<b.length;e++)null!=b[e]&&("1"==urlParams.sketch&&(b[e].style.padding="10px 8px",b[e].style.width="30px"),
b[e].style.margin="0px",b[e].style.boxShadow="none",d.appendChild(b[e]));null!=c&&mxUtils.setOpacity(d,c);null!=m.statusContainer&&"1"!=urlParams.sketch?p.insertBefore(d,m.statusContainer):p.appendChild(d);return d}function k(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(H.style.left=58>F.offsetTop-F.offsetHeight/2?"70px":"10px");else{for(var b=p.firstChild;null!=b;){var e=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=e}q=p.firstChild;f=window.innerWidth||
document.documentElement.clientWidth||document.body.clientWidth;var b=1E3>f||"1"==urlParams.sketch,k=null;b||(k=c("diagram"));e=b?c("diagram",null,Editor.drawLogoImage):null;null!=e&&(k=e);g([k,d(mxResources.get("shapes"),m.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),m.actions.get("image"),b?Editor.shapesImage:null),d(mxResources.get("format"),m.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+m.actions.get("formatPanel").shortcut+")",m.actions.get("image"),
-b?Editor.formatImage:null)],b?60:null);e=c("insert",!0,b?E:null);g([e,d(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=f&&(g([ha,pa],60),520<=f&&g([Ga,640<=f?d("",ra.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",ra,Editor.zoomInImage):null,640<=f?d("",R.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",R,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
+b?Editor.formatImage:null)],b?60:null);e=c("insert",!0,b?E:null);g([e,d(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=f&&(g([ba,ma],60),520<=f&&g([Ga,640<=f?d("",ra.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",ra,Editor.zoomInImage):null,640<=f?d("",R.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",R,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
mxEvent.addGestureListeners(k,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&m.appIconClicked(b)}),null,null));e=m.menus.get("language");null!=e&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f&&"1"!=urlParams.sketch?(null==ya&&(e=t.addMenu("",e.funct),e.setAttribute("title",mxResources.get("language")),e.className="geToolbarButton",e.style.backgroundImage="url("+Editor.globeImage+")",
e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.position="absolute",e.style.height="24px",e.style.width="24px",e.style.zIndex="1",e.style.right="8px",e.style.cursor="pointer",e.style.top="1"==urlParams.embed?"12px":"11px",p.appendChild(e),ya=e),m.buttonContainer.style.paddingRight="34px"):(m.buttonContainer.style.paddingRight="4px",null!=ya&&(ya.parentNode.removeChild(ya),ya=null))}N.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 l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";l.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(l);"1"==urlParams.sketch&&
@@ -4043,29 +4049,29 @@ rect:m.diagramContainer.getBoundingClientRect()}),"*");m.refresh()}H.style.left=
m.bottomResizer.offsetWidth)/2+"px";m.bottomResizer.style.top=m.diagramContainer.offsetTop+m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight/2-1+"px";m.rightResizer.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-m.rightResizer.offsetWidth/2-1+"px";m.rightResizer.style.top=m.diagramContainer.offsetTop+(m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight)/2+"px"}m.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";m.rightResizer.style.visibility=
m.bottomResizer.style.visibility;p.style.display="none";H.style.visibility="";D.style.visibility=""}),ua=mxUtils.bind(this,function(){Aa.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";ta()}),z=mxUtils.bind(this,function(){ua();b(m,!0);m.initFormatWindow();var c=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(c.x+
c.width+4,c.y)});m.addListener("inlineFullscreenChanged",ua);m.addListener("editInlineStart",z);"1"==urlParams.embedInline&&m.addListener("darkModeChanged",z);m.addListener("editInlineStop",mxUtils.bind(this,function(b){m.diagramContainer.style.width="10px";m.diagramContainer.style.height="10px";m.diagramContainer.style.border="";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";H.style.visibility="hidden";D.style.visibility="hidden";F.style.display="none"}));if(null!=
-m.hoverIcons){var ga=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||ga.apply(this,arguments)}}if(null!=n.freehand){var na=n.freehand.createStyle;n.freehand.createStyle=function(b){return na.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){F.className="geToolbarContainer";D.className="geToolbarContainer";H.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=F;var Y=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
+m.hoverIcons){var ha=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||ha.apply(this,arguments)}}if(null!=n.freehand){var oa=n.freehand.createStyle;n.freehand.createStyle=function(b){return oa.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){F.className="geToolbarContainer";D.className="geToolbarContainer";H.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=F;var Y=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
"inline-block"});mxEvent.addListener(p,"mouseleave",function(){Y||(m.statusContainer.style.display="none")});var Q=mxUtils.bind(this,function(b){null!=m.notificationBtn&&(null!=b?m.notificationBtn.setAttribute("title",b):m.notificationBtn.removeAttribute("title"))});"1"!=urlParams.embed?(p.style.visibility=14>p.clientWidth?"hidden":"",m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus());if(0==m.statusContainer.children.length||1==m.statusContainer.children.length&&
"function"===typeof m.statusContainer.firstChild.getAttribute&&null==m.statusContainer.firstChild.getAttribute("class")){var b=null!=m.statusContainer.firstChild&&"function"===typeof m.statusContainer.firstChild.getAttribute?m.statusContainer.firstChild.getAttribute("title"):m.editor.getStatus();Q(b);var c=m.getCurrentFile(),c=null!=c?c.savingStatusKey:DrawioFile.prototype.savingStatusKey;b==mxResources.get(c)+"..."?(m.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(c))+
'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",Y=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",Y=!1)}else m.statusContainer.style.display="inline-block",Q(null),Y=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));P=c("diagram",null,Editor.menuImage);P.style.boxShadow="none";P.style.padding="6px";P.style.margin="0px";
H.appendChild(P);mxEvent.disableContextMenu(P);mxEvent.addGestureListeners(P,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(f-240,280)+"px";m.statusContainer.style.display=
-"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.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 T=!1,la=mxUtils.bind(this,function(){F.innerHTML="";if(!T){var b=function(b,c,f){b=d("",b.funct,null,c,b,f);b.style.width="40px";b.style.opacity="0.7";return e(b,null,"pointer")},e=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";F.appendChild(b);mxUtils.br(F);return b};e(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
+"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var fa=document.createElement("a");fa.style.padding="0px";fa.style.boxShadow="none";fa.className="geMenuItem";fa.style.display="inline-block";fa.style.width="40px";fa.style.height="12px";fa.style.marginBottom="-2px";fa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";fa.style.backgroundPosition=
+"top center";fa.style.backgroundRepeat="no-repeat";fa.setAttribute("title","Minimize");var T=!1,la=mxUtils.bind(this,function(){F.innerHTML="";if(!T){var b=function(b,c,f){b=d("",b.funct,null,c,b,f);b.style.width="40px";b.style.opacity="0.7";return e(b,null,"pointer")},e=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";F.appendChild(b);mxUtils.br(F);return b};e(m.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)");e(m.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"));e(m.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");e(m.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var b=new mxCell("",new mxGeometry(0,0,n.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,0),!1);
b.geometry.points=[];b.geometry.relative=!0;b.edge=!0;e(m.sidebar.createEdgeTemplateFromCells([b],b.geometry.width,b.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));b=b.clone();b.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";b.geometry.width=n.defaultEdgeLength+20;b.geometry.setTerminalPoint(new mxPoint(0,20),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,20),!1);b=e(m.sidebar.createEdgeTemplateFromCells([b],
b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var f=m.actions.get("toggleShapes");b(f,mxResources.get("shapes")+" ("+f.shortcut+")",E);P=c("table",null,Editor.calendarImage);P.style.boxShadow="none";P.style.opacity="0.7";P.style.padding="6px";
-P.style.margin="0px";P.style.width="37px";e(P,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.addImage)}"1"!=urlParams.embedInline&&F.appendChild(ea)});mxEvent.addListener(ea,"click",mxUtils.bind(this,function(){T?(mxUtils.setPrefixedStyle(F.style,"transform","translate(0, -50%)"),F.style.padding="8px 6px 4px",F.style.top="50%",F.style.bottom="",F.style.height="",ea.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",ea.style.width="40px",ea.style.height=
-"12px",ea.setAttribute("title","Minimize"),T=!1,la()):(F.innerHTML="",F.appendChild(ea),mxUtils.setPrefixedStyle(F.style,"transform","translate(0, 0)"),F.style.top="",F.style.bottom="12px",F.style.padding="0px",F.style.height="24px",ea.style.height="24px",ea.style.backgroundImage="url("+Editor.plusImage+")",ea.setAttribute("title",mxResources.get("insert")),ea.style.width="24px",T=!0)}));la();m.addListener("darkModeChanged",la);m.addListener("sketchModeChanged",la)}else m.editor.addListener("statusChanged",
-mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=y){var oa=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},ra=m.actions.get("zoomIn"),R=m.actions.get("zoomOut"),qa=m.actions.get("resetView"),z=m.actions.get("fullscreen"),ia=m.actions.get("undo"),fa=m.actions.get("redo"),ha=d("",ia.funct,null,mxResources.get("undo")+" ("+ia.shortcut+")",ia,Editor.undoImage),pa=
-d("",fa.funct,null,mxResources.get("redo")+" ("+fa.shortcut+")",fa,Editor.redoImage),Aa=d("",z.funct,null,mxResources.get("fullscreen"),z,Editor.fullscreenImage);if(null!=D){y=function(){Z.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};qa=function(){Z.innerHTML="";null!=m.currentPage&&mxUtils.write(Z,m.currentPage.getName())};Aa.parentNode.removeChild(Aa);var xa=m.actions.get("delete"),sa=d("",xa.funct,null,mxResources.get("delete"),
-xa,Editor.trashImage);sa.style.opacity="0.1";H.appendChild(sa);xa.addListener("stateChanged",function(){sa.style.opacity=xa.enabled?"":"0.1"});var ja=function(){ha.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";pa.style.display=ha.style.display;ha.style.opacity=ia.enabled?"":"0.1";pa.style.opacity=fa.enabled?"":"0.1"};H.appendChild(ha);H.appendChild(pa);ia.addListener("stateChanged",ja);fa.addListener("stateChanged",ja);ja();null!=urlParams.layers&&(ja=m.actions.get("layers"),
+P.style.margin="0px";P.style.width="37px";e(P,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.addImage)}"1"!=urlParams.embedInline&&F.appendChild(fa)});mxEvent.addListener(fa,"click",mxUtils.bind(this,function(){T?(mxUtils.setPrefixedStyle(F.style,"transform","translate(0, -50%)"),F.style.padding="8px 6px 4px",F.style.top="50%",F.style.bottom="",F.style.height="",fa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",fa.style.width="40px",fa.style.height=
+"12px",fa.setAttribute("title","Minimize"),T=!1,la()):(F.innerHTML="",F.appendChild(fa),mxUtils.setPrefixedStyle(F.style,"transform","translate(0, 0)"),F.style.top="",F.style.bottom="12px",F.style.padding="0px",F.style.height="24px",fa.style.height="24px",fa.style.backgroundImage="url("+Editor.plusImage+")",fa.setAttribute("title",mxResources.get("insert")),fa.style.width="24px",T=!0)}));la();m.addListener("darkModeChanged",la);m.addListener("sketchModeChanged",la)}else m.editor.addListener("statusChanged",
+mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=y){var pa=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},ra=m.actions.get("zoomIn"),R=m.actions.get("zoomOut"),qa=m.actions.get("resetView"),z=m.actions.get("fullscreen"),ia=m.actions.get("undo"),ga=m.actions.get("redo"),ba=d("",ia.funct,null,mxResources.get("undo")+" ("+ia.shortcut+")",ia,Editor.undoImage),ma=
+d("",ga.funct,null,mxResources.get("redo")+" ("+ga.shortcut+")",ga,Editor.redoImage),Aa=d("",z.funct,null,mxResources.get("fullscreen"),z,Editor.fullscreenImage);if(null!=D){y=function(){Z.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};qa=function(){Z.innerHTML="";null!=m.currentPage&&mxUtils.write(Z,m.currentPage.getName())};Aa.parentNode.removeChild(Aa);var xa=m.actions.get("delete"),sa=d("",xa.funct,null,mxResources.get("delete"),
+xa,Editor.trashImage);sa.style.opacity="0.1";H.appendChild(sa);xa.addListener("stateChanged",function(){sa.style.opacity=xa.enabled?"":"0.1"});var ja=function(){ba.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";ma.style.display=ba.style.display;ba.style.opacity=ia.enabled?"":"0.1";ma.style.opacity=ga.enabled?"":"0.1"};H.appendChild(ba);H.appendChild(ma);ia.addListener("stateChanged",ja);ga.addListener("stateChanged",ja);ja();null!=urlParams.layers&&(ja=m.actions.get("layers"),
ja=d("",ja.funct,null,mxResources.get("layers"),ja,Editor.layersImage),ja.style.opacity="0.4",D.appendChild(ja));null!=urlParams.tags&&(ja=m.actions.get("tags"),ja=d("",ja.funct,null,mxResources.get("tags"),ja,Editor.tagsImage),ja.style.opacity="0.4",D.appendChild(ja));var Z=this.createPageMenuTab(!1,!0);Z.style.display="none";Z.style.position="";Z.style.marginLeft="";Z.style.top="";Z.style.left="";Z.style.height="100%";Z.style.lineHeight="";Z.style.borderStyle="none";Z.style.padding="3px 0";Z.style.margin=
"0px";Z.style.background="";Z.style.border="";Z.style.boxShadow="none";Z.style.verticalAlign="top";Z.style.width="auto";Z.style.maxWidth="160px";Z.style.position="relative";Z.style.padding="6px";Z.style.textOverflow="ellipsis";Z.style.opacity="0.8";m.editor.addListener("pageSelected",qa);m.editor.addListener("pageRenamed",qa);m.editor.addListener("fileLoaded",qa);qa();null!=m.currentPage&&(mxUtils.write(P,m.currentPage.getName()),console.log("initial page not emptry"));D.appendChild(Z);m.addListener("fileDescriptorChanged",
y);m.addListener("pagesVisibleChanged",y);y();y=d("",R.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",R,Editor.zoomOutImage);D.appendChild(y);var P=document.createElement("div");P.innerHTML="100%";P.setAttribute("title",mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");P.style.display="inline-block";P.style.cursor="pointer";P.style.textAlign="center";P.style.whiteSpace="nowrap";P.style.paddingRight="10px";P.style.textDecoration="none";P.style.verticalAlign=
-"top";P.style.padding="6px 0";P.style.fontSize="14px";P.style.width="40px";P.style.opacity="0.4";D.appendChild(P);mxEvent.addListener(P,"click",oa);oa=d("",ra.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",ra,Editor.zoomInImage);D.appendChild(oa);z.visible&&(D.appendChild(Aa),mxEvent.addListener(document,"fullscreenchange",function(){Aa.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&
+"top";P.style.padding="6px 0";P.style.fontSize="14px";P.style.width="40px";P.style.opacity="0.4";D.appendChild(P);mxEvent.addListener(P,"click",pa);pa=d("",ra.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",ra,Editor.zoomInImage);D.appendChild(pa);z.visible&&(D.appendChild(Aa),mxEvent.addListener(document,"fullscreenchange",function(){Aa.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&
(z=m.actions.get("exit"),D.appendChild(d("",z.funct,null,mxResources.get("exit"),z,Editor.closeImage)));m.tabContainer.style.visibility="hidden";p.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;";H.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;";
D.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(H);x.appendChild(D);F.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;";x.appendChild(F);window.setTimeout(function(){mxUtils.setPrefixedStyle(F.style,
-"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var Ga=d("",oa,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",qa,Editor.zoomFitImage);p.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";P=t.addMenu("100%",y.funct);P.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");P.style.whiteSpace="nowrap";P.style.paddingRight=
+"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var Ga=d("",pa,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",qa,Editor.zoomFitImage);p.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";P=t.addMenu("100%",y.funct);P.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");P.style.whiteSpace="nowrap";P.style.paddingRight=
"10px";P.style.textDecoration="none";P.style.textDecoration="none";P.style.overflow="hidden";P.style.visibility="hidden";P.style.textAlign="center";P.style.cursor="pointer";P.style.height=parseInt(m.tabContainerHeight)-1+"px";P.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";P.style.position="absolute";P.style.display="block";P.style.fontSize="12px";P.style.width="59px";P.style.right="0px";P.style.bottom="0px";P.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";P.style.backgroundPosition=
"right 6px center";P.style.backgroundRepeat="no-repeat";x.appendChild(P)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML="";mxUtils.write(b,Math.round(100*m.editor.graph.view.scale)+"%")});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(P);var Da=m.setGraphEnabled;m.setGraphEnabled=function(){Da.apply(this,arguments);null!=this.tabContainer&&(P.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom=
"hidden"!=this.tabContainer.style.visibility&&null==D?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=f)&&"1"!=urlParams.embedInline&&b(this,!0);null==D&&x.appendChild(m.tabContainer);var ya=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&
@@ -4073,7 +4079,7 @@ m.actions.outlineWindow.window.fit();null!=m.actions.layersWindow&&m.actions.lay
(m.embedExitPoint=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),m.sendEmbeddedSvgExport())});l=document.createElement("div");l.style.position="absolute";l.style.width="10px";l.style.height="10px";l.style.borderRadius="5px";l.style.border="1px solid gray";l.style.background="#ffffff";l.style.cursor="row-resize";m.diagramContainer.parentNode.appendChild(l);m.bottomResizer=l;var Ea=null,va=null,Ha=null,Ca=null;mxEvent.addGestureListeners(l,function(b){Ca=parseInt(m.diagramContainer.style.height);
va=mxEvent.getClientY(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});l=l.cloneNode(!1);l.style.cursor="col-resize";m.diagramContainer.parentNode.appendChild(l);m.rightResizer=l;mxEvent.addGestureListeners(l,function(b){Ha=parseInt(m.diagramContainer.style.width);Ea=mxEvent.getClientX(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});mxEvent.addGestureListeners(document.body,null,function(b){var c=!1;null!=Ea&&(m.diagramContainer.style.width=Math.max(20,Ha+mxEvent.getClientX(b)-Ea)+"px",
c=!0);null!=va&&(m.diagramContainer.style.height=Math.max(20,Ca+mxEvent.getClientY(b)-va)+"px",c=!0);c&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:m.diagramContainer.getBoundingClientRect()}),"*"),ta(),m.refresh())},function(b){null==Ea&&null==va||mxEvent.consume(b);va=Ea=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility=
-"hidden";H.style.visibility="hidden";D.style.visibility="hidden";F.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,f,n,l,q){this.file=b;this.id=c;this.content=e;this.modifiedDate=f;this.createdDate=n;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,f,n){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,f,n){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=f;this.locale=n};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\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\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\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\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\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\npickGDriveFile=Pick 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\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;
+"hidden";H.style.visibility="hidden";D.style.visibility="hidden";F.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,f,n,l,q){this.file=b;this.id=c;this.content=e;this.modifiedDate=f;this.createdDate=n;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,f,n){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,f,n){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=f;this.locale=n};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\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\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\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\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\npickGDriveFile=Pick 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\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,c,e){this.init(b,c,e)};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,c,e){this.graphConfig=null!=e?e:{};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 9b228fc6..ebd38507 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -202,7 +202,7 @@ a),DRAWIO_GITLAB_URL=a);a=urlParams["gitlab-id"];null!=a&&(DRAWIO_GITLAB_ID=a);w
if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==urlParams.local||"1"==urlParams.lockdown)urlParams.picker="0",urlParams.gapi="0",urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0";
"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.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:"16.2.7",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.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:"16.3.0",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]"!==
@@ -229,7 +229,7 @@ unescape(c)):mxResources.resources[d]=c}}}},get:function(a,b,c){a=mxResources.re
mxRectangle.prototype.height=null;mxRectangle.prototype.setRect=function(a,b,c,d){this.x=a;this.y=b;this.width=c;this.height=d};mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2};mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2};
mxRectangle.prototype.add=function(a){if(null!=a){var b=Math.min(this.x,a.x),c=Math.min(this.y,a.y),d=Math.max(this.x+this.width,a.x+a.width);a=Math.max(this.y+this.height,a.y+a.height);this.x=b;this.y=c;this.width=d-b;this.height=a-c}};mxRectangle.prototype.intersect=function(a){if(null!=a){var b=this.x+this.width,c=a.x+a.width,d=this.y+this.height,e=a.y+a.height;this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.width=Math.min(b,c)-this.x;this.height=Math.min(d,e)-this.y}};
mxRectangle.prototype.grow=function(a){this.x-=a;this.y-=a;this.width+=2*a;this.height+=2*a;return this};mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)};mxRectangle.prototype.rotate90=function(){var a=(this.width-this.height)/2;this.x+=a;this.y-=a;a=this.width;this.width=this.height;this.height=a};mxRectangle.prototype.equals=function(a){return null!=a&&a.x==this.x&&a.y==this.y&&a.width==this.width&&a.height==this.height};
-mxRectangle.fromRectangle=function(a){return new mxRectangle(a.x,a.y,a.width,a.height)};
+mxRectangle.fromPoint=function(a){return new mxRectangle(a.x,a.y,0,0)};mxRectangle.fromRectangle=function(a){return new mxRectangle(a.x,a.y,a.width,a.height)};
var mxEffects={animateChanges:function(a,b,c){var d=0,e=function(){for(var g=!1,k=0;k<b.length;k++){var l=b[k];if(l instanceof mxGeometryChange||l instanceof mxTerminalChange||l instanceof mxValueChange||l instanceof mxChildChange||l instanceof mxStyleChange){var m=a.getView().getState(l.cell||l.child,!1);if(null!=m)if(g=!0,l.constructor!=mxGeometryChange||a.model.isEdge(l.cell))mxUtils.setOpacity(m.shape.node,100*d/10);else{var n=a.getView().scale,p=(l.geometry.x-l.previous.x)*n,q=(l.geometry.y-
l.previous.y)*n,r=(l.geometry.width-l.previous.width)*n,n=(l.geometry.height-l.previous.height)*n;0==d?(m.x-=p,m.y-=q,m.width-=r,m.height-=n):(m.x+=p/10,m.y+=q/10,m.width+=r/10,m.height+=n/10);a.cellRenderer.redraw(m);mxEffects.cascadeOpacity(a,l.cell,100*d/10)}}}10>d&&g?(d++,window.setTimeout(e,f)):null!=c&&c()},f=30;e()},cascadeOpacity:function(a,b,c){for(var d=a.model.getChildCount(b),e=0;e<d;e++){var f=a.model.getChildAt(b,e),g=a.getView().getState(f);null!=g&&(mxUtils.setOpacity(g.shape.node,
c),mxEffects.cascadeOpacity(a,f,c))}b=a.model.getEdges(b);if(null!=b)for(e=0;e<b.length;e++)d=a.getView().getState(b[e]),null!=d&&mxUtils.setOpacity(d.shape.node,c)},fadeOut:function(a,b,c,d,e,f){d=d||40;e=e||30;var g=b||100;mxUtils.setOpacity(a,g);if(f||null==f){var k=function(){g=Math.max(g-d,0);mxUtils.setOpacity(a,g);0<g?window.setTimeout(k,e):(a.style.visibility="hidden",c&&a.parentNode&&a.parentNode.removeChild(a))};window.setTimeout(k,e)}else a.style.visibility="hidden",c&&a.parentNode&&a.parentNode.removeChild(a)}},
@@ -2113,8 +2113,8 @@ e.height==g.format.height?(d.value=g.key,l.setAttribute("checked","checked"),l.d
d.value="custom",k.style.display="none",p.style.display="")}}c="format-"+c;var l=document.createElement("input");l.setAttribute("name",c);l.setAttribute("type","radio");l.setAttribute("value","portrait");var q=document.createElement("input");q.setAttribute("name",c);q.setAttribute("type","radio");q.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";var k=
document.createElement("div");k.style.marginLeft="4px";k.style.width="210px";k.style.height="24px";l.style.marginRight="6px";k.appendChild(l);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));k.appendChild(c);q.style.marginLeft="10px";q.style.marginRight="6px";k.appendChild(q);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));k.appendChild(g);var p=document.createElement("div");p.style.marginLeft=
"4px";p.style.width="210px";p.style.height="24px";var m=document.createElement("input");m.setAttribute("size","7");m.style.textAlign="right";p.appendChild(m);mxUtils.write(p," in x ");var v=document.createElement("input");v.setAttribute("size","7");v.style.textAlign="right";p.appendChild(v);mxUtils.write(p," in");k.style.display="none";p.style.display="none";for(var u={},t=PageSetupDialog.getFormats(),z=0;z<t.length;z++){var y=t[z];u[y.key]=y;var F=document.createElement("option");F.setAttribute("value",
-y.key);mxUtils.write(F,y.title);d.appendChild(F)}var D=!1;n();b.appendChild(d);mxUtils.br(b);b.appendChild(k);b.appendChild(p);var E=e,H=function(b,g){var c=u[d.value];null!=c.format?(m.value=c.format.width/100,v.value=c.format.height/100,p.style.display="none",k.style.display=""):(k.style.display="none",p.style.display="");c=parseFloat(m.value);if(isNaN(c)||0>=c)m.value=e.width/100;c=parseFloat(v.value);if(isNaN(c)||0>=c)v.value=e.height/100;c=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
-Math.floor(100*parseFloat(v.value)));"custom"!=d.value&&q.checked&&(c=new mxRectangle(0,0,c.height,c.width));g&&D||c.width==E.width&&c.height==E.height||(E=c,null!=f&&f(E))};mxEvent.addListener(c,"click",function(b){l.checked=!0;H(b);mxEvent.consume(b)});mxEvent.addListener(g,"click",function(b){q.checked=!0;H(b);mxEvent.consume(b)});mxEvent.addListener(m,"blur",H);mxEvent.addListener(m,"click",H);mxEvent.addListener(v,"blur",H);mxEvent.addListener(v,"click",H);mxEvent.addListener(q,"change",H);mxEvent.addListener(l,
+y.key);mxUtils.write(F,y.title);d.appendChild(F)}var D=!1;n();b.appendChild(d);mxUtils.br(b);b.appendChild(k);b.appendChild(p);var E=e,H=function(b,c){var g=u[d.value];null!=g.format?(m.value=g.format.width/100,v.value=g.format.height/100,p.style.display="none",k.style.display=""):(k.style.display="none",p.style.display="");g=parseFloat(m.value);if(isNaN(g)||0>=g)m.value=e.width/100;g=parseFloat(v.value);if(isNaN(g)||0>=g)v.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
+Math.floor(100*parseFloat(v.value)));"custom"!=d.value&&q.checked&&(g=new mxRectangle(0,0,g.height,g.width));c&&D||g.width==E.width&&g.height==E.height||(E=g,null!=f&&f(E))};mxEvent.addListener(c,"click",function(b){l.checked=!0;H(b);mxEvent.consume(b)});mxEvent.addListener(g,"click",function(b){q.checked=!0;H(b);mxEvent.consume(b)});mxEvent.addListener(m,"blur",H);mxEvent.addListener(m,"click",H);mxEvent.addListener(v,"blur",H);mxEvent.addListener(v,"click",H);mxEvent.addListener(q,"change",H);mxEvent.addListener(l,
"change",H);mxEvent.addListener(d,"change",function(b){D="custom"==d.value;H(b,!0)});H();return{set:function(b){e=b;n(null,null,!0)},get:function(){return E},widthInput:m,heightInput:v}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
@@ -2153,7 +2153,7 @@ q="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeig
{};this.fireEvent(new mxEventObject("styleChanged","keys",g,"values",c,"cells",[b]))}catch(S){this.handleError(S)}};this.clearDefaultStyle=function(){f.currentEdgeStyle=mxUtils.clone(f.defaultEdgeStyle);f.currentVertexStyle=mxUtils.clone(f.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var k=["fontFamily","fontSource","fontSize","fontColor"];for(c=0;c<k.length;c++)0>mxUtils.indexOf(l,k[c])&&l.push(k[c]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),
p=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(c=0;c<p.length;c++)for(e=0;e<p[c].length;e++)l.push(p[c][e]);for(c=0;c<q.length;c++)0>mxUtils.indexOf(l,q[c])&&l.push(q[c]);var m=function(b,c,g,k,e,m,x){k=null!=k?k:f.currentVertexStyle;e=null!=e?e:f.currentEdgeStyle;m=null!=m?m:!0;g=null!=g?g:f.getModel();if(x){x=[];
for(var v=0;v<b.length;v++)x=x.concat(g.getDescendants(b[v]));b=x}g.beginUpdate();try{for(v=0;v<b.length;v++){var t=b[v],u;if(c)u=["fontSize","fontFamily","fontColor"];else{var n=g.getStyle(t),y=null!=n?n.split(";"):[];u=l.slice();for(var q=0;q<y.length;q++){var z=y[q],O=z.indexOf("=");if(0<=O){var A=z.substring(0,O),X=mxUtils.indexOf(u,A);0<=X&&u.splice(X,1);for(x=0;x<p.length;x++){var K=p[x];if(0<=mxUtils.indexOf(K,A))for(var S=0;S<K.length;S++){var F=mxUtils.indexOf(u,K[S]);0<=F&&u.splice(F,1)}}}}}var H=
-g.isEdge(t);x=H?e:k;for(var G=g.getStyle(t),q=0;q<u.length;q++){var A=u[q],ba=x[A];null!=ba&&"edgeStyle"!=A&&("shape"!=A||H)&&(!H||m||0>mxUtils.indexOf(d,A))&&(G=mxUtils.setStyle(G,A,ba))}Editor.simpleLabels&&(G=mxUtils.setStyle(mxUtils.setStyle(G,"html",null),"whiteSpace",null));g.setStyle(t,G)}}finally{g.endUpdate()}return b};f.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});f.addListener("textInserted",function(b,d){m(d.getProperty("cells"),!0)});
+g.isEdge(t);x=H?e:k;for(var G=g.getStyle(t),q=0;q<u.length;q++){var A=u[q],ca=x[A];null!=ca&&"edgeStyle"!=A&&("shape"!=A||H)&&(!H||m||0>mxUtils.indexOf(d,A))&&(G=mxUtils.setStyle(G,A,ca))}Editor.simpleLabels&&(G=mxUtils.setStyle(mxUtils.setStyle(G,"html",null),"whiteSpace",null));g.setStyle(t,G)}}finally{g.endUpdate()}return b};f.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});f.addListener("textInserted",function(b,d){m(d.getProperty("cells"),!0)});
this.insertHandler=m;this.createDivs();this.createUi();this.refresh();var v=mxUtils.bind(this,function(b){null==b&&(b=window.event);return f.isEditing()||null!=b&&this.isSelectionAllowed(b)});this.container==document.body&&(this.menubarContainer.onselectstart=v,this.menubarContainer.onmousedown=v,this.toolbarContainer.onselectstart=v,this.toolbarContainer.onmousedown=v,this.diagramContainer.onselectstart=v,this.diagramContainer.onmousedown=v,this.sidebarContainer.onselectstart=v,this.sidebarContainer.onmousedown=
v,this.formatContainer.onselectstart=v,this.formatContainer.onmousedown=v,this.footerContainer.onselectstart=v,this.footerContainer.onmousedown=v,null!=this.tabContainer&&(this.tabContainer.onselectstart=v));!this.editor.chromeless||this.editor.editable?(c=function(b){if(null!=b){var d=mxEvent.getSource(b);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)return!0;d=d.parentNode}}return v(b)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,
"contextmenu",c):this.diagramContainer.oncontextmenu=c):f.panningHandler.usePopupTrigger=!1;f.init(this.diagramContainer);mxClient.IS_SVG&&null!=f.view.getDrawPane()&&(c=f.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=f.graphHandler){var u=f.graphHandler.start;f.graphHandler.start=function(){null!=I.hoverIcons&&I.hoverIcons.reset();u.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,
@@ -2213,13 +2213,13 @@ e==mxConstants.ARROW_DIAMOND_THIN?"1"==f?"geSprite geSprite-"+b+"thindiamond":"g
e?"geSprite geSprite-"+b+"eronetoone":"ERmany"==e?"geSprite geSprite-"+b+"ermany":"ERoneToMany"==e?"geSprite geSprite-"+b+"eronetomany":"ERzeroToOne"==e?"geSprite geSprite-"+b+"eroneopt":"ERzeroToMany"==e?"geSprite geSprite-"+b+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null};
EditorUi.prototype.updatePasteActionStates=function(){var b=this.editor.graph,c=this.actions.get("paste"),e=this.actions.get("pasteHere");c.setEnabled(this.editor.graph.cellEditor.isContentEditing()||(!mxClient.IS_FF&&null!=navigator.clipboard||!mxClipboard.isEmpty())&&b.isEnabled()&&!b.isCellLocked(b.getDefaultParent()));e.setEnabled(c.isEnabled())};
EditorUi.prototype.initClipboard=function(){var b=this,c=mxClipboard.cut;mxClipboard.cut=function(e){e.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);b.updatePasteActionStates()};mxClipboard.copy=function(c){var e=null;if(c.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var e=e||c.getSelectionCells(),e=c.getExportableCells(c.model.getTopmostCells(e)),d={},k=c.createCellLookup(e),g=c.cloneCells(e,null,d),f=new mxGraphModel,m=f.getChildAt(f.getRoot(),
-0),l=0;l<g.length;l++){f.add(m,g[l]);var u=c.view.getState(e[l]);if(null!=u){var t=c.getCellGeometry(g[l]);null!=t&&t.relative&&!f.isEdge(e[l])&&null==k[mxObjectIdentity.get(f.getParent(e[l]))]&&(t.offset=null,t.relative=!1,t.x=u.x/u.view.scale-u.view.translate.x,t.y=u.y/u.view.scale-u.view.translate.y)}}c.updateCustomLinks(c.createCellMapping(d,k),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}b.updatePasteActionStates();return e};var e=mxClipboard.paste;mxClipboard.paste=function(c){var f=
+0),l=0;l<g.length;l++){f.add(m,g[l]);var n=c.view.getState(e[l]);if(null!=n){var t=c.getCellGeometry(g[l]);null!=t&&t.relative&&!f.isEdge(e[l])&&null==k[mxObjectIdentity.get(f.getParent(e[l]))]&&(t.offset=null,t.relative=!1,t.x=n.x/n.view.scale-n.view.translate.x,t.y=n.y/n.view.scale-n.view.translate.y)}}c.updateCustomLinks(c.createCellMapping(d,k),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}b.updatePasteActionStates();return e};var e=mxClipboard.paste;mxClipboard.paste=function(c){var f=
null;c.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):f=e.apply(this,arguments);b.updatePasteActionStates();return f};var f=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){f.apply(this,arguments);b.updatePasteActionStates()};var n=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(c,e){n.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 b=this.graph.getPageLayout(),d=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+b.x*d.width),this.scale*(this.translate.y+b.y*d.height),this.scale*b.width*d.width,
this.scale*b.height*d.height)};b.getPreferredPageSize=function(b,d,c){b=this.getPageLayout();d=this.getPageSize();return new mxRectangle(0,0,b.width*d.width,b.height*d.height)};var c=null,e=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(d,c,g,k){if(null!=b.container&&!b.isViewer()){g=null!=g?g:0;k=null!=k?k:0;var e=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),f=mxUtils.hasScrollbars(b.container),m=b.view.translate,p=b.view.scale,l=mxRectangle.fromRectangle(e);
-l.x=l.x/p-m.x;l.y=l.y/p-m.y;l.width/=p;l.height/=p;var m=b.container.scrollTop,v=b.container.scrollLeft,u=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)u+=3;var t=b.container.offsetWidth-u,u=b.container.offsetHeight-u;d=d?Math.max(.3,Math.min(c||1,t/l.width)):p;c=(t-d*l.width)/2/d;var n=0==this.lightboxVerticalDivider?0:(u-d*l.height)/this.lightboxVerticalDivider/d;f&&(c=Math.max(c,0),n=Math.max(n,0));if(f||e.width<t||e.height<u)b.view.scaleAndTranslate(d,Math.floor(c-
-l.x),Math.floor(n-l.y)),b.container.scrollTop=m*d/p,b.container.scrollLeft=v*d/p;else if(0!=g||0!=k)e=b.view.translate,b.view.setTranslate(Math.floor(e.x+g/p),Math.floor(e.y+k/p))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var f=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",f);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",f)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
+l.x=l.x/p-m.x;l.y=l.y/p-m.y;l.width/=p;l.height/=p;var m=b.container.scrollTop,v=b.container.scrollLeft,n=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)n+=3;var t=b.container.offsetWidth-n,n=b.container.offsetHeight-n;d=d?Math.max(.3,Math.min(c||1,t/l.width)):p;c=(t-d*l.width)/2/d;var u=0==this.lightboxVerticalDivider?0:(n-d*l.height)/this.lightboxVerticalDivider/d;f&&(c=Math.max(c,0),u=Math.max(u,0));if(f||e.width<t||e.height<n)b.view.scaleAndTranslate(d,Math.floor(c-
+l.x),Math.floor(u-l.y)),b.container.scrollTop=m*d/p,b.container.scrollLeft=v*d/p;else if(0!=g||0!=k)e=b.view.translate,b.view.setTranslate(Math.floor(e.x+g/p),Math.floor(e.y+k/p))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var f=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",f);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",f)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var n=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 l=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",l);l();var q=0,l=mxUtils.bind(this,function(b,d,c){q++;var g=document.createElement("span");g.style.paddingLeft="8px";g.style.paddingRight=
@@ -2247,8 +2247,8 @@ this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cu
G.removeAttribute("filter")),M=new mxPoint(b.container.scrollLeft,b.container.scrollTop),d=c||null==L?b.container.scrollLeft+b.container.clientWidth/2:L.x+b.container.scrollLeft-b.container.offsetLeft,k=c||null==L?b.container.scrollTop+b.container.clientHeight/2:L.y+b.container.scrollTop-b.container.offsetTop,G.style.transformOrigin=d+"px "+k+"px",G.style.transform="scale("+this.cumulativeZoomFactor+")",A.style.transformOrigin=d+"px "+k+"px",A.style.transform="scale("+this.cumulativeZoomFactor+")",
null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(d=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(d.style,"transform-origin",(c||null==L?b.container.clientWidth/2+b.container.scrollLeft-d.offsetLeft+"px":L.x+b.container.scrollLeft-d.offsetLeft-b.container.offsetLeft+"px")+" "+(c||null==L?b.container.clientHeight/2+b.container.scrollTop-d.offsetTop+"px":L.y+b.container.scrollTop-d.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(d.style,"transform",
"scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=e.hoverIcons&&e.hoverIcons.reset());U(g)};mxEvent.addGestureListeners(b.container,function(b){null!=I&&window.clearTimeout(I)},null,function(d){1!=b.cumulativeZoomFactor&&U(0)});mxEvent.addListener(b.container,"scroll",function(d){null==I||b.isMouseDown||1==b.cumulativeZoomFactor||U(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,c,g,k,e){b.fireEvent(new mxEventObject("wheel"));
-if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!g&&b.isScrollWheelEvent(d))g=b.view.getTranslate(),k=40/b.view.scale,mxEvent.isShiftDown(d)?b.view.setTranslate(g.x+(c?-k:k),g.y):b.view.setTranslate(g.x,g.y+(c?k:-k));else if(g||b.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==b.container)return b.tooltipHandler.hideTooltip(),L=null!=k&&null!=e?new mxPoint(k,e):new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)),K=g,g=b.zoomFactor,null!=d.deltaY&&Math.round(d.deltaY)!=
-d.deltaY&&(g=1+Math.abs(d.deltaY)/20*(g-1)),b.lazyZoom(c,null,null,g),mxEvent.consume(d),!1;f=f.parentNode}}),b.container);b.panningHandler.zoomGraph=function(d){b.cumulativeZoomFactor=d.scale;b.lazyZoom(0<d.scale,!0);mxEvent.consume(d)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
+if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!g&&b.isScrollWheelEvent(d))g=b.view.getTranslate(),k=40/b.view.scale,mxEvent.isShiftDown(d)?b.view.setTranslate(g.x+(c?-k:k),g.y):b.view.setTranslate(g.x,g.y+(c?k:-k));else if(g||b.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==b.container)return b.tooltipHandler.hideTooltip(),L=null!=k&&null!=e?new mxPoint(k,e):new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)),K=g,g=b.zoomFactor,null!=d.deltaY&&40>Math.abs(d.deltaY)&&
+Math.round(d.deltaY)!=d.deltaY&&(g=1+Math.abs(d.deltaY)/20*(g-1)),b.lazyZoom(c,null,null,g),mxEvent.consume(d),!1;f=f.parentNode}}),b.container);b.panningHandler.zoomGraph=function(d){b.cumulativeZoomFactor=d.scale;b.lazyZoom(0<d.scale,!0);mxEvent.consume(d)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),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 c=urlParams.border,e=60;null!=c&&(e=parseInt(c));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(e,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))};
@@ -2273,13 +2273,13 @@ EditorUi.prototype.setPageFormat=function(b,c){c=null!=c?c:"1"==urlParams.sketch
EditorUi.prototype.setPageScale=function(b){this.editor.graph.pageScale=b;this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct();this.fireEvent(new mxEventObject("pageScaleChanged"))};EditorUi.prototype.setGridColor=function(b){this.editor.graph.view.gridColor=b;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("gridColorChanged"))};
EditorUi.prototype.addUndoListener=function(){var b=this.actions.get("undo"),c=this.actions.get("redo"),e=this.editor.undoManager,f=mxUtils.bind(this,function(){b.setEnabled(this.canUndo());c.setEnabled(this.canRedo())});e.addListener(mxEvent.ADD,f);e.addListener(mxEvent.UNDO,f);e.addListener(mxEvent.REDO,f);e.addListener(mxEvent.CLEAR,f);var n=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){n.apply(this,arguments);f()};var l=this.editor.graph.cellEditor.stopEditing;
this.editor.graph.cellEditor.stopEditing=function(b,d){l.apply(this,arguments);f()};f()};
-EditorUi.prototype.updateActionStates=function(){for(var b=this.editor.graph,c=this.getSelectionState(),e=b.isEnabled()&&!b.isCellLocked(b.getDefaultParent()),f="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" "),n=0;n<f.length;n++)this.actions.get(f[n]).setEnabled(0<c.cells.length);this.actions.get("grid").setEnabled(!this.editor.chromeless||
-this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<c.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<c.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==b.getSelectionCount());this.actions.get("copySize").setEnabled(1==b.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!b.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==c.cells.length);this.actions.get("sendBackward").setEnabled(1==
-c.cells.length);this.actions.get("rotation").setEnabled(1==c.vertices.length);this.actions.get("wordWrap").setEnabled(1==c.vertices.length);this.actions.get("autosize").setEnabled(1==c.vertices.length);this.actions.get("clearWaypoints").setEnabled(c.connections);this.actions.get("curved").setEnabled(0<c.edges.length);this.actions.get("turn").setEnabled(c.resizable);this.actions.get("group").setEnabled(!c.row&&!c.cell&&(1<c.cells.length||1==c.vertices.length&&0==b.model.getChildCount(c.cells[0])&&
-!b.isContainer(c.vertices[0])));this.actions.get("ungroup").setEnabled(!c.row&&!c.cell&&!c.table&&0<c.vertices.length&&(b.isContainer(c.vertices[0])||0<b.getModel().getChildCount(c.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==c.cells.length&&b.getModel().isVertex(b.getModel().getParent(c.cells[0])));this.actions.get("collapsible").setEnabled(1==c.vertices.length&&(0<b.model.getChildCount(c.vertices[0])||b.isContainer(c.vertices[0])));this.actions.get("exitGroup").setEnabled(null!=
-b.view.currentRoot);this.actions.get("home").setEnabled(null!=b.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==c.cells.length&&b.isValidRoot(c.cells[0]));this.actions.get("editLink").setEnabled(1==c.cells.length);this.actions.get("openLink").setEnabled(1==c.cells.length&&null!=b.getLinkForCell(c.cells[0]));this.actions.get("guides").setEnabled(b.isEnabled());this.actions.get("selectVertices").setEnabled(e);this.actions.get("selectEdges").setEnabled(e);this.actions.get("selectAll").setEnabled(e);
-this.actions.get("selectNone").setEnabled(e);f=1==c.vertices.length&&b.isCellFoldable(c.vertices[0]);this.actions.get("expand").setEnabled(f);this.actions.get("collapse").setEnabled(f);this.menus.get("navigation").setEnabled(0<c.cells.length||null!=b.view.currentRoot);this.menus.get("layout").setEnabled(e);this.menus.get("insert").setEnabled(e);this.menus.get("direction").setEnabled(c.unlocked&&1==c.vertices.length);this.menus.get("distribute").setEnabled(c.unlocked&&1<c.vertices.length);this.menus.get("align").setEnabled(c.unlocked&&
-1<c.vertices.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
+EditorUi.prototype.updateActionStates=function(){for(var b=this.editor.graph,c=this.getSelectionState(),e=b.isEnabled()&&!b.isCellLocked(b.getDefaultParent()),f="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded strokeColor sharp snapToGrid".split(" "),n=0;n<f.length;n++)this.actions.get(f[n]).setEnabled(0<c.cells.length);
+this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<c.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<c.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==b.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!b.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==c.cells.length);this.actions.get("sendBackward").setEnabled(1==
+c.cells.length);this.actions.get("rotation").setEnabled(1==c.vertices.length);this.actions.get("wordWrap").setEnabled(1==c.vertices.length);this.actions.get("autosize").setEnabled(1==c.vertices.length);this.actions.get("copySize").setEnabled(1==c.vertices.length);this.actions.get("clearWaypoints").setEnabled(c.connections);this.actions.get("curved").setEnabled(0<c.edges.length);this.actions.get("turn").setEnabled(c.resizable);this.actions.get("group").setEnabled(!c.row&&!c.cell&&(1<c.cells.length||
+1==c.vertices.length&&0==b.model.getChildCount(c.cells[0])&&!b.isContainer(c.vertices[0])));this.actions.get("ungroup").setEnabled(!c.row&&!c.cell&&!c.table&&0<c.vertices.length&&(b.isContainer(c.vertices[0])||0<b.getModel().getChildCount(c.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==c.cells.length&&b.getModel().isVertex(b.getModel().getParent(c.cells[0])));this.actions.get("collapsible").setEnabled(1==c.vertices.length&&(0<b.model.getChildCount(c.vertices[0])||b.isContainer(c.vertices[0])));
+this.actions.get("exitGroup").setEnabled(null!=b.view.currentRoot);this.actions.get("home").setEnabled(null!=b.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==c.cells.length&&b.isValidRoot(c.cells[0]));this.actions.get("editLink").setEnabled(1==c.cells.length);this.actions.get("openLink").setEnabled(1==c.cells.length&&null!=b.getLinkForCell(c.cells[0]));this.actions.get("guides").setEnabled(b.isEnabled());this.actions.get("selectVertices").setEnabled(e);this.actions.get("selectEdges").setEnabled(e);
+this.actions.get("selectAll").setEnabled(e);this.actions.get("selectNone").setEnabled(e);f=1==c.vertices.length&&b.isCellFoldable(c.vertices[0]);this.actions.get("expand").setEnabled(f);this.actions.get("collapse").setEnabled(f);this.menus.get("navigation").setEnabled(0<c.cells.length||null!=b.view.currentRoot);this.menus.get("layout").setEnabled(e);this.menus.get("insert").setEnabled(e);this.menus.get("direction").setEnabled(c.unlocked&&1==c.vertices.length);this.menus.get("distribute").setEnabled(c.unlocked&&
+1<c.vertices.length);this.menus.get("align").setEnabled(c.unlocked&&0<c.cells.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
EditorUi.prototype.refresh=function(b){b=null!=b?b:!0;var c=this.container.clientWidth,e=this.container.clientHeight;this.container==document.body&&(c=document.body.clientWidth||document.documentElement.clientWidth,e=document.documentElement.clientHeight);var f=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&&(f=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var n=Math.max(0,Math.min(this.hsplitPosition,c-this.splitSize-
20)),c=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",c+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",c+=this.toolbarHeight);0<c&&(c+=1);var l=0;if(null!=this.sidebarFooterContainer){var q=this.footerHeight+f,l=Math.max(0,Math.min(e-c-q,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=n+"px";this.sidebarFooterContainer.style.height=l+"px";
this.sidebarFooterContainer.style.bottom=q+"px"}e=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=c+"px";this.sidebarContainer.style.width=n+"px";this.formatContainer.style.top=c+"px";this.formatContainer.style.width=e+"px";this.formatContainer.style.display=null!=this.format?"":"none";var q=this.getDiagramContainerOffset(),d=null!=this.hsplit.parentNode?n+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
@@ -2344,20 +2344,20 @@ mxImageShape.prototype.getImageDataUri=function(){var b=this.image;if("data:imag
Graph=function(b,c,e,f,n,l){mxGraph.call(this,b,c,e,f);this.themes=n||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=l?l:!1;b=this.baseUrl;c=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=b.indexOf("/",c+2),0<c&&(this.domainUrl=b.substring(0,c)),c=b.lastIndexOf("/"),0<c&&(this.domainPathUrl=b.substring(0,c+1)));this.isHtmlLabel=function(b){b=this.getCurrentCellStyle(b);
return null!=b?"1"==b.html||"wrap"==b[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var q=null,d=null,k=null,g=null,p=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,c){if("mouseDown"==c.getProperty("eventName")&&this.isEnabled()){var e=c.getProperty("event"),f=e.getState(),l=this.view.scale;if(!mxEvent.isAltDown(e.getEvent())&&null!=f)if(this.model.isEdge(f.cell))if(q=new mxPoint(e.getGraphX(),e.getGraphY()),p=this.isCellSelected(f.cell),k=f,d=e,null!=f.text&&null!=
f.text.boundingBox&&mxUtils.contains(f.text.boundingBox,e.getGraphX(),e.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var m=this.selectionCellsHandler.getHandler(f.cell);null!=m&&null!=m.bends&&0<m.bends.length&&(g=m.getHandleForEvent(e))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(e.getEvent())&&(m=this.selectionCellsHandler.getHandler(f.cell),null==m||null==m.getHandleForEvent(e))){var x=new mxRectangle(e.getGraphX()-1,e.getGraphY()-1),v=mxEvent.isTouchEvent(e.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+2)/2,m=v+2;x.grow(v);if(this.isTableCell(f.cell)&&!this.isCellSelected(f.cell)&&!(mxUtils.contains(f,e.getGraphX()-m,e.getGraphY()-m)&&mxUtils.contains(f,e.getGraphX()-m,e.getGraphY()+m)&&mxUtils.contains(f,e.getGraphX()+m,e.getGraphY()+m)&&mxUtils.contains(f,e.getGraphX()+m,e.getGraphY()-m))){var t=this.model.getParent(f.cell),m=this.model.getParent(t);if(!this.isCellSelected(m)){var v=v*l,u=2*v;if(this.model.getChildAt(m,0)!=t&&mxUtils.intersects(x,new mxRectangle(f.x,
-f.y-v,f.width,u))||this.model.getChildAt(t,0)!=f.cell&&mxUtils.intersects(x,new mxRectangle(f.x-v,f.y,u,f.height))||mxUtils.intersects(x,new mxRectangle(f.x,f.y+f.height-v,f.width,u))||mxUtils.intersects(x,new mxRectangle(f.x+f.width-v,f.y,u,f.height)))t=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,e.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m&&(v=m.getHandleForEvent(e),null!=v&&(m.start(e.getGraphX(),e.getGraphY(),v),m.blockDelayedSelection=!t,e.consume()))}}for(;!e.isConsumed()&&
+1:(mxShape.prototype.svgStrokeTolerance+2)/2,m=v+2;x.grow(v);if(this.isTableCell(f.cell)&&!this.isCellSelected(f.cell)&&!(mxUtils.contains(f,e.getGraphX()-m,e.getGraphY()-m)&&mxUtils.contains(f,e.getGraphX()-m,e.getGraphY()+m)&&mxUtils.contains(f,e.getGraphX()+m,e.getGraphY()+m)&&mxUtils.contains(f,e.getGraphX()+m,e.getGraphY()-m))){var n=this.model.getParent(f.cell),m=this.model.getParent(n);if(!this.isCellSelected(m)){var v=v*l,t=2*v;if(this.model.getChildAt(m,0)!=n&&mxUtils.intersects(x,new mxRectangle(f.x,
+f.y-v,f.width,t))||this.model.getChildAt(n,0)!=f.cell&&mxUtils.intersects(x,new mxRectangle(f.x-v,f.y,t,f.height))||mxUtils.intersects(x,new mxRectangle(f.x,f.y+f.height-v,f.width,t))||mxUtils.intersects(x,new mxRectangle(f.x+f.width-v,f.y,t,f.height)))n=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,e.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m&&(v=m.getHandleForEvent(e),null!=v&&(m.start(e.getGraphX(),e.getGraphY(),v),m.blockDelayedSelection=!n,e.consume()))}}for(;!e.isConsumed()&&
null!=f&&(this.isTableCell(f.cell)||this.isTableRow(f.cell)||this.isTable(f.cell));)this.isSwimlane(f.cell)&&(m=this.getActualStartSize(f.cell),(0<m.x||0<m.width)&&mxUtils.intersects(x,new mxRectangle(f.x+(m.x-m.width-1)*l+(0==m.x?f.width:0),f.y,1,f.height))||(0<m.y||0<m.height)&&mxUtils.intersects(x,new mxRectangle(f.x,f.y+(m.y-m.height-1)*l+(0==m.y?f.height:0),f.width,1)))&&(this.selectCellForEvent(f.cell,e.getEvent()),m=this.selectionCellsHandler.getHandler(f.cell),null!=m&&(v=mxEvent.CUSTOM_HANDLE-
-m.customHandles.length+1,m.start(e.getGraphX(),e.getGraphY(),v),e.consume())),f=this.view.getState(this.model.getParent(f.cell))}}}));this.addMouseListener({mouseDown:function(b,d){},mouseMove:mxUtils.bind(this,function(b,c){var e=this.selectionCellsHandler.handlers.map,f;for(f in e)if(null!=e[f].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(c.getEvent())){var m=this.tolerance;if(null!=q&&null!=k&&null!=d){if(e=k,Math.abs(q.x-c.getGraphX())>m||Math.abs(q.y-
-c.getGraphY())>m){var l=this.selectionCellsHandler.getHandler(e.cell);null==l&&this.model.isEdge(e.cell)&&(l=this.createHandler(e));if(null!=l&&null!=l.bends&&0<l.bends.length){f=l.getHandleForEvent(d);var x=this.view.getEdgeStyle(e),m=x==mxEdgeStyle.EntityRelation;p||g!=mxEvent.LABEL_HANDLE||(f=g);if(m&&0!=f&&f!=l.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!m||null==e.visibleSourceState&&null==e.visibleTargetState||(this.graphHandler.reset(),c.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=
-e.visibleSourceState||f==l.bends.length-1||null!=e.visibleTargetState)m||f==mxEvent.LABEL_HANDLE||(m=e.absolutePoints,null!=m&&(null==x&&null==f||x==mxEdgeStyle.OrthConnector)&&(f=g,null==f&&(f=new mxRectangle(q.x,q.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,m[0].x,m[0].y)?f=0:mxUtils.contains(f,m[m.length-1].x,m[m.length-1].y)?f=l.bends.length-1:null!=x&&(2==m.length||3==m.length&&(0==Math.round(m[0].x-m[1].x)&&0==Math.round(m[1].x-m[2].x)||0==Math.round(m[0].y-m[1].y)&&
-0==Math.round(m[1].y-m[2].y)))?f=2:(f=mxUtils.findNearestSegment(e,q.x,q.y),f=null==x?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),l.start(c.getGraphX(),c.getGraphX(),f),c.consume(),this.graphHandler.reset()}null!=l&&(this.selectionCellsHandler.isHandlerActive(l)?this.isCellSelected(e.cell)||(this.selectionCellsHandler.handlers.put(e.cell,l),this.selectCellForEvent(e.cell,c.getEvent())):this.isCellSelected(e.cell)||l.destroy());p=!1;q=d=k=g=null}}else if(e=c.getState(),null!=
-e&&this.isCellEditable(e.cell)){l=null;if(this.model.isEdge(e.cell)){if(f=new mxRectangle(c.getGraphX(),c.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),m=e.absolutePoints,null!=m)if(null!=e.text&&null!=e.text.boundingBox&&mxUtils.contains(e.text.boundingBox,c.getGraphX(),c.getGraphY()))l="move";else if(mxUtils.contains(f,m[0].x,m[0].y)||mxUtils.contains(f,m[m.length-1].x,m[m.length-1].y))l="pointer";else if(null!=e.visibleSourceState||null!=e.visibleTargetState)f=this.view.getEdgeStyle(e),
-l="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(e)&&(f=mxUtils.findNearestSegment(e,c.getGraphX(),c.getGraphY()),f<m.length-1&&0<=f&&(l=0==Math.round(m[f].x-m[f+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(c.getEvent())){m=mxShape.prototype.svgStrokeTolerance/2;f=new mxRectangle(c.getGraphX(),c.getGraphY());f.grow(m);if(this.isTableCell(e.cell)&&(m=this.model.getParent(e.cell),x=this.model.getParent(m),!this.isCellSelected(x)))if(mxUtils.intersects(f,new mxRectangle(e.x,
-e.y-2,e.width,4))&&this.model.getChildAt(x,0)!=m||mxUtils.intersects(f,new mxRectangle(e.x,e.y+e.height-2,e.width,4)))l="row-resize";else if(mxUtils.intersects(f,new mxRectangle(e.x-2,e.y,4,e.height))&&this.model.getChildAt(m,0)!=e.cell||mxUtils.intersects(f,new mxRectangle(e.x+e.width-2,e.y,4,e.height)))l="col-resize";for(m=e;null==l&&null!=m&&(this.isTableCell(m.cell)||this.isTableRow(m.cell)||this.isTable(m.cell));){if(this.isSwimlane(m.cell)){var x=this.getActualStartSize(m.cell),v=this.view.scale;
-(0<x.x||0<x.width)&&mxUtils.intersects(f,new mxRectangle(m.x+(x.x-x.width-1)*v+(0==x.x?m.width*v:0),m.y,1,m.height))?l="col-resize":(0<x.y||0<x.height)&&mxUtils.intersects(f,new mxRectangle(m.x,m.y+(x.y-x.height-1)*v+(0==x.y?m.height:0),m.width,1))&&(l="row-resize")}m=this.view.getState(this.model.getParent(m.cell))}}null!=l&&e.setCursor(l)}}}),mouseUp:mxUtils.bind(this,function(b,c){g=q=d=k=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(b){var d=mxCellRenderer.prototype.getLabelValue.apply(this,
+m.customHandles.length+1,m.start(e.getGraphX(),e.getGraphY(),v),e.consume())),f=this.view.getState(this.model.getParent(f.cell))}}}));this.addMouseListener({mouseDown:function(b,d){},mouseMove:mxUtils.bind(this,function(b,c){var e=this.selectionCellsHandler.handlers.map,f;for(f in e)if(null!=e[f].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(c.getEvent())){var l=this.tolerance;if(null!=q&&null!=k&&null!=d){if(e=k,Math.abs(q.x-c.getGraphX())>l||Math.abs(q.y-
+c.getGraphY())>l){var m=this.selectionCellsHandler.getHandler(e.cell);null==m&&this.model.isEdge(e.cell)&&(m=this.createHandler(e));if(null!=m&&null!=m.bends&&0<m.bends.length){f=m.getHandleForEvent(d);var x=this.view.getEdgeStyle(e),l=x==mxEdgeStyle.EntityRelation;p||g!=mxEvent.LABEL_HANDLE||(f=g);if(l&&0!=f&&f!=m.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!l||null==e.visibleSourceState&&null==e.visibleTargetState||(this.graphHandler.reset(),c.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=
+e.visibleSourceState||f==m.bends.length-1||null!=e.visibleTargetState)l||f==mxEvent.LABEL_HANDLE||(l=e.absolutePoints,null!=l&&(null==x&&null==f||x==mxEdgeStyle.OrthConnector)&&(f=g,null==f&&(f=new mxRectangle(q.x,q.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,l[0].x,l[0].y)?f=0:mxUtils.contains(f,l[l.length-1].x,l[l.length-1].y)?f=m.bends.length-1:null!=x&&(2==l.length||3==l.length&&(0==Math.round(l[0].x-l[1].x)&&0==Math.round(l[1].x-l[2].x)||0==Math.round(l[0].y-l[1].y)&&
+0==Math.round(l[1].y-l[2].y)))?f=2:(f=mxUtils.findNearestSegment(e,q.x,q.y),f=null==x?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),m.start(c.getGraphX(),c.getGraphX(),f),c.consume(),this.graphHandler.reset()}null!=m&&(this.selectionCellsHandler.isHandlerActive(m)?this.isCellSelected(e.cell)||(this.selectionCellsHandler.handlers.put(e.cell,m),this.selectCellForEvent(e.cell,c.getEvent())):this.isCellSelected(e.cell)||m.destroy());p=!1;q=d=k=g=null}}else if(e=c.getState(),null!=
+e&&this.isCellEditable(e.cell)){m=null;if(this.model.isEdge(e.cell)){if(f=new mxRectangle(c.getGraphX(),c.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),l=e.absolutePoints,null!=l)if(null!=e.text&&null!=e.text.boundingBox&&mxUtils.contains(e.text.boundingBox,c.getGraphX(),c.getGraphY()))m="move";else if(mxUtils.contains(f,l[0].x,l[0].y)||mxUtils.contains(f,l[l.length-1].x,l[l.length-1].y))m="pointer";else if(null!=e.visibleSourceState||null!=e.visibleTargetState)f=this.view.getEdgeStyle(e),
+m="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(e)&&(f=mxUtils.findNearestSegment(e,c.getGraphX(),c.getGraphY()),f<l.length-1&&0<=f&&(m=0==Math.round(l[f].x-l[f+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(c.getEvent())){l=mxShape.prototype.svgStrokeTolerance/2;f=new mxRectangle(c.getGraphX(),c.getGraphY());f.grow(l);if(this.isTableCell(e.cell)&&(l=this.model.getParent(e.cell),x=this.model.getParent(l),!this.isCellSelected(x)))if(mxUtils.intersects(f,new mxRectangle(e.x,
+e.y-2,e.width,4))&&this.model.getChildAt(x,0)!=l||mxUtils.intersects(f,new mxRectangle(e.x,e.y+e.height-2,e.width,4)))m="row-resize";else if(mxUtils.intersects(f,new mxRectangle(e.x-2,e.y,4,e.height))&&this.model.getChildAt(l,0)!=e.cell||mxUtils.intersects(f,new mxRectangle(e.x+e.width-2,e.y,4,e.height)))m="col-resize";for(l=e;null==m&&null!=l&&(this.isTableCell(l.cell)||this.isTableRow(l.cell)||this.isTable(l.cell));){if(this.isSwimlane(l.cell)){var x=this.getActualStartSize(l.cell),v=this.view.scale;
+(0<x.x||0<x.width)&&mxUtils.intersects(f,new mxRectangle(l.x+(x.x-x.width-1)*v+(0==x.x?l.width*v:0),l.y,1,l.height))?m="col-resize":(0<x.y||0<x.height)&&mxUtils.intersects(f,new mxRectangle(l.x,l.y+(x.y-x.height-1)*v+(0==x.y?l.height:0),l.width,1))&&(m="row-resize")}l=this.view.getState(this.model.getParent(l.cell))}}null!=m&&e.setCursor(m)}}}),mouseUp:mxUtils.bind(this,function(b,c){g=q=d=k=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(b){var d=mxCellRenderer.prototype.getLabelValue.apply(this,
arguments);b.view.graph.isHtmlLabel(b.cell)&&(d=1!=b.style.html?mxUtils.htmlEntities(d,!1):b.view.graph.sanitizeHtml(d));return d};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(b,d){return!1};this.alternateEdgeStyle="vertical";null==f&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var b=m.apply(this,arguments);if(this.graph.pageVisible){for(var d=[],c=this.graph.pageFormat,g=this.graph.pageScale,k=c.width*g,c=c.height*g,g=this.graph.view.translate,e=this.graph.view.scale,f=this.graph.getPageLayout(),p=0;p<f.width;p++)d.push(new mxRectangle(((f.x+
-p)*k+g.x)*e,(f.y*c+g.y)*e,k*e,c*e));for(p=1;p<f.height;p++)d.push(new mxRectangle((f.x*k+g.x)*e,((f.y+p)*c+g.y)*e,k*e,c*e));b=d.concat(b)}return b};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(b,d){return null==b.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(b){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,
+this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(b,d){return!1};this.alternateEdgeStyle="vertical";null==f&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var b=m.apply(this,arguments);if(this.graph.pageVisible){for(var d=[],c=this.graph.pageFormat,g=this.graph.pageScale,k=c.width*g,c=c.height*g,g=this.graph.view.translate,e=this.graph.view.scale,f=this.graph.getPageLayout(),l=0;l<f.width;l++)d.push(new mxRectangle(((f.x+
+l)*k+g.x)*e,(f.y*c+g.y)*e,k*e,c*e));for(l=1;l<f.height;l++)d.push(new mxRectangle((f.x*k+g.x)*e,((f.y+l)*c+g.y)*e,k*e,c*e));b=d.concat(b)}return b};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(b,d){return null==b.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(b){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,
arguments)};var v=this.graphHandler.getCells;this.graphHandler.getCells=function(b){for(var d=v.apply(this,arguments),c=new mxDictionary,g=[],k=0;k<d.length;k++){var e=this.graph.isTableCell(b)&&this.graph.isTableCell(d[k])&&this.graph.isCellSelected(d[k])?this.graph.model.getParent(d[k]):this.graph.isTableRow(b)&&this.graph.isTableRow(d[k])&&this.graph.isCellSelected(d[k])?d[k]:this.graph.getCompositeParent(d[k]);null==e||c.get(e)||(c.put(e,!0),g.push(e))}return g};var u=this.graphHandler.start;
this.graphHandler.start=function(b,d,c,g){var k=!1;this.graph.isTableCell(b)&&(this.graph.isCellSelected(b)?k=!0:b=this.graph.model.getParent(b));k||this.graph.isTableRow(b)&&this.graph.isCellSelected(b)||(b=this.graph.getCompositeParent(b));u.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(b,d){d=this.graph.getCompositeParent(d);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var t=new mxRubberband(this);this.getRubberband=function(){return t};
var z=(new Date).getTime(),y=0,F=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var b=this.currentState;F.apply(this,arguments);b!=this.currentState?(z=(new Date).getTime(),y=0):y=(new Date).getTime()-z};var D=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(b){return null!=this.currentState&&b.getState()==this.currentState&&2E3<y||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect",
@@ -2401,8 +2401,8 @@ Graph.prototype.isShadowState=function(b){return"image"!=mxUtils.getValue(b.styl
b){var g={},k;for(k in b){var e=b[k];null!=e&&(g[k]=!0,null==d[k]&&c?d[k]=e:d[k]!=e&&delete d[k])}for(k in d)g[k]||delete d[k]}};Graph.prototype.getStartEditingCell=function(b,d){var c=this.getCellStyle(b),c=parseInt(mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE,0));this.isTable(b)&&(!this.isSwimlane(b)||0==c)&&""==this.getLabel(b)&&0<this.model.getChildCount(b)&&(b=this.model.getChildAt(b,0),c=this.getCellStyle(b),c=parseInt(mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(b)&&
(!this.isSwimlane(b)||0==c)&&""==this.getLabel(b)&&0<this.model.getChildCount(b))for(c=0;c<this.model.getChildCount(b);c++){var g=this.model.getChildAt(b,c);if(this.isCellEditable(g)){b=g;break}}return b};Graph.prototype.copyStyle=function(b){return this.getCellStyle(b,!1)};Graph.prototype.pasteStyle=function(b,d,c){c=null!=c?c:Graph.pasteStyles;Graph.removeKeys(b,function(b){return 0>mxUtils.indexOf(c,b)});this.updateCellStyles(b,d)};Graph.prototype.updateCellStyles=function(b,d){this.model.beginUpdate();
try{for(var c=0;c<d.length;c++)if(this.model.isVertex(d[c])||this.model.isEdge(d[c])){var g=this.getCellStyle(d[c],!1),e;for(e in b){var f=b[e];g[e]!=f&&this.setCellStyles(e,f,[d[c]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&
-!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(b,d,c,g,e,f){this.useCssTransforms&&(b=b/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(b,d,c,g,e,f){g=null!=g?g:!0;e=null!=e?e:!0;null==c&&(c=this.getCurrentRoot(),null==c&&(c=this.getModel().getRoot()));if(null!=c)for(var k=this.model.getChildCount(c)-1;0<=k;k--){var m=this.model.getChildAt(c,
-k),l=this.getScaledCellAt(b,d,m,g,e,f);if(null!=l)return l;if(this.isCellVisible(m)&&(e&&this.model.isEdge(m)||g&&this.model.isVertex(m))&&(l=this.view.getState(m),null!=l&&(null==f||!f(l,b,d))&&this.intersects(l,b,d)))return m}return null};Graph.prototype.isRecursiveVertexResize=function(b){return!this.isSwimlane(b.cell)&&0<this.model.getChildCount(b.cell)&&!this.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
+!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(b,d,c,g,e,f){this.useCssTransforms&&(b=b/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(b,d,c,g,e,f){g=null!=g?g:!0;e=null!=e?e:!0;null==c&&(c=this.getCurrentRoot(),null==c&&(c=this.getModel().getRoot()));if(null!=c)for(var k=this.model.getChildCount(c)-1;0<=k;k--){var l=this.model.getChildAt(c,
+k),m=this.getScaledCellAt(b,d,l,g,e,f);if(null!=m)return m;if(this.isCellVisible(l)&&(e&&this.model.isEdge(l)||g&&this.model.isVertex(l))&&(m=this.view.getState(l),null!=m&&(null==f||!f(m,b,d))&&this.intersects(m,b,d)))return l}return null};Graph.prototype.isRecursiveVertexResize=function(b){return!this.isSwimlane(b.cell)&&0<this.model.getChildCount(b.cell)&&!this.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
function(b){for(var d=this.getCellGeometry(b);null!=d&&d.relative;)b=this.getModel().getParent(b),d=this.getCellGeometry(b);return b};Graph.prototype.isPart=function(b){return"1"==mxUtils.getValue(this.getCurrentCellStyle(b),"part","0")||this.isTableCell(b)||this.isTableRow(b)};Graph.prototype.getCompositeParent=function(b){for(;this.isPart(b);){var d=this.model.getParent(b);if(!this.model.isVertex(d))break;b=d}return b};Graph.prototype.filterSelectionCells=function(b){var d=this.getSelectionCells();
if(null!=b){for(var c=[],g=0;g<d.length;g++)b(d[g])||c.push(d[g]);d=c}return d};var b=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(c){if(this.useCssTransforms){var d=this.currentScale,k=this.currentTranslate;c=new mxRectangle((c.x+2*k.x)*d-k.x,(c.y+2*k.y)*d-k.y,c.width*d,c.height*d)}b.apply(this,arguments)};mxCellHighlight.prototype.getStrokeWidth=function(b){b=this.strokeWidth;this.graph.useCssTransforms&&(b/=this.graph.currentScale);return b};mxGraphView.prototype.getGraphBounds=
function(){var b=this.graphBounds;if(this.graph.useCssTransforms)var d=this.graph.currentTranslate,c=this.graph.currentScale,b=new mxRectangle((b.x+d.x)*c,(b.y+d.y)*c,b.width*c,b.height*c);return b};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var c=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=
@@ -2446,15 +2446,17 @@ Graph.prototype.replacePlaceholders=function(b,c,e,f){f=[];if(null!=c){for(var n
null==q&&(q=k.hasAttribute(d)?null!=k.getAttribute(d)?k.getAttribute(d):"":null)),k=this.model.getParent(k);null==q&&(q=this.getGlobalVariable(d));null==q&&null!=e&&(q=e[d])}f.push(c.substring(n,match.index)+(null!=q?q:l));n=match.index+l.length}}f.push(c.substring(n))}return f.join("")};Graph.prototype.restoreSelection=function(b){if(null!=b&&0<b.length){for(var c=[],e=0;e<b.length;e++){var f=this.model.getCell(b[e].id);null!=f&&c.push(f)}this.setSelectionCells(c)}else this.clearSelection()};
Graph.prototype.selectCellForEvent=function(b,c){mxEvent.isShiftDown(c)&&!this.isSelectionEmpty()&&this.selectTableRange(this.getSelectionCell(),b)||mxGraph.prototype.selectCellForEvent.apply(this,arguments)};
Graph.prototype.selectTableRange=function(b,c){var e=!1;if(this.isTableCell(b)&&this.isTableCell(c)){var f=this.model.getParent(b),n=this.model.getParent(f),l=this.model.getParent(c);if(n==this.model.getParent(l)){for(var q=f.getIndex(b),d=n.getIndex(f),k=l.getIndex(c),g=n.getIndex(l),l=Math.max(d,g),f=Math.min(q,k),q=Math.max(q,k),k=[],d=Math.min(d,g);d<=l;d++)for(var g=this.model.getChildAt(n,d),p=f;p<=q;p++)k.push(this.model.getChildAt(g,p));0<k.length&&(1<k.length||1<this.getSelectionCount()||
-!this.isCellSelected(k[0]))&&(this.setSelectionCells(k),e=!0)}}return e};Graph.prototype.getTableRange=function(b,c){};Graph.prototype.selectCellsForConnectVertex=function(b,c,e){2==b.length&&this.model.isVertex(b[1])?(this.setSelectionCell(b[1]),this.scrollCellToVisible(b[1]),null!=e&&(mxEvent.isTouchEvent(c)?e.update(e.getState(this.view.getState(b[1]))):e.reset())):this.setSelectionCells(b)};
+!this.isCellSelected(k[0]))&&(this.setSelectionCells(k),e=!0)}}return e};
+Graph.prototype.snapCellsToGrid=function(b,c){this.getModel().beginUpdate();try{for(var e=0;e<b.length;e++){var f=b[e],n=this.getCellGeometry(f);if(null!=n){n=n.clone();if(this.getModel().isVertex(f))n.x=Math.round(n.x/c)*c,n.y=Math.round(n.y/c)*c,n.width=Math.round(n.width/c)*c,n.height=Math.round(n.height/c)*c;else if(this.getModel().isEdge(f)&&null!=n.points)for(var l=0;l<n.points.length;l++)n.points[l].x=Math.round(n.points[l].x/c)*c,n.points[l].y=Math.round(n.points[l].y/c)*c;this.getModel().setGeometry(f,
+n)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnectVertex=function(b,c,e){2==b.length&&this.model.isVertex(b[1])?(this.setSelectionCell(b[1]),this.scrollCellToVisible(b[1]),null!=e&&(mxEvent.isTouchEvent(c)?e.update(e.getState(this.view.getState(b[1]))):e.reset())):this.setSelectionCells(b)};
Graph.prototype.isCloneConnectSource=function(b){var c=null;null!=this.layoutManager&&(c=this.layoutManager.getLayout(this.model.getParent(b)));return this.isTableRow(b)||this.isTableCell(b)||null!=c&&c.constructor==mxStackLayout};
Graph.prototype.connectVertex=function(b,c,e,f,n,l,q,d){l=l?l:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var k=this.isCloneConnectSource(b),g=k?b:this.getCompositeParent(b),p=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(g.geometry.x,g.geometry.y);c==mxConstants.DIRECTION_NORTH?(p.x+=g.geometry.width/2,p.y-=e):c==
mxConstants.DIRECTION_SOUTH?(p.x+=g.geometry.width/2,p.y+=g.geometry.height+e):(p.x=c==mxConstants.DIRECTION_WEST?p.x-e:p.x+(g.geometry.width+e),p.y+=g.geometry.height/2);var m=this.view.getState(this.model.getParent(b));e=this.view.scale;var v=this.view.translate,g=v.x*e,v=v.y*e;null!=m&&this.model.isVertex(m.cell)&&(g=m.x,v=m.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(p.x+=b.parent.geometry.x,p.y+=b.parent.geometry.y);l=l?null:(new mxRectangle(g+p.x*e,v+p.y*e)).grow(40*e);l=null!=l?
this.getCells(0,0,0,0,null,null,l,null,!0):null;var m=this.view.getState(b),u=null,t=null;if(null!=l){l=l.reverse();for(var z=0;z<l.length;z++)if(!this.isCellLocked(l[z])&&!this.model.isEdge(l[z])&&l[z]!=b)if(!this.model.isAncestor(b,l[z])&&this.isContainer(l[z])&&(null==u||l[z]==this.model.getParent(b)))u=l[z];else if(null==t&&this.isCellConnectable(l[z])&&!this.model.isAncestor(l[z],b)&&!this.isSwimlane(l[z])){var y=this.view.getState(l[z]);null==m||null==y||mxUtils.intersects(m,y)||(t=l[z])}}var F=
!mxEvent.isShiftDown(f)||mxEvent.isControlDown(f)||n;F&&("1"!=urlParams.sketch||n)&&(c==mxConstants.DIRECTION_NORTH?p.y-=b.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=b.geometry.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-b.geometry.width/2:p.x+b.geometry.width/2);var D=[],E=t,t=u;n=mxUtils.bind(this,function(g){if(null==q||null!=g||null==t&&k){this.model.beginUpdate();try{if(null==E&&F){var e=this.getAbsoluteParent(null!=g?g:b),e=k?b:this.getCompositeParent(e);E=null!=g?g:this.duplicateCells([e],
-!1)[0];null!=g&&this.addCells([E],this.model.getParent(b),null,null,null,!0);var m=this.getCellGeometry(E);null!=m&&(null!=g&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?p.y-=m.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=m.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-m.width/2:p.x+m.width/2),m.x=p.x-m.width/2,m.y=p.y-m.height/2);null!=u?(this.addCells([E],u,null,null,null,!0),t=null):F&&!k&&this.addCells([E],this.getDefaultParent(),null,null,null,!0)}var l=mxEvent.isControlDown(f)&&
-mxEvent.isShiftDown(f)&&F||null==t&&k?null:this.insertEdge(this.model.getParent(b),null,"",b,E,this.createCurrentEdgeStyle());if(null!=l&&this.connectionHandler.insertBeforeSource){var v=null;for(g=b;null!=g.parent&&null!=g.geometry&&g.geometry.relative&&g.parent!=l.parent;)g=this.model.getParent(g);null!=g&&null!=g.parent&&g.parent==l.parent&&(v=g.parent.getIndex(g),this.model.add(g.parent,l,v))}null==t&&null!=E&&null!=b.parent&&k&&c==mxConstants.DIRECTION_WEST&&(v=b.parent.getIndex(b),this.model.add(b.parent,
-E,v));null!=l&&D.push(l);null==t&&null!=E&&D.push(E);null==E&&null!=l&&l.geometry.setTerminalPoint(p,!1);null!=l&&this.fireEvent(new mxEventObject("cellsInserted","cells",[l]))}finally{this.model.endUpdate()}}if(null!=d)d(D);else return D});if(null==q||null!=E||!F||null==t&&k)return n(E);q(g+p.x*e,v+p.y*e,n)};
+!1)[0];null!=g&&this.addCells([E],this.model.getParent(b),null,null,null,!0);var l=this.getCellGeometry(E);null!=l&&(null!=g&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?p.y-=l.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=l.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-l.width/2:p.x+l.width/2),l.x=p.x-l.width/2,l.y=p.y-l.height/2);null!=u?(this.addCells([E],u,null,null,null,!0),t=null):F&&!k&&this.addCells([E],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(f)&&
+mxEvent.isShiftDown(f)&&F||null==t&&k?null:this.insertEdge(this.model.getParent(b),null,"",b,E,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var v=null;for(g=b;null!=g.parent&&null!=g.geometry&&g.geometry.relative&&g.parent!=m.parent;)g=this.model.getParent(g);null!=g&&null!=g.parent&&g.parent==m.parent&&(v=g.parent.getIndex(g),this.model.add(g.parent,m,v))}null==t&&null!=E&&null!=b.parent&&k&&c==mxConstants.DIRECTION_WEST&&(v=b.parent.getIndex(b),this.model.add(b.parent,
+E,v));null!=m&&D.push(m);null==t&&null!=E&&D.push(E);null==E&&null!=m&&m.geometry.setTerminalPoint(p,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=d)d(D);else return D});if(null==q||null!=E||!F||null==t&&k)return n(E);q(g+p.x*e,v+p.y*e,n)};
Graph.prototype.getIndexableText=function(){var b=document.createElement("div"),c=[],e,f;for(f in this.model.cells)if(e=this.model.cells[f],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(b.innerHTML=this.sanitizeHtml(this.getLabel(e)),e=mxUtils.extractTextWithWhitespace([b])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&c.push(e);return c.join(" ")};
Graph.prototype.convertValueToString=function(b){var c=this.model.getValue(b);if(null!=c&&"object"==typeof c){var e=null;if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var c=b.getAttribute("placeholder"),f=b;null==e&&null!=f;)null!=f.value&&"object"==typeof f.value&&(e=f.hasAttribute(c)?null!=f.getAttribute(c)?f.getAttribute(c):"":null),f=this.model.getParent(f);else e=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(e=c.getAttribute("label_"+Graph.diagramLanguage)),
null==e&&(e=c.getAttribute("label")||"");return e||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(b){return null!=b&&null!=b.text&&null!=b.text.node?b.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(b){return null!=b.value&&"object"==typeof b.value?(b=b.value.getAttribute("link"),null!=b&&"javascript:"===b.toLowerCase().substring(0,11)&&(b=b.substring(11)),b):null};
@@ -2556,7 +2558,7 @@ mxStencilRegistry.loadStencilSet=function(b,c,e,f){var n=mxStencilRegistry.packa
n.documentElement&&mxStencilRegistry.parseStencilSet(n.documentElement,c,l)}};mxStencilRegistry.loadStencil=function(b,c){if(null!=c)mxUtils.get(b,mxUtils.bind(this,function(b){c(200<=b.getStatus()&&299>=b.getStatus()?b.getXml():null)}));else return mxUtils.load(b).getXml()};mxStencilRegistry.parseStencilSets=function(b){for(var c=0;c<b.length;c++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(b[c]).documentElement)};
mxStencilRegistry.parseStencilSet=function(b,c,e){if("stencils"==b.nodeName)for(var f=b.firstChild;null!=f;)"shapes"==f.nodeName&&mxStencilRegistry.parseStencilSet(f,c,e),f=f.nextSibling;else{e=null!=e?e:!0;var f=b.firstChild,n="";b=b.getAttribute("name");for(null!=b&&(n=b+".");null!=f;){if(f.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=f.getAttribute("name"),null!=b)){var n=n.toLowerCase(),l=b.replace(/ /g,"_");e&&mxStencilRegistry.addStencil(n+l.toLowerCase(),new mxStencil(f));if(null!=c){var q=f.getAttribute("w"),
d=f.getAttribute("h"),q=null==q?80:parseInt(q,10),d=null==d?80:parseInt(d,10);c(n,l,b,q,d)}}f=f.nextSibling}}};
-"undefined"!=typeof mxVertexHandler&&function(){function b(){var b=document.createElement("div");b.className="geHint";b.style.whiteSpace="nowrap";b.style.position="absolute";return b}function c(b,d){switch(d){case mxConstants.POINTS:return b;case mxConstants.MILLIMETERS:return(b/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(b/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(b/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
+"undefined"!==typeof mxVertexHandler&&function(){function b(){var b=document.createElement("div");b.className="geHint";b.style.whiteSpace="nowrap";b.style.position="absolute";return b}function c(b,d){switch(d){case mxConstants.POINTS:return b;case mxConstants.MILLIMETERS:return(b/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(b/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(b/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00a8ff";mxConstants.OUTLINE_COLOR="#00a8ff";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.EDGE_SELECTION_COLOR="#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=
!0;mxGraphHandler.prototype.guidesEnabled=!0;mxGraphHandler.prototype.removeEmptyParents=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(b){return!mxEvent.isAltDown(b)};var e=mxGraphLayout.prototype.isVertexIgnored;mxGraphLayout.prototype.isVertexIgnored=function(b){return e.apply(this,arguments)||this.graph.isTableRow(b)||this.graph.isTableCell(b)};var f=mxGraphLayout.prototype.isEdgeIgnored;mxGraphLayout.prototype.isEdgeIgnored=function(b){return f.apply(this,arguments)||
this.graph.isEdgeIgnored(b)};var n=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(b){return this.graph.isCloneEvent(b)!=n.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var b=new mxEllipse(null,this.highlightColor,this.highlightColor,0);b.opacity=mxConstants.HIGHLIGHT_OPACITY;return b};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
@@ -2571,12 +2573,12 @@ var x=this.getBoundingBoxFromGeometry(b,!0);null!=x&&this.moveCells(b,d-x.x,c-x.
(p.offset=null,p.relative=!1,p.x=m.x/m.view.scale-m.view.translate.x,p.y=m.y/m.view.scale-m.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(d,this.createCellLookup(b)),c);return k.encode(f)};Graph.prototype.isSwimlane=function(b,d){var c=null;null==b||this.model.isEdge(b)||this.model.getParent(b)==this.model.getRoot()||(c=this.getCurrentCellStyle(b,d)[mxConstants.STYLE_SHAPE]);return c==mxConstants.SHAPE_SWIMLANE||"table"==c||"tableRow"==c};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=
function(b){var c=this.model.getParent(b);if(null!=c){var g=this.getCurrentCellStyle(c);if(null!=g.expand)return"0"!=g.expand}return d.apply(this,arguments)&&(null==c||!this.isTable(c))};var k=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(b,d,c,g,e,f,l,m){null==m&&(m=this.model.getParent(b),this.isTable(m)||this.isTableRow(m))&&(m=this.getCellAt(f,l,null,!0,!1));c=null;this.model.beginUpdate();try{c=k.apply(this,[b,d,c,g,e,f,l,m]);this.model.setValue(c,"");var p=this.getChildCells(c,
!0);for(d=0;d<p.length;d++){var x=this.getCellGeometry(p[d]);null!=x&&x.relative&&0<x.x&&this.model.remove(p[d])}var v=this.getChildCells(b,!0);for(d=0;d<v.length;d++)x=this.getCellGeometry(v[d]),null!=x&&x.relative&&0>=x.x&&this.model.remove(v[d]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[c]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[c]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,null,[b]);this.setCellStyles(mxConstants.STYLE_STARTARROW,
-mxConstants.NONE,[b]);var n=this.model.getTerminal(c,!1);if(null!=n){var ha=this.getCurrentCellStyle(n);null!=ha&&"1"==ha.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[b]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[b]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[c]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[c]))}}finally{this.model.endUpdate()}return c};var g=Graph.prototype.selectCell;Graph.prototype.selectCell=function(b,d,c){if(d||c)g.apply(this,arguments);
+mxConstants.NONE,[b]);var n=this.model.getTerminal(c,!1);if(null!=n){var ba=this.getCurrentCellStyle(n);null!=ba&&"1"==ba.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[b]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[b]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[c]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[c]))}}finally{this.model.endUpdate()}return c};var g=Graph.prototype.selectCell;Graph.prototype.selectCell=function(b,d,c){if(d||c)g.apply(this,arguments);
else{var e=this.getSelectionCell(),k=null,f=[],l=mxUtils.bind(this,function(d){if(null!=this.view.getState(d)&&(this.model.isVertex(d)||this.model.isEdge(d)))if(f.push(d),d==e)k=f.length-1;else if(b&&null==e&&0<f.length||null!=k&&b&&f.length>k||!b&&0<k)return;for(var c=0;c<this.model.getChildCount(d);c++)l(this.model.getChildAt(d,c))});l(this.model.root);0<f.length&&(k=null!=k?mxUtils.mod(k+(b?1:-1),f.length):0,this.setSelectionCell(f[k]))}};Graph.prototype.swapUmlLifelines=function(b,d){var c=!1;
if(null!=d&&1==b.length){var g=this.view.getState(d),e=this.view.getState(b[0]);if(null!=g&&null!=e&&"umlLifeline"==g.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(d),g=this.getCellGeometry(b[0]),null!=e&&null!=g)){c=e.clone();e=g.clone();e.x=c.x;e.y=c.y;c.x=g.x;c.y=g.y;this.model.beginUpdate();try{this.model.setGeometry(d,c),this.model.setGeometry(b[0],e)}finally{this.model.endUpdate()}c=!0}}return c};var p=Graph.prototype.moveCells;Graph.prototype.moveCells=function(b,d,c,g,
e,k,f){if(!g&&this.swapUmlLifelines(b,e))return b;f=null!=f?f:{};if(this.isTable(e)){for(var l=[],m=0;m<b.length;m++)this.isTable(b[m])?l=l.concat(this.model.getChildCells(b[m],!0).reverse()):l.push(b[m]);b=l}this.model.beginUpdate();try{l=[];for(m=0;m<b.length;m++)if(null!=e&&this.isTableRow(b[m])){var x=this.model.getParent(b[m]),v=this.getCellGeometry(b[m]);this.isTable(x)&&l.push(x);if(null!=x&&null!=v&&this.isTable(x)&&this.isTable(e)&&(g||x!=e)){if(!g){var n=this.getCellGeometry(x);null!=n&&
-(n=n.clone(),n.height-=v.height,this.model.setGeometry(x,n))}n=this.getCellGeometry(e);null!=n&&(n=n.clone(),n.height+=v.height,this.model.setGeometry(e,n));var t=this.model.getChildCells(e,!0);if(0<t.length){b[m]=g?this.cloneCell(b[m]):b[m];var u=this.model.getChildCells(b[m],!0),ha=this.model.getChildCells(t[0],!0),y=ha.length-u.length;if(0<y)for(var C=0;C<y;C++){var z=this.cloneCell(u[u.length-1]);null!=z&&(z.value="",this.model.add(b[m],z))}else if(0>y)for(C=0;C>y;C--)this.model.remove(u[u.length+
-C-1]);u=this.model.getChildCells(b[m],!0);for(C=0;C<ha.length;C++){var J=this.getCellGeometry(ha[C]),q=this.getCellGeometry(u[C]);null!=J&&null!=q&&(q=q.clone(),q.width=J.width,this.model.setGeometry(u[C],q))}}}}for(var pa=p.apply(this,arguments),m=0;m<l.length;m++)!g&&this.model.contains(l[m])&&0==this.model.getChildCount(l[m])&&this.model.remove(l[m]);g&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(b)),pa)}finally{this.model.endUpdate()}return pa};var m=Graph.prototype.removeCells;
+(n=n.clone(),n.height-=v.height,this.model.setGeometry(x,n))}n=this.getCellGeometry(e);null!=n&&(n=n.clone(),n.height+=v.height,this.model.setGeometry(e,n));var t=this.model.getChildCells(e,!0);if(0<t.length){b[m]=g?this.cloneCell(b[m]):b[m];var ba=this.model.getChildCells(b[m],!0),u=this.model.getChildCells(t[0],!0),y=u.length-ba.length;if(0<y)for(var C=0;C<y;C++){var z=this.cloneCell(ba[ba.length-1]);null!=z&&(z.value="",this.model.add(b[m],z))}else if(0>y)for(C=0;C>y;C--)this.model.remove(ba[ba.length+
+C-1]);ba=this.model.getChildCells(b[m],!0);for(C=0;C<u.length;C++){var J=this.getCellGeometry(u[C]),ma=this.getCellGeometry(ba[C]);null!=J&&null!=ma&&(ma=ma.clone(),ma.width=J.width,this.model.setGeometry(ba[C],ma))}}}}for(var q=p.apply(this,arguments),m=0;m<l.length;m++)!g&&this.model.contains(l[m])&&0==this.model.getChildCount(l[m])&&this.model.remove(l[m]);g&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(b)),q)}finally{this.model.endUpdate()}return q};var m=Graph.prototype.removeCells;
Graph.prototype.removeCells=function(b,d){var c=[];this.model.beginUpdate();try{for(var g=0;g<b.length;g++)if(this.isTableCell(b[g])){var e=this.model.getParent(b[g]),k=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(k)?0>mxUtils.indexOf(b,k)&&0>mxUtils.indexOf(c,k)&&c.push(k):this.labelChanged(b[g],"")}else{if(this.isTableRow(b[g])&&(k=this.model.getParent(b[g]),0>mxUtils.indexOf(b,k)&&0>mxUtils.indexOf(c,k))){for(var f=this.model.getChildCells(k,!0),l=0,p=0;p<
f.length;p++)0<=mxUtils.indexOf(b,f[p])&&l++;l==f.length&&c.push(k)}c.push(b[g])}c=m.apply(this,[c,d])}finally{this.model.endUpdate()}return c};Graph.prototype.updateCustomLinks=function(b,d,c){c=null!=c?c:new Graph;for(var g=0;g<d.length;g++)null!=d[g]&&c.updateCustomLinksForCell(b,d[g],c)};Graph.prototype.updateCustomLinksForCell=function(b,d){this.doUpdateCustomLinksForCell(b,d);for(var c=this.model.getChildCount(d),g=0;g<c;g++)this.updateCustomLinksForCell(b,this.model.getChildAt(d,g))};Graph.prototype.doUpdateCustomLinksForCell=
function(b,d){};Graph.prototype.getAllConnectionConstraints=function(b,d){if(null!=b){var c=mxUtils.getValue(b.style,"points",null);if(null!=c){var g=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var k=e[c];g.push(new mxConnectionConstraint(new mxPoint(k[0],k[1]),2<k.length?"0"!=k[2]:!0,null,3<k.length?k[3]:0,4<k.length?k[4]:0))}}catch(Z){}return g}if(null!=b.shape&&null!=b.shape.bounds){k=b.shape.direction;e=b.shape.bounds;c=b.shape.scale;g=e.width/c;e=e.height/c;if(k==mxConstants.DIRECTION_NORTH||
@@ -2584,13 +2586,13 @@ k==mxConstants.DIRECTION_SOUTH)k=g,g=e,e=k;c=b.shape.getConstraints(b.style,g,e)
this.setCellStyles(mxConstants.STYLE_ELBOW,d,[b])}};Graph.prototype.isValidRoot=function(b){for(var d=this.model.getChildCount(b),c=0,g=0;g<d;g++){var e=this.model.getChildAt(b,g);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(b)};Graph.prototype.isValidDropTarget=function(b,d,c){for(var g=this.getCurrentCellStyle(b),e=!0,k=!0,f=0;f<d.length&&k;f++)e=e&&this.isTable(d[f]),k=k&&this.isTableRow(d[f]);return("1"!=mxUtils.getValue(g,"part","0")||
this.isContainer(b))&&"0"!=mxUtils.getValue(g,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(b))&&!this.isTableRow(b)&&(!this.isTable(b)||k||e)&&!this.isCellLocked(b)};Graph.prototype.createGroupCell=function(){var b=mxGraph.prototype.createGroupCell.apply(this,arguments);b.setStyle("group");return b};Graph.prototype.isExtendParentsOnAdd=function(b){var d=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(d&&null!=b&&null!=this.layoutManager){var c=
this.model.getParent(b);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(d=!1))}return d};Graph.prototype.getPreferredSizeForCell=function(b){var d=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=d&&(d.width+=10,d.height+=4,this.gridEnabled&&(d.width=this.snap(d.width),d.height=this.snap(d.height)));return d};Graph.prototype.turnShapes=function(b,d){var c=this.getModel(),g=[];c.beginUpdate();try{for(var e=0;e<b.length;e++){var k=b[e];if(c.isEdge(k)){var f=
-c.getTerminal(k,!0),l=c.getTerminal(k,!1);c.setTerminal(k,l,!0);c.setTerminal(k,f,!1);var m=c.getGeometry(k);if(null!=m){m=m.clone();null!=m.points&&m.points.reverse();var p=m.getTerminalPoint(!0),x=m.getTerminalPoint(!1);m.setTerminalPoint(p,!1);m.setTerminalPoint(x,!0);c.setGeometry(k,m);var v=this.view.getState(k),n=this.view.getState(f),u=this.view.getState(l);if(null!=v){var t=null!=n?this.getConnectionConstraint(v,n,!0):null,ha=null!=u?this.getConnectionConstraint(v,u,!1):null;this.setConnectionConstraint(k,
-f,!0,ha);this.setConnectionConstraint(k,l,!1,t);var y=mxUtils.getValue(v.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(v.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[k]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,y,[k])}g.push(k)}}else if(c.isVertex(k)&&(m=this.getCellGeometry(k),null!=m)){if(!(this.isTable(k)||this.isTableRow(k)||this.isTableCell(k)||this.isSwimlane(k))){m=m.clone();m.x+=m.width/
+c.getTerminal(k,!0),l=c.getTerminal(k,!1);c.setTerminal(k,l,!0);c.setTerminal(k,f,!1);var m=c.getGeometry(k);if(null!=m){m=m.clone();null!=m.points&&m.points.reverse();var p=m.getTerminalPoint(!0),x=m.getTerminalPoint(!1);m.setTerminalPoint(p,!1);m.setTerminalPoint(x,!0);c.setGeometry(k,m);var v=this.view.getState(k),n=this.view.getState(f),t=this.view.getState(l);if(null!=v){var u=null!=n?this.getConnectionConstraint(v,n,!0):null,ba=null!=t?this.getConnectionConstraint(v,t,!1):null;this.setConnectionConstraint(k,
+f,!0,ba);this.setConnectionConstraint(k,l,!1,u);var y=mxUtils.getValue(v.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(v.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[k]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,y,[k])}g.push(k)}}else if(c.isVertex(k)&&(m=this.getCellGeometry(k),null!=m)){if(!(this.isTable(k)||this.isTableRow(k)||this.isTableCell(k)||this.isSwimlane(k))){m=m.clone();m.x+=m.width/
2-m.height/2;m.y+=m.height/2-m.width/2;var C=m.width;m.width=m.height;m.height=C;c.setGeometry(k,m)}var z=this.view.getState(k);if(null!=z){var J=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],q=mxUtils.getValue(z.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,J[mxUtils.mod(mxUtils.indexOf(J,q)+(d?-1:1),J.length)],[k])}g.push(k)}}}finally{c.endUpdate()}return g};Graph.prototype.stencilHasPlaceholders=
function(b){if(null!=b&&null!=b.fgNode)for(b=b.fgNode.firstChild;null!=b;){if("text"==b.nodeName&&"1"==b.getAttribute("placeholders"))return!0;b=b.nextSibling}return!1};var v=Graph.prototype.processChange;Graph.prototype.processChange=function(b){if(b instanceof mxGeometryChange&&(this.isTableCell(b.cell)||this.isTableRow(b.cell))&&(null==b.previous&&null!=b.geometry||null!=b.previous&&!b.previous.equals(b.geometry))){var d=b.cell;this.isTableCell(d)&&(d=this.model.getParent(d));this.isTableRow(d)&&
(d=this.model.getParent(d));var c=this.view.getState(d);null!=c&&null!=c.shape&&(this.view.invalidate(d),c.shape.bounds=null)}v.apply(this,arguments);b instanceof mxValueChange&&null!=b.cell&&null!=b.cell.value&&"object"==typeof b.cell.value&&this.invalidateDescendantsWithPlaceholders(b.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(b){b=this.model.getDescendants(b);if(0<b.length)for(var d=0;d<b.length;d++){var c=this.view.getState(b[d]);null!=c&&null!=c.shape&&null!=c.shape.stencil&&
this.stencilHasPlaceholders(c.shape.stencil)?this.removeStateForCell(b[d]):this.isReplacePlaceholders(b[d])&&this.view.invalidate(b[d],!1,!1)}};Graph.prototype.replaceElement=function(b,d){for(var c=b.ownerDocument.createElement(null!=d?d:"span"),g=Array.prototype.slice.call(b.attributes);attr=g.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=b.innerHTML;b.parentNode.replaceChild(c,b)};Graph.prototype.processElements=function(b,d){if(null!=b)for(var c=b.getElementsByTagName("*"),g=
-0;g<c.length;g++)d(c[g])};Graph.prototype.updateLabelElements=function(b,d,c){b=null!=b?b:this.getSelectionCells();for(var g=document.createElement("div"),e=0;e<b.length;e++)if(this.isHtmlLabel(b[e])){var k=this.convertValueToString(b[e]);if(null!=k&&0<k.length){g.innerHTML=k;for(var f=g.getElementsByTagName(null!=c?c:"*"),m=0;m<f.length;m++)d(f[m]);g.innerHTML!=k&&this.cellLabelChanged(b[e],g.innerHTML)}}};Graph.prototype.cellLabelChanged=function(b,d,c){d=Graph.zapGremlins(d);this.model.beginUpdate();
+0;g<c.length;g++)d(c[g])};Graph.prototype.updateLabelElements=function(b,d,c){b=null!=b?b:this.getSelectionCells();for(var g=document.createElement("div"),e=0;e<b.length;e++)if(this.isHtmlLabel(b[e])){var k=this.convertValueToString(b[e]);if(null!=k&&0<k.length){g.innerHTML=k;for(var f=g.getElementsByTagName(null!=c?c:"*"),l=0;l<f.length;l++)d(f[l]);g.innerHTML!=k&&this.cellLabelChanged(b[e],g.innerHTML)}}};Graph.prototype.cellLabelChanged=function(b,d,c){d=Graph.zapGremlins(d);this.model.beginUpdate();
try{if(null!=b.value&&"object"==typeof b.value){if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var g=b.getAttribute("placeholder"),e=b;null!=e;){if(e==this.model.getRoot()||null!=e.value&&"object"==typeof e.value&&e.hasAttribute(g)){this.setAttributeForCell(e,g,d);break}e=this.model.getParent(e)}var k=b.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&k.hasAttribute("label_"+Graph.diagramLanguage)?k.setAttribute("label_"+Graph.diagramLanguage,d):
k.setAttribute("label",d);d=k}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(b){if(null!=b){for(var d=new mxDictionary,c=0;c<b.length;c++)d.put(b[c],!0);for(var g=[],c=0;c<b.length;c++){var e=this.model.getParent(b[c]);null==e||d.get(e)||(d.put(e,!0),g.push(e))}for(c=0;c<g.length;c++)if(e=this.view.getState(g[c]),null!=e&&(this.model.isEdge(e.cell)||this.model.isVertex(e.cell))&&this.isCellDeletable(e.cell)&&this.isTransparentState(e)){for(var k=
!0,f=0;f<this.model.getChildCount(e.cell)&&k;f++)d.get(this.model.getChildAt(e.cell,f))||(k=!1);k&&b.push(e.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(b){for(var d=[],c=0;c<b.length;c++)this.isCellDeletable(b[c])&&this.isTransparentState(this.view.getState(b[c]))&&d.push(b[c]);b=d;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(b,d){this.setAttributeForCell(b,"link",d)};Graph.prototype.setTooltipForCell=
@@ -2603,97 +2605,100 @@ b))};Graph.prototype.getFreeInsertPoint=function(){var b=this.view,d=this.getGra
this.container.clientWidth/2)/this.view.scale-this.view.translate.x-b.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/2)/this.view.scale-this.view.translate.y-b.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-b.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-b.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=
function(b,d,c){var g=new mxCell;g.value="Text";g.geometry=new mxGeometry(0,0,0,0);g.vertex=!0;if(null!=c&&this.model.isEdge(c.cell)){g.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";g.geometry.relative=!0;g.connectable=!1;var e=this.view.getRelativePoint(c,b,d);g.geometry.x=Math.round(1E4*e.x)/1E4;g.geometry.y=Math.round(e.y);g.geometry.offset=new mxPoint(0,0);var e=this.view.getPoint(c,g.geometry),k=this.view.scale;g.geometry.offset=new mxPoint(Math.round((b-e.x)/
k),Math.round((d-e.y)/k))}else e=this.view.translate,g.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",g.geometry.width=40,g.geometry.height=20,g.geometry.x=Math.round(b/this.view.scale)-e.x-(null!=c?c.origin.x:0),g.geometry.y=Math.round(d/this.view.scale)-e.y-(null!=c?c.origin.y:0),g.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([g],null!=c?c.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[g])),this.autoSizeCell(g)}finally{this.getModel().endUpdate()}return g};
-Graph.prototype.addClickHandler=function(b,d,c){var g=mxUtils.bind(this,function(){var b=this.container.getElementsByTagName("a");if(null!=b)for(var c=0;c<b.length;c++){var g=this.getAbsoluteUrl(b[c].getAttribute("href"));null!=g&&(b[c].setAttribute("rel",this.linkRelation),b[c].setAttribute("href",g),null!=d&&mxEvent.addGestureListeners(b[c],null,null,d))}});this.model.addListener(mxEvent.CHANGE,g);g();var e=this.container.style.cursor,k=this.getTolerance(),f=this,m={currentState:null,currentLink:null,
+Graph.prototype.addClickHandler=function(b,d,c){var g=mxUtils.bind(this,function(){var b=this.container.getElementsByTagName("a");if(null!=b)for(var c=0;c<b.length;c++){var g=this.getAbsoluteUrl(b[c].getAttribute("href"));null!=g&&(b[c].setAttribute("rel",this.linkRelation),b[c].setAttribute("href",g),null!=d&&mxEvent.addGestureListeners(b[c],null,null,d))}});this.model.addListener(mxEvent.CHANGE,g);g();var e=this.container.style.cursor,k=this.getTolerance(),f=this,l={currentState:null,currentLink:null,
currentTarget:null,highlight:null!=b&&""!=b&&b!=mxConstants.NONE?new mxCellHighlight(f,b,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(b){var d=b.sourceState;if(null==d||null==f.getLinkForCell(d.cell))b=f.getCellAt(b.getGraphX(),b.getGraphY(),null,null,null,function(b,d,c){return null==f.getLinkForCell(b.cell)}),d=null==d||f.model.isAncestor(b,d.cell)?f.view.getState(b):null;d!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=d,null!=this.currentState&&
this.activate(this.currentState))},mouseDown:function(b,d){this.startX=d.getGraphX();this.startY=d.getGraphY();this.scrollLeft=f.container.scrollLeft;this.scrollTop=f.container.scrollTop;null==this.currentLink&&"auto"==f.container.style.overflow&&(f.container.style.cursor="move");this.updateCurrentState(d)},mouseMove:function(b,d){if(f.isMouseDown){if(null!=this.currentLink){var c=Math.abs(this.startX-d.getGraphX()),g=Math.abs(this.startY-d.getGraphY());(c>k||g>k)&&this.clear()}}else{for(c=d.getSource();null!=
-c&&"a"!=c.nodeName.toLowerCase();)c=c.parentNode;null!=c?this.clear():(null!=f.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&f.tooltipHandler.reset(d,!0,this.currentState),(null==this.currentState||d.getState()!=this.currentState&&null!=d.sourceState||!f.intersects(this.currentState,d.getGraphX(),d.getGraphY()))&&this.updateCurrentState(d))}},mouseUp:function(b,g){for(var e=g.getSource(),m=g.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
-f.container.scrollLeft)<k&&Math.abs(this.scrollTop-f.container.scrollTop)<k&&(null==g.sourceState||!g.isSource(g.sourceState.control))&&((mxEvent.isLeftMouseButton(m)||mxEvent.isMiddleMouseButton(m))&&!mxEvent.isPopupTrigger(m)||mxEvent.isTouchEvent(m))&&(null!=this.currentLink?(e=f.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==d||d(m,this.currentLink),mxEvent.isConsumed(m)||(m=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(m)?"_blank":
-e?f.linkTarget:"_top",f.openLink(this.currentLink,m),g.consume())):null!=c&&!g.isConsumed()&&Math.abs(this.scrollLeft-f.container.scrollLeft)<k&&Math.abs(this.scrollTop-f.container.scrollTop)<k&&Math.abs(this.startX-g.getGraphX())<k&&Math.abs(this.startY-g.getGraphY())<k&&c(g.getEvent()));this.clear()},activate:function(b){this.currentLink=f.getAbsoluteUrl(f.getLinkForCell(b.cell));null!=this.currentLink&&(this.currentTarget=f.getLinkTargetForCell(b.cell),f.container.style.cursor="pointer",null!=
-this.highlight&&this.highlight.highlight(b))},clear:function(){null!=f.container&&(f.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=f.tooltipHandler&&f.tooltipHandler.hide()}};f.click=function(b){};f.addMouseListener(m);mxEvent.addListener(document,"mouseleave",function(b){m.clear()})};Graph.prototype.duplicateCells=function(b,d){b=null!=b?b:this.getSelectionCells();d=null!=d?d:!0;for(var c=0;c<b.length;c++)this.isTableCell(b[c])&&
-(b[c]=this.model.getParent(b[c]));b=this.model.getTopmostCells(b);var g=this.getModel(),e=this.gridSize,k=[];g.beginUpdate();try{for(var f={},m=this.createCellLookup(b),l=this.cloneCells(b,!1,f,!0),c=0;c<b.length;c++){var p=g.getParent(b[c]);if(null!=p){var x=this.moveCells([l[c]],e,e,!1)[0];k.push(x);if(d)g.add(p,l[c]);else{var v=p.getIndex(b[c]);g.add(p,l[c],v+1)}if(this.isTable(p)){var n=this.getCellGeometry(l[c]),u=this.getCellGeometry(p);null!=n&&null!=u&&(u=u.clone(),u.height+=n.height,g.setGeometry(p,
-u))}}else k.push(l[c])}this.updateCustomLinks(this.createCellMapping(f,m),l,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",l))}finally{g.endUpdate()}return k};Graph.prototype.insertImage=function(b,d,c){if(null!=b&&null!=this.cellEditor.textarea){for(var g=this.cellEditor.textarea.getElementsByTagName("img"),e=[],k=0;k<g.length;k++)e.push(g[k]);document.execCommand("insertimage",!1,b);b=this.cellEditor.textarea.getElementsByTagName("img");if(b.length==e.length+1)for(k=b.length-
+c&&"a"!=c.nodeName.toLowerCase();)c=c.parentNode;null!=c?this.clear():(null!=f.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&f.tooltipHandler.reset(d,!0,this.currentState),(null==this.currentState||d.getState()!=this.currentState&&null!=d.sourceState||!f.intersects(this.currentState,d.getGraphX(),d.getGraphY()))&&this.updateCurrentState(d))}},mouseUp:function(b,g){for(var e=g.getSource(),l=g.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
+f.container.scrollLeft)<k&&Math.abs(this.scrollTop-f.container.scrollTop)<k&&(null==g.sourceState||!g.isSource(g.sourceState.control))&&((mxEvent.isLeftMouseButton(l)||mxEvent.isMiddleMouseButton(l))&&!mxEvent.isPopupTrigger(l)||mxEvent.isTouchEvent(l))&&(null!=this.currentLink?(e=f.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==d||d(l,this.currentLink),mxEvent.isConsumed(l)||(l=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(l)?"_blank":
+e?f.linkTarget:"_top",f.openLink(this.currentLink,l),g.consume())):null!=c&&!g.isConsumed()&&Math.abs(this.scrollLeft-f.container.scrollLeft)<k&&Math.abs(this.scrollTop-f.container.scrollTop)<k&&Math.abs(this.startX-g.getGraphX())<k&&Math.abs(this.startY-g.getGraphY())<k&&c(g.getEvent()));this.clear()},activate:function(b){this.currentLink=f.getAbsoluteUrl(f.getLinkForCell(b.cell));null!=this.currentLink&&(this.currentTarget=f.getLinkTargetForCell(b.cell),f.container.style.cursor="pointer",null!=
+this.highlight&&this.highlight.highlight(b))},clear:function(){null!=f.container&&(f.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=f.tooltipHandler&&f.tooltipHandler.hide()}};f.click=function(b){};f.addMouseListener(l);mxEvent.addListener(document,"mouseleave",function(b){l.clear()})};Graph.prototype.duplicateCells=function(b,d){b=null!=b?b:this.getSelectionCells();d=null!=d?d:!0;for(var c=0;c<b.length;c++)this.isTableCell(b[c])&&
+(b[c]=this.model.getParent(b[c]));b=this.model.getTopmostCells(b);var g=this.getModel(),e=this.gridSize,k=[];g.beginUpdate();try{for(var f={},l=this.createCellLookup(b),m=this.cloneCells(b,!1,f,!0),c=0;c<b.length;c++){var p=g.getParent(b[c]);if(null!=p){var x=this.moveCells([m[c]],e,e,!1)[0];k.push(x);if(d)g.add(p,m[c]);else{var v=p.getIndex(b[c]);g.add(p,m[c],v+1)}if(this.isTable(p)){var n=this.getCellGeometry(m[c]),t=this.getCellGeometry(p);null!=n&&null!=t&&(t=t.clone(),t.height+=n.height,g.setGeometry(p,
+t))}}else k.push(m[c])}this.updateCustomLinks(this.createCellMapping(f,l),m,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",m))}finally{g.endUpdate()}return k};Graph.prototype.insertImage=function(b,d,c){if(null!=b&&null!=this.cellEditor.textarea){for(var g=this.cellEditor.textarea.getElementsByTagName("img"),e=[],k=0;k<g.length;k++)e.push(g[k]);document.execCommand("insertimage",!1,b);b=this.cellEditor.textarea.getElementsByTagName("img");if(b.length==e.length+1)for(k=b.length-
1;0<=k;k--)if(0==k||b[k]!=e[k-1]){b[k].setAttribute("width",d);b[k].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(b){if(null!=this.cellEditor.textarea)if(0==b.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var d=this.cellEditor.textarea.getElementsByTagName("a"),c=[],g=0;g<d.length;g++)c.push(d[g]);document.execCommand("createlink",!1,mxUtils.trim(b));d=this.cellEditor.textarea.getElementsByTagName("a");if(d.length==c.length+1)for(g=d.length-1;0<=g;g--)if(d[g]!=
c[g-1]){for(d=d[g].getElementsByTagName("a");0<d.length;){for(c=d[0].parentNode;null!=d[0].firstChild;)c.insertBefore(d[0].firstChild,d[0]);c.removeChild(d[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(b))};Graph.prototype.isCellResizable=function(b){var d=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.getCurrentCellStyle(b);return!this.isTableCell(b)&&!this.isTableRow(b)&&(d||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE])};
-Graph.prototype.distributeCells=function(b,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var c=[],g=null,e=null,k=0;k<d.length;k++)if(this.getModel().isVertex(d[k])){var f=this.view.getState(d[k]);if(null!=f){var m=b?f.getCenterX():f.getCenterY(),g=null!=g?Math.max(g,m):m,e=null!=e?Math.min(e,m):m;c.push(f)}}if(2<c.length){c.sort(function(d,c){return b?d.x-c.x:d.y-c.y});f=this.view.translate;m=this.view.scale;e=e/m-(b?f.x:f.y);g=g/m-(b?f.x:f.y);this.getModel().beginUpdate();
-try{for(var l=(g-e)/(c.length-1),g=e,k=1;k<c.length-1;k++){var p=this.view.getState(this.model.getParent(c[k].cell)),x=this.getCellGeometry(c[k].cell),g=g+l;null!=x&&null!=p&&(x=x.clone(),b?x.x=Math.round(g-x.width/2)-p.origin.x:x.y=Math.round(g-x.height/2)-p.origin.y,this.getModel().setGeometry(c[k].cell,x))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(b){return mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)};Graph.prototype.createSvgImageExport=
-function(){var b=new mxImageExport;b.getLinkForCellState=mxUtils.bind(this,function(b,d){return this.getLinkForCell(b.cell)});return b};Graph.prototype.parseBackgroundImage=function(b){var d=null;null!=b&&0<b.length&&(b=JSON.parse(b),d=new mxImage(b.src,b.width,b.height));return d};Graph.prototype.getBackgroundImageObject=function(b){return b};Graph.prototype.getSvg=function(b,d,c,g,e,k,f,m,l,p,x,v,n,u){var t=null;if(null!=u)for(t=new mxDictionary,x=0;x<u.length;x++)t.put(u[x],!0);if(u=this.useCssTransforms)this.useCssTransforms=
-!1,this.view.revalidate(),this.sizeDidChange();try{d=null!=d?d:1;c=null!=c?c:0;e=null!=e?e:!0;k=null!=k?k:!0;f=null!=f?f:!0;p=null!=p?p:!1;var y="page"==n?this.view.getBackgroundPageBounds():k&&null==t||g||"diagram"==n?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),C=this.view.scale;"diagram"==n&&null!=this.backgroundImage&&(y=mxRectangle.fromRectangle(y),y.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*C,(this.view.translate.y+this.backgroundImage.y)*C,this.backgroundImage.width*
+Graph.prototype.distributeCells=function(b,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var c=[],g=null,e=null,k=0;k<d.length;k++)if(this.getModel().isVertex(d[k])){var f=this.view.getState(d[k]);if(null!=f){var l=b?f.getCenterX():f.getCenterY(),g=null!=g?Math.max(g,l):l,e=null!=e?Math.min(e,l):l;c.push(f)}}if(2<c.length){c.sort(function(d,c){return b?d.x-c.x:d.y-c.y});f=this.view.translate;l=this.view.scale;e=e/l-(b?f.x:f.y);g=g/l-(b?f.x:f.y);this.getModel().beginUpdate();
+try{for(var m=(g-e)/(c.length-1),g=e,k=1;k<c.length-1;k++){var p=this.view.getState(this.model.getParent(c[k].cell)),x=this.getCellGeometry(c[k].cell),g=g+m;null!=x&&null!=p&&(x=x.clone(),b?x.x=Math.round(g-x.width/2)-p.origin.x:x.y=Math.round(g-x.height/2)-p.origin.y,this.getModel().setGeometry(c[k].cell,x))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(b){return mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)};Graph.prototype.createSvgImageExport=
+function(){var b=new mxImageExport;b.getLinkForCellState=mxUtils.bind(this,function(b,d){return this.getLinkForCell(b.cell)});return b};Graph.prototype.parseBackgroundImage=function(b){var d=null;null!=b&&0<b.length&&(b=JSON.parse(b),d=new mxImage(b.src,b.width,b.height));return d};Graph.prototype.getBackgroundImageObject=function(b){return b};Graph.prototype.getSvg=function(b,d,c,g,e,k,f,l,m,p,x,v,n,t){var u=null;if(null!=t)for(u=new mxDictionary,x=0;x<t.length;x++)u.put(t[x],!0);if(t=this.useCssTransforms)this.useCssTransforms=
+!1,this.view.revalidate(),this.sizeDidChange();try{d=null!=d?d:1;c=null!=c?c:0;e=null!=e?e:!0;k=null!=k?k:!0;f=null!=f?f:!0;p=null!=p?p:!1;var y="page"==n?this.view.getBackgroundPageBounds():k&&null==u||g||"diagram"==n?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),C=this.view.scale;"diagram"==n&&null!=this.backgroundImage&&(y=mxRectangle.fromRectangle(y),y.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*C,(this.view.translate.y+this.backgroundImage.y)*C,this.backgroundImage.width*
C,this.backgroundImage.height*C)));if(null==y)throw Error(mxResources.get("drawingEmpty"));var z=mxUtils.createXmlDocument(),J=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"svg"):z.createElement("svg");null!=b&&(null!=J.style?J.style.backgroundColor=b:J.setAttribute("style","background-color:"+b));null==z.createElementNS?(J.setAttribute("xmlns",mxConstants.NS_SVG),J.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):J.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);
-b=d/C;var q=Math.max(1,Math.ceil(y.width*b)+2*c)+(p&&0==c?5:0),ha=Math.max(1,Math.ceil(y.height*b)+2*c)+(p&&0==c?5:0);J.setAttribute("version","1.1");J.setAttribute("width",q+"px");J.setAttribute("height",ha+"px");J.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+ha);z.appendChild(J);var da=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"g"):z.createElement("g");J.appendChild(da);var A=this.createSvgCanvas(da);A.foOffset=e?-.5:0;A.textOffset=e?-.5:0;A.imageOffset=e?-.5:0;A.translate(Math.floor(c/
-d-y.x/C),Math.floor(c/d-y.y/C));var K=document.createElement("div"),ca=A.getAlternateText;A.getAlternateText=function(b,d,c,g,e,k,f,m,l,p,x,v,n){if(null!=k&&0<this.state.fontSize)try{mxUtils.isNode(k)?k=k.innerText:(K.innerHTML=k,k=mxUtils.extractTextWithWhitespace(K.childNodes));for(var u=Math.ceil(2*g/this.state.fontSize),t=[],B=0,wa=0;(0==u||B<u)&&wa<k.length;){var Ta=k.charCodeAt(wa);if(10==Ta||13==Ta){if(0<B)break}else t.push(k.charAt(wa)),255>Ta&&B++;wa++}t.length<k.length&&1<k.length-t.length&&
-(k=mxUtils.trim(t.join(""))+"...");return k}catch(Ja){return ca.apply(this,arguments)}else return ca.apply(this,arguments)};var W=this.backgroundImage;if(null!=W){d=C/d;var aa=this.view.translate,G=new mxRectangle((W.x+aa.x)*d,(W.y+aa.y)*d,W.width*d,W.height*d);mxUtils.intersects(y,G)&&A.image(W.x+aa.x,W.y+aa.y,W.width,W.height,W.src,!0)}A.scale(b);A.textEnabled=f;m=null!=m?m:this.createSvgImageExport();var pa=m.drawCellState,O=m.getLinkForCellState;m.getLinkForCellState=function(b,d){var c=O.apply(this,
-arguments);return null==c||b.view.graph.isCustomLink(c)?null:c};m.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};m.drawCellState=function(b,d){for(var c=b.view.graph,g=null!=t?t.get(b.cell):c.isCellSelected(b.cell),e=c.model.getParent(b.cell);!(k&&null==t||g)&&null!=e;)g=null!=t?t.get(e):c.isCellSelected(e),e=c.model.getParent(e);(k&&null==t||g)&&pa.apply(this,arguments)};m.drawState(this.getView().getState(this.model.root),A);this.updateSvgLinks(J,l,!0);
-this.addForeignObjectWarning(A,J);return J}finally{u&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(b,d){if("0"!=urlParams["svg-warning"]&&0<d.getElementsByTagName("foreignObject").length){var c=b.createElement("switch"),g=b.createElement("g");g.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=b.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
+b=d/C;var q=Math.max(1,Math.ceil(y.width*b)+2*c)+(p&&0==c?5:0),ba=Math.max(1,Math.ceil(y.height*b)+2*c)+(p&&0==c?5:0);J.setAttribute("version","1.1");J.setAttribute("width",q+"px");J.setAttribute("height",ba+"px");J.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+ba);z.appendChild(J);var ea=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"g"):z.createElement("g");J.appendChild(ea);var A=this.createSvgCanvas(ea);A.foOffset=e?-.5:0;A.textOffset=e?-.5:0;A.imageOffset=e?-.5:0;A.translate(Math.floor(c/
+d-y.x/C),Math.floor(c/d-y.y/C));var K=document.createElement("div"),da=A.getAlternateText;A.getAlternateText=function(b,d,c,g,e,k,f,l,m,p,x,v,n){if(null!=k&&0<this.state.fontSize)try{mxUtils.isNode(k)?k=k.innerText:(K.innerHTML=k,k=mxUtils.extractTextWithWhitespace(K.childNodes));for(var t=Math.ceil(2*g/this.state.fontSize),u=[],B=0,wa=0;(0==t||B<t)&&wa<k.length;){var Ta=k.charCodeAt(wa);if(10==Ta||13==Ta){if(0<B)break}else u.push(k.charAt(wa)),255>Ta&&B++;wa++}u.length<k.length&&1<k.length-u.length&&
+(k=mxUtils.trim(u.join(""))+"...");return k}catch(Ja){return da.apply(this,arguments)}else return da.apply(this,arguments)};var W=this.backgroundImage;if(null!=W){d=C/d;var aa=this.view.translate,ma=new mxRectangle((W.x+aa.x)*d,(W.y+aa.y)*d,W.width*d,W.height*d);mxUtils.intersects(y,ma)&&A.image(W.x+aa.x,W.y+aa.y,W.width,W.height,W.src,!0)}A.scale(b);A.textEnabled=f;l=null!=l?l:this.createSvgImageExport();var G=l.drawCellState,O=l.getLinkForCellState;l.getLinkForCellState=function(b,d){var c=O.apply(this,
+arguments);return null==c||b.view.graph.isCustomLink(c)?null:c};l.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};l.drawCellState=function(b,d){for(var c=b.view.graph,g=null!=u?u.get(b.cell):c.isCellSelected(b.cell),e=c.model.getParent(b.cell);!(k&&null==u||g)&&null!=e;)g=null!=u?u.get(e):c.isCellSelected(e),e=c.model.getParent(e);(k&&null==u||g)&&G.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),A);this.updateSvgLinks(J,m,!0);
+this.addForeignObjectWarning(A,J);return J}finally{t&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(b,d){if("0"!=urlParams["svg-warning"]&&0<d.getElementsByTagName("foreignObject").length){var c=b.createElement("switch"),g=b.createElement("g");g.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=b.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
d.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var k=b.createElement("text");k.setAttribute("text-anchor","middle");k.setAttribute("font-size","10px");k.setAttribute("x","50%");k.setAttribute("y","100%");mxUtils.write(k,Graph.foreignObjectWarningText);c.appendChild(g);
e.appendChild(k);c.appendChild(e);d.appendChild(c)}};Graph.prototype.updateSvgLinks=function(b,d,c){b=b.getElementsByTagName("a");for(var g=0;g<b.length;g++)if(null==b[g].getAttribute("target")){var e=b[g].getAttribute("href");null==e&&(e=b[g].getAttribute("xlink:href"));null!=e&&(null!=d&&/^https?:\/\//.test(e)?b[g].setAttribute("target",d):c&&this.isCustomLink(e)&&b[g].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(b){b=new mxSvgCanvas2D(b);b.pointerEvents=
!0;return b};Graph.prototype.getSelectedElement=function(){var b=null;if(window.getSelection){var d=window.getSelection();d.getRangeAt&&d.rangeCount&&(b=d.getRangeAt(0).commonAncestorContainer)}else document.selection&&(b=document.selection.createRange().parentElement());return b};Graph.prototype.getSelectedEditingElement=function(){for(var b=this.getSelectedElement();null!=b&&b.nodeType!=mxConstants.NODETYPE_ELEMENT;)b=b.parentNode;null!=b&&b==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&
this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=this.cellEditor.textarea.firstChild);return b};Graph.prototype.getParentByName=function(b,d,c){for(;null!=b&&b.nodeName!=d;){if(b==c)return null;b=b.parentNode}return b};Graph.prototype.getParentByNames=function(b,d,c){for(;null!=b&&!(0<=mxUtils.indexOf(d,b.nodeName));){if(b==c)return null;b=b.parentNode}return b};Graph.prototype.selectNode=function(b){var d=null;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&
-d.rangeCount){var c=document.createRange();c.selectNode(b);d.removeAllRanges();d.addRange(c)}}else(d=document.selection)&&"Control"!=d.type&&(b=d.createRange(),b.collapse(!0),c=d.createRange(),c.setEndPoint("StartToStart",b),c.select())};Graph.prototype.deleteCells=function(b,d){var c=null;if(null!=b&&0<b.length){this.model.beginUpdate();try{for(var g=0;g<b.length;g++){var e=this.model.getParent(b[g]);if(this.isTable(e)){var k=this.getCellGeometry(b[g]),f=this.getCellGeometry(e);null!=k&&null!=f&&
-(f=f.clone(),f.height-=k.height,this.model.setGeometry(e,f))}}var m=this.selectParentAfterDelete?this.model.getParents(b):null;this.removeCells(b,d)}finally{this.model.endUpdate()}if(null!=m)for(c=[],g=0;g<m.length;g++)this.model.contains(m[g])&&(this.model.isVertex(m[g])||this.model.isEdge(m[g]))&&c.push(m[g])}return c};Graph.prototype.insertTableColumn=function(b,d){var c=this.getModel();c.beginUpdate();try{var g=b,e=0;if(this.isTableCell(b))var k=c.getParent(b),g=c.getParent(k),e=mxUtils.indexOf(c.getChildCells(k,
-!0),b);else this.isTableRow(b)?g=c.getParent(b):b=c.getChildCells(g,!0)[0],d||(e=c.getChildCells(b,!0).length-1);for(var f=c.getChildCells(g,!0),m=Graph.minTableColumnWidth,k=0;k<f.length;k++){var l=c.getChildCells(f[k],!0)[e],p=c.cloneCell(l,!1),x=this.getCellGeometry(p);p.value=null;p.style=mxUtils.setStyle(mxUtils.setStyle(p.style,"rowspan",null),"colspan",null);if(null!=x){null!=x.alternateBounds&&(x.width=x.alternateBounds.width,x.height=x.alternateBounds.height,x.alternateBounds=null);var m=
-x.width,v=this.getCellGeometry(f[k]);null!=v&&(x.height=v.height)}c.add(f[k],p,e+(d?0:1))}var n=this.getCellGeometry(g);null!=n&&(n=n.clone(),n.width+=m,c.setGeometry(g,n))}finally{c.endUpdate()}};Graph.prototype.deleteLane=function(b){var d=this.getModel();d.beginUpdate();try{var c=null,c="stackLayout"==this.getCurrentCellStyle(b).childLayout?b:d.getParent(b),g=d.getChildCells(c,!0);0==g.length?d.remove(c):(c==b&&(b=g[g.length-1]),d.remove(b))}finally{d.endUpdate()}};Graph.prototype.insertLane=function(b,
-d){var c=this.getModel();c.beginUpdate();try{var g=null,e=b;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var g=e,k=c.getChildCells(g,!0),e=k[d?0:k.length-1];else g=c.getParent(e);var f=g.getIndex(e),e=c.cloneCell(e,!1);e.value=null;c.add(g,e,f+(d?0:1))}finally{c.endUpdate()}};Graph.prototype.insertTableRow=function(b,d){var c=this.getModel();c.beginUpdate();try{var g=b,e=b;if(this.isTableCell(b))e=c.getParent(b),g=c.getParent(e);else if(this.isTableRow(b))g=c.getParent(b);else var k=
-c.getChildCells(g,!0),e=k[d?0:k.length-1];var f=c.getChildCells(e,!0),m=g.getIndex(e),e=c.cloneCell(e,!1);e.value=null;var l=this.getCellGeometry(e);if(null!=l){for(k=0;k<f.length;k++){b=c.cloneCell(f[k],!1);b.value=null;b.style=mxUtils.setStyle(mxUtils.setStyle(b.style,"rowspan",null),"colspan",null);var p=this.getCellGeometry(b);null!=p&&(null!=p.alternateBounds&&(p.width=p.alternateBounds.width,p.height=p.alternateBounds.height,p.alternateBounds=null),p.height=l.height);e.insert(b)}c.add(g,e,m+
-(d?0:1));var x=this.getCellGeometry(g);null!=x&&(x=x.clone(),x.height+=l.height,c.setGeometry(g,x))}}finally{c.endUpdate()}};Graph.prototype.deleteTableColumn=function(b){var d=this.getModel();d.beginUpdate();try{var c=b,g=b;this.isTableCell(b)&&(g=d.getParent(b));this.isTableRow(g)&&(c=d.getParent(g));var e=d.getChildCells(c,!0);if(0==e.length)d.remove(c);else{this.isTableRow(g)||(g=e[0]);var k=d.getChildCells(g,!0);if(1>=k.length)d.remove(c);else{var f=k.length-1;this.isTableCell(b)&&(f=mxUtils.indexOf(k,
-b));for(g=b=0;g<e.length;g++){var m=d.getChildCells(e[g],!0)[f];d.remove(m);var l=this.getCellGeometry(m);null!=l&&(b=Math.max(b,l.width))}var p=this.getCellGeometry(c);null!=p&&(p=p.clone(),p.width-=b,d.setGeometry(c,p))}}}finally{d.endUpdate()}};Graph.prototype.deleteTableRow=function(b){var d=this.getModel();d.beginUpdate();try{var c=b,g=b;this.isTableCell(b)&&(b=g=d.getParent(b));this.isTableRow(b)&&(c=d.getParent(g));var e=d.getChildCells(c,!0);if(1>=e.length)d.remove(c);else{this.isTableRow(g)||
-(g=e[e.length-1]);d.remove(g);b=0;var k=this.getCellGeometry(g);null!=k&&(b=k.height);var f=this.getCellGeometry(c);null!=f&&(f=f.clone(),f.height-=b,d.setGeometry(c,f))}}finally{d.endUpdate()}};Graph.prototype.insertRow=function(b,d){for(var c=b.tBodies[0],g=c.rows[0].cells,e=0,k=0;k<g.length;k++)var f=g[k].getAttribute("colspan"),e=e+(null!=f?parseInt(f):1);c=c.insertRow(d);for(k=0;k<e;k++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(b,d){b.tBodies[0].deleteRow(d)};
-Graph.prototype.insertColumn=function(b,d){var c=b.tHead;if(null!=c)for(var g=0;g<c.rows.length;g++){var e=document.createElement("th");c.rows[g].appendChild(e);mxUtils.br(e)}c=b.tBodies[0];for(g=0;g<c.rows.length;g++)e=c.rows[g].insertCell(d),mxUtils.br(e);return c.rows[0].cells[0<=d?d:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(b,d){if(0<=d)for(var c=b.tBodies[0].rows,g=0;g<c.length;g++)c[g].cells.length>d&&c[g].deleteCell(d)};Graph.prototype.pasteHtmlAtCaret=function(b){var d;
-if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){d=d.getRangeAt(0);d.deleteContents();var c=document.createElement("div");c.innerHTML=b;b=document.createDocumentFragment();for(var g;g=c.firstChild;)lastNode=b.appendChild(g);d.insertNode(b)}}else(d=document.selection)&&"Control"!=d.type&&d.createRange().pasteHTML(b)};Graph.prototype.createLinkForHint=function(b,d){function c(b,d){b.length>d&&(b=b.substring(0,Math.round(d/2))+"..."+b.substring(b.length-Math.round(d/4)));
-return b}b=null!=b?b:"javascript:void(0);";if(null==d||0==d.length)d=this.isCustomLink(b)?this.getLinkTitle(b):b;var g=document.createElement("a");g.setAttribute("rel",this.linkRelation);g.setAttribute("href",this.getAbsoluteUrl(b));g.setAttribute("title",c(this.isCustomLink(b)?this.getLinkTitle(b):b,80));null!=this.linkTarget&&g.setAttribute("target",this.linkTarget);mxUtils.write(g,c(d,40));this.isCustomLink(b)&&mxEvent.addListener(g,"click",mxUtils.bind(this,function(d){this.customLinkClicked(b);
-mxEvent.consume(d)}));return g};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(b,d){this.popupMenuHandler.hideMenu()});var b=this.updateMouseEvent;this.updateMouseEvent=function(d){d=b.apply(this,arguments);if(mxEvent.isTouchEvent(d.getEvent())&&null==d.getState()){var c=this.getCellAt(d.graphX,d.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,d.graphX,
-d.graphY)||(d.state=this.view.getState(c),null!=d.state&&null!=d.state.shape&&(this.container.style.cursor=d.state.shape.node.style.cursor))}null==d.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return d};var d=!1,c=!1,g=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(b,k,f){b==mxEvent.MOUSE_DOWN&&(k=this.updateMouseEvent(k),d=this.isCellSelected(k.getCell()),c=this.isSelectionEmpty(),g=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=
-mxUtils.bind(this,function(b,e){var k=mxEvent.isMouseEvent(e.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!g&&!k&&(c&&null==e.getCell()&&this.isSelectionEmpty()||d&&this.isCellSelected(e.getCell())));k=!d||k?null:mxUtils.bind(this,function(b){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var d=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(e.getX()+
-d.x+1,e.getY()+d.y+1,b,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[b,e,k])})};mxCellEditor.prototype.isContentEditing=function(){var b=this.graph.view.getState(this.editingCell);return null!=b&&1==b.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var b="";window.getSelection?b=window.getSelection():
-document.getSelection?b=document.getSelection():document.selection&&(b=document.selection.createRange().text);return""!=b};mxCellEditor.prototype.insertTab=function(b){var d=this.textarea.ownerDocument.defaultView.getSelection(),c=d.getRangeAt(0),g="\t";if(null!=b)for(g="";0<b;)g+=" ",b--;b=document.createElement("span");b.style.whiteSpace="pre";b.appendChild(document.createTextNode(g));c.insertNode(b);c.setStartAfter(b);c.setEndAfter(b);d.removeAllRanges();d.addRange(c)};mxCellEditor.prototype.alignText=
-function(b,d){var c=null!=d&&mxEvent.isShiftDown(d);if(c||null!=window.getSelection&&null!=window.getSelection().containsNode){var g=!0;this.graph.processElements(this.textarea,function(b){c||window.getSelection().containsNode(b,!0)?(b.removeAttribute("align"),b.style.textAlign=null):g=!1});g&&this.graph.cellEditor.setAlign(b)}document.execCommand("justify"+b.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var b=window.getSelection();if(b.getRangeAt&&
-b.rangeCount){for(var d=[],c=0,g=b.rangeCount;c<g;++c)d.push(b.getRangeAt(c));return d}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(b){try{if(b)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var d=0,c=b.length;d<c;++d)sel.addRange(b[d])}else document.selection&&b.select&&b.select()}catch(xa){}};var t=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
-function(b){null!=b.text&&(b.text.replaceLinefeeds="0"!=mxUtils.getValue(b.style,"nl2Br","1"));t.apply(this,arguments)};var z=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(b,d){this.isKeepFocusEvent(b)||!mxEvent.isAltDown(b.getEvent())?z.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(b){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var y=mxCellEditor.prototype.startEditing;
-mxCellEditor.prototype.startEditing=function(b,d){b=this.graph.getStartEditingCell(b,d);y.apply(this,arguments);var c=this.graph.view.getState(b);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(b);var c=this.graph.getModel().getParent(b),g=this.graph.getCellGeometry(b);if(this.graph.getModel().isEdge(c)&&null!=g&&g.relative||this.graph.getModel().isEdge(b))this.textarea.style.outline=
-mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var F=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(b){function d(b,c){c.originalNode=b;b=b.firstChild;for(var g=c.firstChild;null!=b&&null!=g;)d(b,g),b=b.nextSibling,g=g.nextSibling;return c}function c(b,d){if(null!=b)if(d.originalNode!=b)g(b);else for(b=b.firstChild,d=d.firstChild;null!=b;){var e=b.nextSibling;null==d?g(b):(c(b,d),d=d.nextSibling);b=e}}function g(b){for(var d=
-b.firstChild;null!=d;){var c=d.nextSibling;g(d);d=c}1==b.nodeType&&("BR"===b.nodeName||null!=b.firstChild)||3==b.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(b)).length?(3==b.nodeType&&mxUtils.setTextContent(b,mxUtils.getTextContent(b).replace(/\n|\r/g,"")),1==b.nodeType&&(b.removeAttribute("style"),b.removeAttribute("class"),b.removeAttribute("width"),b.removeAttribute("cellpadding"),b.removeAttribute("cellspacing"),b.removeAttribute("border"))):b.parentNode.removeChild(b)}F.apply(this,arguments);
-7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(b){var g=d(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]>")?c(this.textarea,g):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var b=this.graph.view.getState(this.editingCell);
-if(null!=b){var d=null!=b&&"0"!=mxUtils.getValue(b.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){l=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<l.length&&"\n"==l.charAt(l.length-1)&&(l=l.substring(0,l.length-1));l=this.graph.sanitizeHtml(d?l.replace(/\n/g,"<br/>"):l,!0);this.textarea.className="mxCellEditor geContentEditable";var g=mxUtils.getValue(b.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),d=mxUtils.getValue(b.style,mxConstants.STYLE_FONTFAMILY,
-mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),k=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,f=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,m=[];(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&m.push("underline");(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,
-0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&m.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(g*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(g)+"px";this.textarea.style.textDecoration=m.join(" ");this.textarea.style.fontWeight=k?"bold":"normal";this.textarea.style.fontStyle=f?"italic":"";this.textarea.style.fontFamily=d;this.textarea.style.textAlign=e;this.textarea.style.padding=
-"0px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML=l,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.innerHTML="");var l=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(l=mxUtils.replaceTrailingNewlines(l,"<div><br></div>"));l=this.graph.sanitizeHtml(d?
-l.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):l,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var g=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(g*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(g)+"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!=l&&(this.textarea.innerHTML=l);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()}};var D=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(b,d){if(null!=this.textarea)if(b=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=
-b){var c=b.view.scale;this.bounds=mxRectangle.fromRectangle(b);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var g=null!=b.text?b.text.margin:null;null==g&&(g=mxUtils.getAlignmentAsPoint(mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(b.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=g.x*this.bounds.width;this.bounds.y+=g.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-
-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+
-"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",D.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(b,d){if("0"==mxUtils.getValue(b.style,"html",
-"0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(b.cell,d);"1"==mxUtils.getValue(b.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d=
-"1"==mxUtils.getValue(b.style,"nl2Br","1")?d.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var E=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(b){this.codeViewMode&&this.toggleViewMode();E.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(ha){}};var H=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(b,d){this.graph.getModel().beginUpdate();
-try{H.apply(this,arguments),""==d&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)&&this.graph.isTransparentState(b)&&this.graph.removeCells([b.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=
-mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getBorderColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,
-mxConstants.STYLE_STROKECOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getMinimumSize=function(b){var d=this.graph.getView().scale;return new mxRectangle(0,0,null==b.text?30:b.text.size*d+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(b,d){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(d.getEvent)};mxGraphView.prototype.formatUnitText=function(b){return b?
-c(b,this.unit):b};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var g=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+this.currentDx)/e-g.x);g=this.roundLength((this.bounds.y+this.currentDy)/e-g.y);e=this.graph.view.unit;this.hint.innerHTML=c(d,e)+", "+c(g,e);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 N=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(b,d){N.apply(this,arguments);var c=this.graph.getCellStyle(b);if(null==c.childLayout){var g=this.graph.model.getParent(b),e=null!=g?this.graph.getCellGeometry(g):null;
-if(null!=e&&(c=this.graph.getCellStyle(g),"stackLayout"==c.childLayout)){var k=parseFloat(mxUtils.getValue(c,"stackBorder",mxStackLayout.prototype.border)),c="1"==mxUtils.getValue(c,"horizontalStack","1"),f=this.graph.getActualStartSize(g),e=e.clone();c?e.height=d.height+f.y+f.height+2*k:e.width=d.width+f.x+f.width+2*k;this.graph.model.setGeometry(g,e)}}};var A=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){c.get(b)||
-(c.put(b,!0),e.push(b))}for(var d=A.apply(this,arguments),c=new mxDictionary,g=this.graph.model,e=[],k=0;k<d.length;k++){var f=d[k];this.graph.isTableCell(f)?b(g.getParent(g.getParent(f))):this.graph.isTableRow(f)&&b(g.getParent(f));b(f)}return e};var G=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=G.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var I=mxEdgeHandler.prototype.createParentHighlightShape;
-mxEdgeHandler.prototype.createParentHighlightShape=function(b){var d=I.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var b=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+b.x/2,this.bounds.y+this.rotationHandleVSpacing-b.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(b,d){return this.graph.isRecursiveVertexResize(b)&&
-!mxEvent.isControlDown(d.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(b,d){return!(!this.graph.isSwimlane(b.cell)&&0<this.graph.model.getChildCount(b.cell)&&!this.graph.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null))&&mxEvent.isControlDown(d.getEvent())||mxEvent.isMetaDown(d.getEvent())};var L=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return L.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 M=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return M.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&
-!this.graph.isTableRow(this.state.cell)};var K=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(b){return b.tableHandle||K.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var O=mxVertexHandler.prototype.getSelectionBorderBounds;
-mxVertexHandler.prototype.getSelectionBorderBounds=function(){return O.apply(this,arguments).grow(-this.getSelectionBorderInset())};var U=null,X=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==U&&(U=mxCellRenderer.defaultShapes.tableLine);var b=X.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var d=function(b,d,c){for(var g=[],e=0;e<b.length;e++){var f=b[e];g.push(null==f?null:new mxPoint((l+f.x+d)*k,(p+f.y+c)*k))}return g},
-c=this,g=this.graph,e=g.model,k=g.view.scale,f=this.state,m=this.selectionBorder,l=this.state.origin.x+g.view.translate.x,p=this.state.origin.y+g.view.translate.y;null==b&&(b=[]);var x=g.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<x.length){for(var v=e.getChildCells(x[0].cell,!0),n=g.getTableLines(this.state.cell,!1,!0),u=g.getTableLines(this.state.cell,!0,!1),e=0;e<x.length;e++)mxUtils.bind(this,function(e){var l=x[e],p=e<x.length-1?x[e+1]:null,p=null!=p?g.getCellGeometry(p.cell):
-null,v=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=u[e]?new U(u[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);p.isDashed=m.isDashed;p.svgStrokeTolerance++;l=new mxHandle(l,"row-resize",null,p);l.tableHandle=!0;var n=0;l.shape.node.parentNode.insertBefore(l.shape.node,l.shape.node.parentNode.firstChild);l.redraw=function(){if(null!=this.shape){this.shape.stroke=0==n?mxConstants.NONE:m.stroke;if(this.shape.constructor==U)this.shape.line=d(u[e],0,n),this.shape.updateBoundsFromLine();
-else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+n*k;this.shape.bounds.x=f.x+(e==x.length-1?0:b.x*k);this.shape.bounds.width=f.width-(e==x.length-1?0:b.width+b.x+k)}this.shape.redraw()}};var t=!1;l.setPosition=function(b,d,c){n=Math.max(Graph.minTableRowHeight-b.height,d.y-b.y-b.height);t=mxEvent.isShiftDown(c.getEvent());null!=v&&t&&(n=Math.min(n,v.height-Graph.minTableRowHeight))};l.execute=function(b){if(0!=n)g.setTableRowHeight(this.state.cell,
-n,!t);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}n=0};l.reset=function(){n=0};b.push(l)})(e);for(e=0;e<v.length;e++)mxUtils.bind(this,function(e){var l=g.view.getState(v[e]),p=g.getCellGeometry(v[e]),x=null!=p.alternateBounds?p.alternateBounds:p;null==l&&(l=new mxCellState(g.view,v[e],g.getCellStyle(v[e])),l.x=f.x+p.x*k,l.y=f.y+p.y*k,l.width=x.width*k,l.height=x.height*k,l.updateCachedBounds());var p=e<v.length-1?
-v[e+1]:null,p=null!=p?g.getCellGeometry(p):null,u=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=n[e]?new U(n[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=m.isDashed;p.svgStrokeTolerance++;l=new mxHandle(l,"col-resize",null,p);l.tableHandle=!0;var t=0;l.shape.node.parentNode.insertBefore(l.shape.node,l.shape.node.parentNode.firstChild);l.redraw=function(){if(null!=this.shape){this.shape.stroke=0==t?mxConstants.NONE:m.stroke;if(this.shape.constructor==
-U)this.shape.line=d(n[e],t,0),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(x.width+t)*k;this.shape.bounds.y=f.y+(e==v.length-1?0:b.y*k);this.shape.bounds.height=f.height-(e==v.length-1?0:(b.height+b.y)*k)}this.shape.redraw()}};var y=!1;l.setPosition=function(b,d,c){t=Math.max(Graph.minTableColumnWidth-x.width,d.x-b.x-x.width);y=mxEvent.isShiftDown(c.getEvent());null==u||y||(t=Math.min(t,u.width-Graph.minTableColumnWidth))};
-l.execute=function(b){if(0!=t)g.setTableColumnWidth(this.state.cell,t,y);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}t=0};l.positionChanged=function(){};l.reset=function(){t=0};b.push(l)})(e)}}return null!=b?b.reverse():null};var ma=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){ma.apply(this,arguments);if(null!=this.moveHandles)for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].style.visibility=
-b?"":"hidden";if(null!=this.cornerHandles)for(d=0;d<this.cornerHandles.length;d++)this.cornerHandles[d].node.style.visibility=b?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var b=this.graph.model;if(null!=this.moveHandles){for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].parentNode.removeChild(this.moveHandles[d]);this.moveHandles=null}this.moveHandles=[];for(d=0;d<b.getChildCount(this.state.cell);d++)mxUtils.bind(this,function(d){if(null!=d&&b.isVertex(d.cell)){var c=
-mxUtils.createImage(Editor.rowMoveImage);c.style.position="absolute";c.style.cursor="pointer";c.style.width="7px";c.style.height="4px";c.style.padding="4px 2px 4px 2px";c.rowState=d;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(b){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(b)&&this.graph.isCellSelected(d.cell)||this.graph.selectCellForEvent(d.cell,b);mxEvent.isPopupTrigger(b)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),
-mxEvent.getClientY(b),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0);mxEvent.consume(b)}),null,mxUtils.bind(this,function(b){mxEvent.isPopupTrigger(b)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(b),mxEvent.getClientY(b),d.cell,b),mxEvent.consume(b))}));this.moveHandles.push(c);this.graph.container.appendChild(c)}})(this.graph.view.getState(b.getChildAt(this.state.cell,d)))};mxVertexHandler.prototype.refresh=
-function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ba=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,0),d=this.tolerance,c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&mxStencilRegistry.getStencil(c);c=this.graph.isTable(this.state.cell)||
-this.graph.cellEditor.getEditingCell()==this.state.cell;if(!c&&null!=this.customHandles)for(var g=0;g<this.customHandles.length;g++)if(null!=this.customHandles[g].shape&&null!=this.customHandles[g].shape.bounds){var e=this.customHandles[g].shape.bounds,k=e.getCenterX(),f=e.getCenterY();if(Math.abs(this.state.x-k)<e.width/2||Math.abs(this.state.y-f)<e.height/2||Math.abs(this.state.x+this.state.width-k)<e.width/2||Math.abs(this.state.y+this.state.height-f)<e.height/2){c=!0;break}}c&&null!=this.sizers&&
-0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=ba.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){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{d=this.state.view.scale;var g=this.state.view.unit;
-this.hint.innerHTML=c(this.roundLength(this.bounds.width/d),g)+" x "+c(this.roundLength(this.bounds.height/d),g)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=d.y+d.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 S=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(b,d){S.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 x=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(b,d){x.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&
-(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,g){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,k=this.graph.view.scale,f=this.roundLength(g.x/k-e.x),e=this.roundLength(g.y/k-e.y),k=this.graph.view.unit;this.hint.innerHTML=c(f,k)+", "+c(e,k);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?
-(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),g.y)+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};Graph.prototype.expandedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="50%" y1="0%" x2="50%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 2 4.5 L 7 4.5 z" stroke="#000"/>');
-Graph.prototype.collapsedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 4.5 2 L 4.5 7 M 2 4.5 L 7 4.5 z" stroke="#000"/>');mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=
-Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.endMainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.secondaryHandle=Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>');HoverIcons.prototype.fixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');
+d.rangeCount){var c=document.createRange();c.selectNode(b);d.removeAllRanges();d.addRange(c)}}else(d=document.selection)&&"Control"!=d.type&&(b=d.createRange(),b.collapse(!0),c=d.createRange(),c.setEndPoint("StartToStart",b),c.select())};Graph.prototype.flipEdge=function(b,d,c){var g=this.getCellGeometry(b);if(null!=g){g=g.clone();if(null!=g.points)for(var e=0;e<g.points.length;e++)d?g.points[e].x=c+(c-g.points[e].x):g.points[e].y=c+(c-g.points[e].y);e=function(b){null!=b&&(d?b.x=c+(c-b.x):b.y=c+
+(c-b.y))};e(g.getTerminalPoint(!0));e(g.getTerminalPoint(!1));this.model.setGeometry(b,g)}};Graph.prototype.flipChildren=function(b,d,c){this.model.beginUpdate();try{for(var g=this.model.getChildCount(b),e=0;e<g;e++){var k=this.model.getChildAt(b,e);if(this.model.isEdge(k))this.flipEdge(k,d,c);else{var f=this.getCellGeometry(k);null!=f&&(f=f.clone(),d?f.x=c+(c-f.x-f.width):f.y=c+(c-f.y-f.height),this.model.setGeometry(k,f))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(b,d){this.model.beginUpdate();
+try{b=this.model.getTopmostCells(b);for(var c=[],g=0;g<b.length;g++)if(this.model.isEdge(b[g])){var e=this.view.getState(b[g]);null!=e&&this.flipEdge(b[g],d,(d?e.getCenterX():e.getCenterY())/this.view.scale-(d?e.origin.x:e.origin.y)-(d?this.view.translate.x:this.view.translate.y))}else{var k=this.getCellGeometry(b[g]);null!=k&&this.flipChildren(b[g],d,d?k.getCenterX()-k.x:k.getCenterY()-k.y);c.push(b[g])}this.toggleCellStyles(d?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,c)}finally{this.model.endUpdate()}};
+Graph.prototype.deleteCells=function(b,d){var c=null;if(null!=b&&0<b.length){this.model.beginUpdate();try{for(var g=0;g<b.length;g++){var e=this.model.getParent(b[g]);if(this.isTable(e)){var k=this.getCellGeometry(b[g]),f=this.getCellGeometry(e);null!=k&&null!=f&&(f=f.clone(),f.height-=k.height,this.model.setGeometry(e,f))}}var l=this.selectParentAfterDelete?this.model.getParents(b):null;this.removeCells(b,d)}finally{this.model.endUpdate()}if(null!=l)for(c=[],g=0;g<l.length;g++)this.model.contains(l[g])&&
+(this.model.isVertex(l[g])||this.model.isEdge(l[g]))&&c.push(l[g])}return c};Graph.prototype.insertTableColumn=function(b,d){var c=this.getModel();c.beginUpdate();try{var g=b,e=0;if(this.isTableCell(b))var k=c.getParent(b),g=c.getParent(k),e=mxUtils.indexOf(c.getChildCells(k,!0),b);else this.isTableRow(b)?g=c.getParent(b):b=c.getChildCells(g,!0)[0],d||(e=c.getChildCells(b,!0).length-1);for(var f=c.getChildCells(g,!0),l=Graph.minTableColumnWidth,k=0;k<f.length;k++){var m=c.getChildCells(f[k],!0)[e],
+p=c.cloneCell(m,!1),x=this.getCellGeometry(p);p.value=null;p.style=mxUtils.setStyle(mxUtils.setStyle(p.style,"rowspan",null),"colspan",null);if(null!=x){null!=x.alternateBounds&&(x.width=x.alternateBounds.width,x.height=x.alternateBounds.height,x.alternateBounds=null);var l=x.width,v=this.getCellGeometry(f[k]);null!=v&&(x.height=v.height)}c.add(f[k],p,e+(d?0:1))}var n=this.getCellGeometry(g);null!=n&&(n=n.clone(),n.width+=l,c.setGeometry(g,n))}finally{c.endUpdate()}};Graph.prototype.deleteLane=function(b){var d=
+this.getModel();d.beginUpdate();try{var c=null,c="stackLayout"==this.getCurrentCellStyle(b).childLayout?b:d.getParent(b),g=d.getChildCells(c,!0);0==g.length?d.remove(c):(c==b&&(b=g[g.length-1]),d.remove(b))}finally{d.endUpdate()}};Graph.prototype.insertLane=function(b,d){var c=this.getModel();c.beginUpdate();try{var g=null,e=b;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var g=e,k=c.getChildCells(g,!0),e=k[d?0:k.length-1];else g=c.getParent(e);var f=g.getIndex(e),e=c.cloneCell(e,!1);
+e.value=null;c.add(g,e,f+(d?0:1))}finally{c.endUpdate()}};Graph.prototype.insertTableRow=function(b,d){var c=this.getModel();c.beginUpdate();try{var g=b,e=b;if(this.isTableCell(b))e=c.getParent(b),g=c.getParent(e);else if(this.isTableRow(b))g=c.getParent(b);else var k=c.getChildCells(g,!0),e=k[d?0:k.length-1];var f=c.getChildCells(e,!0),l=g.getIndex(e),e=c.cloneCell(e,!1);e.value=null;var m=this.getCellGeometry(e);if(null!=m){for(k=0;k<f.length;k++){b=c.cloneCell(f[k],!1);b.value=null;b.style=mxUtils.setStyle(mxUtils.setStyle(b.style,
+"rowspan",null),"colspan",null);var p=this.getCellGeometry(b);null!=p&&(null!=p.alternateBounds&&(p.width=p.alternateBounds.width,p.height=p.alternateBounds.height,p.alternateBounds=null),p.height=m.height);e.insert(b)}c.add(g,e,l+(d?0:1));var x=this.getCellGeometry(g);null!=x&&(x=x.clone(),x.height+=m.height,c.setGeometry(g,x))}}finally{c.endUpdate()}};Graph.prototype.deleteTableColumn=function(b){var d=this.getModel();d.beginUpdate();try{var c=b,g=b;this.isTableCell(b)&&(g=d.getParent(b));this.isTableRow(g)&&
+(c=d.getParent(g));var e=d.getChildCells(c,!0);if(0==e.length)d.remove(c);else{this.isTableRow(g)||(g=e[0]);var k=d.getChildCells(g,!0);if(1>=k.length)d.remove(c);else{var f=k.length-1;this.isTableCell(b)&&(f=mxUtils.indexOf(k,b));for(g=b=0;g<e.length;g++){var l=d.getChildCells(e[g],!0)[f];d.remove(l);var m=this.getCellGeometry(l);null!=m&&(b=Math.max(b,m.width))}var p=this.getCellGeometry(c);null!=p&&(p=p.clone(),p.width-=b,d.setGeometry(c,p))}}}finally{d.endUpdate()}};Graph.prototype.deleteTableRow=
+function(b){var d=this.getModel();d.beginUpdate();try{var c=b,g=b;this.isTableCell(b)&&(b=g=d.getParent(b));this.isTableRow(b)&&(c=d.getParent(g));var e=d.getChildCells(c,!0);if(1>=e.length)d.remove(c);else{this.isTableRow(g)||(g=e[e.length-1]);d.remove(g);b=0;var k=this.getCellGeometry(g);null!=k&&(b=k.height);var f=this.getCellGeometry(c);null!=f&&(f=f.clone(),f.height-=b,d.setGeometry(c,f))}}finally{d.endUpdate()}};Graph.prototype.insertRow=function(b,d){for(var c=b.tBodies[0],g=c.rows[0].cells,
+e=0,k=0;k<g.length;k++)var f=g[k].getAttribute("colspan"),e=e+(null!=f?parseInt(f):1);c=c.insertRow(d);for(k=0;k<e;k++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(b,d){b.tBodies[0].deleteRow(d)};Graph.prototype.insertColumn=function(b,d){var c=b.tHead;if(null!=c)for(var g=0;g<c.rows.length;g++){var e=document.createElement("th");c.rows[g].appendChild(e);mxUtils.br(e)}c=b.tBodies[0];for(g=0;g<c.rows.length;g++)e=c.rows[g].insertCell(d),mxUtils.br(e);return c.rows[0].cells[0<=
+d?d:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(b,d){if(0<=d)for(var c=b.tBodies[0].rows,g=0;g<c.length;g++)c[g].cells.length>d&&c[g].deleteCell(d)};Graph.prototype.pasteHtmlAtCaret=function(b){var d;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){d=d.getRangeAt(0);d.deleteContents();var c=document.createElement("div");c.innerHTML=b;b=document.createDocumentFragment();for(var g;g=c.firstChild;)lastNode=b.appendChild(g);d.insertNode(b)}}else(d=document.selection)&&
+"Control"!=d.type&&d.createRange().pasteHTML(b)};Graph.prototype.createLinkForHint=function(b,d){function c(b,d){b.length>d&&(b=b.substring(0,Math.round(d/2))+"..."+b.substring(b.length-Math.round(d/4)));return b}b=null!=b?b:"javascript:void(0);";if(null==d||0==d.length)d=this.isCustomLink(b)?this.getLinkTitle(b):b;var g=document.createElement("a");g.setAttribute("rel",this.linkRelation);g.setAttribute("href",this.getAbsoluteUrl(b));g.setAttribute("title",c(this.isCustomLink(b)?this.getLinkTitle(b):
+b,80));null!=this.linkTarget&&g.setAttribute("target",this.linkTarget);mxUtils.write(g,c(d,40));this.isCustomLink(b)&&mxEvent.addListener(g,"click",mxUtils.bind(this,function(d){this.customLinkClicked(b);mxEvent.consume(d)}));return g};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(b,d){this.popupMenuHandler.hideMenu()});var b=this.updateMouseEvent;this.updateMouseEvent=
+function(d){d=b.apply(this,arguments);if(mxEvent.isTouchEvent(d.getEvent())&&null==d.getState()){var c=this.getCellAt(d.graphX,d.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,d.graphX,d.graphY)||(d.state=this.view.getState(c),null!=d.state&&null!=d.state.shape&&(this.container.style.cursor=d.state.shape.node.style.cursor))}null==d.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return d};var d=!1,c=!1,g=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(b,
+k,f){b==mxEvent.MOUSE_DOWN&&(k=this.updateMouseEvent(k),d=this.isCellSelected(k.getCell()),c=this.isSelectionEmpty(),g=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(b,e){var k=mxEvent.isMouseEvent(e.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!g&&!k&&(c&&null==e.getCell()&&this.isSelectionEmpty()||
+d&&this.isCellSelected(e.getCell())));k=!d||k?null:mxUtils.bind(this,function(b){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var d=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(e.getX()+d.x+1,e.getY()+d.y+1,b,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[b,e,k])})};mxCellEditor.prototype.isContentEditing=function(){var b=this.graph.view.getState(this.editingCell);return null!=b&&1==b.style.html};mxCellEditor.prototype.isTableSelected=
+function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var b="";window.getSelection?b=window.getSelection():document.getSelection?b=document.getSelection():document.selection&&(b=document.selection.createRange().text);return""!=b};mxCellEditor.prototype.insertTab=function(b){var d=this.textarea.ownerDocument.defaultView.getSelection(),c=d.getRangeAt(0),g="\t";if(null!=b)for(g="";0<b;)g+=" ",b--;b=
+document.createElement("span");b.style.whiteSpace="pre";b.appendChild(document.createTextNode(g));c.insertNode(b);c.setStartAfter(b);c.setEndAfter(b);d.removeAllRanges();d.addRange(c)};mxCellEditor.prototype.alignText=function(b,d){var c=null!=d&&mxEvent.isShiftDown(d);if(c||null!=window.getSelection&&null!=window.getSelection().containsNode){var g=!0;this.graph.processElements(this.textarea,function(b){c||window.getSelection().containsNode(b,!0)?(b.removeAttribute("align"),b.style.textAlign=null):
+g=!1});g&&this.graph.cellEditor.setAlign(b)}document.execCommand("justify"+b.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var b=window.getSelection();if(b.getRangeAt&&b.rangeCount){for(var d=[],c=0,g=b.rangeCount;c<g;++c)d.push(b.getRangeAt(c));return d}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(b){try{if(b)if(window.getSelection){sel=
+window.getSelection();sel.removeAllRanges();for(var d=0,c=b.length;d<c;++d)sel.addRange(b[d])}else document.selection&&b.select&&b.select()}catch(xa){}};var t=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(b){null!=b.text&&(b.text.replaceLinefeeds="0"!=mxUtils.getValue(b.style,"nl2Br","1"));t.apply(this,arguments)};var z=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(b,d){this.isKeepFocusEvent(b)||!mxEvent.isAltDown(b.getEvent())?
+z.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(b){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var y=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(b,d){b=this.graph.getStartEditingCell(b,d);y.apply(this,arguments);var c=this.graph.view.getState(b);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";
+this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(b);var c=this.graph.getModel().getParent(b),g=this.graph.getCellGeometry(b);if(this.graph.getModel().isEdge(c)&&null!=g&&g.relative||this.graph.getModel().isEdge(b))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var F=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(b){function d(b,c){c.originalNode=b;b=b.firstChild;
+for(var g=c.firstChild;null!=b&&null!=g;)d(b,g),b=b.nextSibling,g=g.nextSibling;return c}function c(b,d){if(null!=b)if(d.originalNode!=b)g(b);else for(b=b.firstChild,d=d.firstChild;null!=b;){var e=b.nextSibling;null==d?g(b):(c(b,d),d=d.nextSibling);b=e}}function g(b){for(var d=b.firstChild;null!=d;){var c=d.nextSibling;g(d);d=c}1==b.nodeType&&("BR"===b.nodeName||null!=b.firstChild)||3==b.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(b)).length?(3==b.nodeType&&mxUtils.setTextContent(b,mxUtils.getTextContent(b).replace(/\n|\r/g,
+"")),1==b.nodeType&&(b.removeAttribute("style"),b.removeAttribute("class"),b.removeAttribute("width"),b.removeAttribute("cellpadding"),b.removeAttribute("cellspacing"),b.removeAttribute("border"))):b.parentNode.removeChild(b)}F.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(b){var g=d(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]>")?c(this.textarea,g):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var b=this.graph.view.getState(this.editingCell);if(null!=b){var d=null!=b&&"0"!=mxUtils.getValue(b.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){m=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<m.length&&"\n"==m.charAt(m.length-1)&&(m=m.substring(0,m.length-1));m=this.graph.sanitizeHtml(d?
+m.replace(/\n/g,"<br/>"):m,!0);this.textarea.className="mxCellEditor geContentEditable";var g=mxUtils.getValue(b.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),d=mxUtils.getValue(b.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),k=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,f=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&
+mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,l=[];(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&l.push("underline");(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&l.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(g*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(g)+
+"px";this.textarea.style.textDecoration=l.join(" ");this.textarea.style.fontWeight=k?"bold":"normal";this.textarea.style.fontStyle=f?"italic":"";this.textarea.style.fontFamily=d;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m,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.innerHTML="");var m=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(m=mxUtils.replaceTrailingNewlines(m,"<div><br></div>"));m=this.graph.sanitizeHtml(d?m.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):m,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var g=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(g*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;
+this.textarea.style.fontSize=Math.round(g)+"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!=m&&(this.textarea.innerHTML=m);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);
+this.switchSelectionState=c;this.resize()}};var D=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(b,d){if(null!=this.textarea)if(b=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=b){var c=b.view.scale;this.bounds=mxRectangle.fromRectangle(b);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var g=null!=b.text?b.text.margin:null;null==g&&(g=mxUtils.getAlignmentAsPoint(mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,
+mxConstants.ALIGN_CENTER),mxUtils.getValue(b.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=g.x*this.bounds.width;this.bounds.y+=g.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-
+this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+
+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",D.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(b,d){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(b.cell,d);"1"==mxUtils.getValue(b.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};mxCellEditorGetCurrentValue=
+mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d="1"==mxUtils.getValue(b.style,"nl2Br","1")?d.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var E=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(b){this.codeViewMode&&this.toggleViewMode();
+E.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(ba){}};var H=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(b,d){this.graph.getModel().beginUpdate();try{H.apply(this,arguments),""==d&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)&&this.graph.isTransparentState(b)&&this.graph.removeCells([b.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=
+function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getBorderColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BORDERCOLOR,
+null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_STROKECOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getMinimumSize=function(b){var d=this.graph.getView().scale;return new mxRectangle(0,0,null==b.text?30:b.text.size*d+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;
+mxGraphHandler.prototype.isValidDropTarget=function(b,d){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(d.getEvent)};mxGraphView.prototype.formatUnitText=function(b){return b?c(b,this.unit):b};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var g=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+
+this.currentDx)/e-g.x);g=this.roundLength((this.bounds.y+this.currentDy)/e-g.y);e=this.graph.view.unit;this.hint.innerHTML=c(d,e)+", "+c(g,e);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 N=mxStackLayout.prototype.resizeCell;
+mxStackLayout.prototype.resizeCell=function(b,d){N.apply(this,arguments);var c=this.graph.getCellStyle(b);if(null==c.childLayout){var g=this.graph.model.getParent(b),e=null!=g?this.graph.getCellGeometry(g):null;if(null!=e&&(c=this.graph.getCellStyle(g),"stackLayout"==c.childLayout)){var k=parseFloat(mxUtils.getValue(c,"stackBorder",mxStackLayout.prototype.border)),c="1"==mxUtils.getValue(c,"horizontalStack","1"),f=this.graph.getActualStartSize(g),e=e.clone();c?e.height=d.height+f.y+f.height+2*k:e.width=
+d.width+f.x+f.width+2*k;this.graph.model.setGeometry(g,e)}}};var A=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){c.get(b)||(c.put(b,!0),e.push(b))}for(var d=A.apply(this,arguments),c=new mxDictionary,g=this.graph.model,e=[],k=0;k<d.length;k++){var f=d[k];this.graph.isTableCell(f)?b(g.getParent(g.getParent(f))):this.graph.isTableRow(f)&&b(g.getParent(f));b(f)}return e};var G=mxVertexHandler.prototype.createParentHighlightShape;
+mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=G.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var I=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(b){var d=I.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var b=this.getHandlePadding();return new mxPoint(this.bounds.x+
+this.bounds.width-this.rotationHandleVSpacing+b.x/2,this.bounds.y+this.rotationHandleVSpacing-b.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(b,d){return this.graph.isRecursiveVertexResize(b)&&!mxEvent.isControlDown(d.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(b,d){return!(!this.graph.isSwimlane(b.cell)&&0<this.graph.model.getChildCount(b.cell)&&!this.graph.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,
+"childLayout",null))&&mxEvent.isControlDown(d.getEvent())||mxEvent.isMetaDown(d.getEvent())};var L=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return L.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 M=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return M.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var K=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(b){return b.tableHandle||K.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
+function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var O=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return O.apply(this,arguments).grow(-this.getSelectionBorderInset())};var U=null,X=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==U&&(U=mxCellRenderer.defaultShapes.tableLine);var b=X.apply(this,arguments);
+if(this.graph.isTable(this.state.cell)){var d=function(b,d,c){for(var g=[],e=0;e<b.length;e++){var f=b[e];g.push(null==f?null:new mxPoint((m+f.x+d)*k,(p+f.y+c)*k))}return g},c=this,g=this.graph,e=g.model,k=g.view.scale,f=this.state,l=this.selectionBorder,m=this.state.origin.x+g.view.translate.x,p=this.state.origin.y+g.view.translate.y;null==b&&(b=[]);var x=g.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<x.length){for(var v=e.getChildCells(x[0].cell,!0),n=g.getTableLines(this.state.cell,
+!1,!0),t=g.getTableLines(this.state.cell,!0,!1),e=0;e<x.length;e++)mxUtils.bind(this,function(e){var m=x[e],p=e<x.length-1?x[e+1]:null,p=null!=p?g.getCellGeometry(p.cell):null,v=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=t[e]?new U(t[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"row-resize",null,p);m.tableHandle=!0;var n=0;m.shape.node.parentNode.insertBefore(m.shape.node,m.shape.node.parentNode.firstChild);
+m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==n?mxConstants.NONE:l.stroke;if(this.shape.constructor==U)this.shape.line=d(t[e],0,n),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+n*k;this.shape.bounds.x=f.x+(e==x.length-1?0:b.x*k);this.shape.bounds.width=f.width-(e==x.length-1?0:b.width+b.x+k)}this.shape.redraw()}};var u=!1;m.setPosition=function(b,d,c){n=Math.max(Graph.minTableRowHeight-
+b.height,d.y-b.y-b.height);u=mxEvent.isShiftDown(c.getEvent());null!=v&&u&&(n=Math.min(n,v.height-Graph.minTableRowHeight))};m.execute=function(b){if(0!=n)g.setTableRowHeight(this.state.cell,n,!u);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}n=0};m.reset=function(){n=0};b.push(m)})(e);for(e=0;e<v.length;e++)mxUtils.bind(this,function(e){var m=g.view.getState(v[e]),p=g.getCellGeometry(v[e]),x=null!=p.alternateBounds?
+p.alternateBounds:p;null==m&&(m=new mxCellState(g.view,v[e],g.getCellStyle(v[e])),m.x=f.x+p.x*k,m.y=f.y+p.y*k,m.width=x.width*k,m.height=x.height*k,m.updateCachedBounds());var p=e<v.length-1?v[e+1]:null,p=null!=p?g.getCellGeometry(p):null,t=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=n[e]?new U(n[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"col-resize",null,p);m.tableHandle=!0;var u=0;m.shape.node.parentNode.insertBefore(m.shape.node,
+m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==u?mxConstants.NONE:l.stroke;if(this.shape.constructor==U)this.shape.line=d(n[e],u,0),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(x.width+u)*k;this.shape.bounds.y=f.y+(e==v.length-1?0:b.y*k);this.shape.bounds.height=f.height-(e==v.length-1?0:(b.height+b.y)*k)}this.shape.redraw()}};var y=!1;m.setPosition=function(b,
+d,c){u=Math.max(Graph.minTableColumnWidth-x.width,d.x-b.x-x.width);y=mxEvent.isShiftDown(c.getEvent());null==t||y||(u=Math.min(u,t.width-Graph.minTableColumnWidth))};m.execute=function(b){if(0!=u)g.setTableColumnWidth(this.state.cell,u,y);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}u=0};m.positionChanged=function(){};m.reset=function(){u=0};b.push(m)})(e)}}return null!=b?b.reverse():null};var na=mxVertexHandler.prototype.setHandlesVisible;
+mxVertexHandler.prototype.setHandlesVisible=function(b){na.apply(this,arguments);if(null!=this.moveHandles)for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].style.visibility=b?"":"hidden";if(null!=this.cornerHandles)for(d=0;d<this.cornerHandles.length;d++)this.cornerHandles[d].node.style.visibility=b?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var b=this.graph.model;if(null!=this.moveHandles){for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].parentNode.removeChild(this.moveHandles[d]);
+this.moveHandles=null}this.moveHandles=[];for(d=0;d<b.getChildCount(this.state.cell);d++)mxUtils.bind(this,function(d){if(null!=d&&b.isVertex(d.cell)){var c=mxUtils.createImage(Editor.rowMoveImage);c.style.position="absolute";c.style.cursor="pointer";c.style.width="7px";c.style.height="4px";c.style.padding="4px 2px 4px 2px";c.rowState=d;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(b){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(b)&&this.graph.isCellSelected(d.cell)||
+this.graph.selectCellForEvent(d.cell,b);mxEvent.isPopupTrigger(b)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0);mxEvent.consume(b)}),null,mxUtils.bind(this,function(b){mxEvent.isPopupTrigger(b)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(b),mxEvent.getClientY(b),d.cell,b),mxEvent.consume(b))}));
+this.moveHandles.push(c);this.graph.container.appendChild(c)}})(this.graph.view.getState(b.getChildAt(this.state.cell,d)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ca=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,
+0),d=this.tolerance,c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&mxStencilRegistry.getStencil(c);c=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!c&&null!=this.customHandles)for(var g=0;g<this.customHandles.length;g++)if(null!=this.customHandles[g].shape&&null!=this.customHandles[g].shape.bounds){var e=this.customHandles[g].shape.bounds,k=e.getCenterX(),f=e.getCenterY();if(Math.abs(this.state.x-k)<e.width/2||Math.abs(this.state.y-
+f)<e.height/2||Math.abs(this.state.x+this.state.width-k)<e.width/2||Math.abs(this.state.y+this.state.height-f)<e.height/2){c=!0;break}}c&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=ca.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){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{d=this.state.view.scale;var g=this.state.view.unit;this.hint.innerHTML=c(this.roundLength(this.bounds.width/d),g)+" x "+c(this.roundLength(this.bounds.height/d),g)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=
+d.y+d.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 S=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(b,d){S.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 x=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(b,d){x.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,g){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,k=this.graph.view.scale,f=this.roundLength(g.x/k-e.x),e=this.roundLength(g.y/k-e.y),k=this.graph.view.unit;this.hint.innerHTML=
+c(f,k)+", "+c(e,k);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),g.y)+Editor.hintOffset+
+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};Graph.prototype.expandedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="50%" y1="0%" x2="50%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 2 4.5 L 7 4.5 z" stroke="#000"/>');Graph.prototype.collapsedImage=Graph.createSvgImage(9,
+9,'<defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 4.5 2 L 4.5 7 M 2 4.5 L 7 4.5 z" stroke="#000"/>');mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+
+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.endMainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.secondaryHandle=Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>');HoverIcons.prototype.fixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');
HoverIcons.prototype.endFixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="7" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');HoverIcons.prototype.terminalHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/><circle cx="11" cy="11" r="3" stroke="#fff" fill="transparent"/>');HoverIcons.prototype.endTerminalHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="7" stroke="#fff" fill="'+
HoverIcons.prototype.arrowFill+'"/><circle cx="11" cy="11" r="3" stroke="#fff" fill="transparent"/>');HoverIcons.prototype.rotationHandle=Graph.createSvgImage(16,16,'<path stroke="'+HoverIcons.prototype.arrowFill+'" fill="'+HoverIcons.prototype.arrowFill+'" d="M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z"/>',
24,24);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="'+HoverIcons.prototype.arrowFill+'"/>');mxVertexHandler.TABLE_HANDLE_COLOR="#fca000";mxVertexHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxVertexHandler.prototype.secondaryHandleImage=HoverIcons.prototype.secondaryHandle;mxEdgeHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;
@@ -2709,15 +2714,15 @@ this.graph.view.getState(l[c]),p=this.graph.getCellGeometry(l[c]);null!=m&&null!
var g=d.getX()+c.x,c=d.getY()+c.y,e=this.first.x-g,k=this.first.y-c,f=this.graph.tolerance;if(null!=this.div||Math.abs(e)>f||Math.abs(k)>f)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(g,c),this.isSpaceEvent(d)?(g=this.x+this.width,c=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,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=g-this.width),this.y<this.first.y&&(this.y=c-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)),d.consume()}};var J=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);J.apply(this,arguments)};var W=(new Date).getTime(),ca=0,aa=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,c,g){aa.apply(this,arguments);c!=this.currentTerminalState?(W=(new Date).getTime(),ca=0):ca=(new Date).getTime()-W;this.currentTerminalState=
-c};var da=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<ca||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&da.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,c){d=null!=b&&0==b;var g=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
+this.secondDiv=null)),d.consume()}};var J=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);J.apply(this,arguments)};var W=(new Date).getTime(),da=0,aa=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,c,g){aa.apply(this,arguments);c!=this.currentTerminalState?(W=(new Date).getTime(),da=0):da=(new Date).getTime()-W;this.currentTerminalState=
+c};var ea=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<da||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&ea.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,c){d=null!=b&&0==b;var g=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
1||this.constructor==mxElbowEdgeHandler&&2==b)?this.graph.getConnectionConstraint(this.state,g,d):null;c=null!=(null!=b?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(d),b):null)?c?this.endFixedHandleImage:this.fixedHandleImage:null!=b&&null!=g?c?this.endTerminalHandleImage:this.terminalHandleImage:c?this.endHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&
--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ta=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(b,d,c){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return ta.apply(this,arguments)};var ua=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(b){if(null!=
-b&&1==b.length){var d=this.graph.getModel(),c=d.getParent(b[0]),g=this.graph.getCellGeometry(b[0]);if(d.isEdge(c)&&null!=g&&g.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return ua.apply(this,arguments)};var ga=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=ga.apply(this,arguments),d=[],c=0;c<b.length;c++)"1"!=mxUtils.getValue(b[c].style,
-"part","0")&&d.push(b[c]);return d};var na=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),c=d.getParent(b.cell),g=this.graph.getCellGeometry(b.cell);return d.isEdge(c)&&null!=g&&g.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):na.apply(this,arguments)};
+b&&1==b.length){var d=this.graph.getModel(),c=d.getParent(b[0]),g=this.graph.getCellGeometry(b[0]);if(d.isEdge(c)&&null!=g&&g.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return ua.apply(this,arguments)};var ha=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=ha.apply(this,arguments),d=[],c=0;c<b.length;c++)"1"!=mxUtils.getValue(b[c].style,
+"part","0")&&d.push(b[c]);return d};var oa=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),c=d.getParent(b.cell),g=this.graph.getCellGeometry(b.cell);return d.isEdge(c)&&null!=g&&g.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):oa.apply(this,arguments)};
var Y=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(b,d){var c=this.graph.getModel(),g=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!c.isEdge(g)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&Y.apply(this,arguments)};mxVertexHandler.prototype.rotateClick=function(){var b=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),
d=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&b==mxConstants.NONE&&d==mxConstants.NONE?(b=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,b,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};var Q=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(b,d){Q.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 ea=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(b,d){ea.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");
+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 fa=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(b,d){fa.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 T=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){T.apply(this,arguments);var b=!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 d=0;4>d;d++){var c=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);c.dialect=mxConstants.DIALECT_SVG;c.init(this.graph.view.getOverlayPane());this.cornerHandles.push(c)}}var g=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(b,d){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),
this.graph.getLinksForState(this.state));g()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(b,d){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);d=this.graph.getLinkForCell(this.state.cell);c=this.graph.getLinksForState(this.state);this.updateLinkHint(d,c);if(null!=d||null!=c&&0<c.length)b=!0;b&&this.redrawHandles()};
@@ -2726,20 +2731,20 @@ mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.
mxEvent.addListener(g,"click",mxUtils.bind(this,function(b){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(b)}));this.linkHint.appendChildGraph.createRemoveIcon(mxResources.get("removeIt",[mxResources.get("link")]),mxUtils.bind(this,function(b){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(b)}))}if(null!=c)for(g=0;g<c.length;g++){var e=document.createElement("div");e.style.marginTop=null!=d||0<g?"6px":"0px";e.appendChild(this.graph.createLinkForHint(c[g].getAttribute("href"),
mxUtils.getTextContent(c[g])));this.linkHint.appendChild(e)}}}catch(sa){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var la=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){la.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var b=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(d,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=
-this.graph.getLinkForCell(this.state.cell),c=this.graph.getLinksForState(this.state);if(null!=d||null!=c&&0<c.length)this.updateLinkHint(d,c),this.redrawHandles()};var oa=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){oa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var ra=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=
+this.graph.getLinkForCell(this.state.cell),c=this.graph.getLinksForState(this.state);if(null!=d||null!=c&&0<c.length)this.updateLinkHint(d,c),this.redrawHandles()};var pa=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){pa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var ra=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=
0;b<this.moveHandles.length;b++)this.moveHandles[b].style.left=this.moveHandles[b].rowState.x+this.moveHandles[b].rowState.width-5+"px",this.moveHandles[b].style.top=this.moveHandles[b].rowState.y+this.moveHandles[b].rowState.height/2-6+"px";if(null!=this.cornerHandles){var b=this.getSelectionBorderInset(),d=this.cornerHandles,c=d[0].bounds.height/2;d[0].bounds.x=this.state.x-d[0].bounds.width/2+b;d[0].bounds.y=this.state.y-c+b;d[0].redraw();d[1].bounds.x=d[0].bounds.x+this.state.width-2*b;d[1].bounds.y=
d[0].bounds.y;d[1].redraw();d[2].bounds.x=d[0].bounds.x;d[2].bounds.y=this.state.y+this.state.height-2*b;d[2].redraw();d[3].bounds.x=d[1].bounds.x;d[3].bounds.y=d[2].bounds.y;d[3].redraw();for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.display=1==this.graph.getSelectionCount()?"":"none"}null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&this.index!=mxEvent.ROTATION_HANDLE?
"none":"");ra.apply(this);null!=this.state&&null!=this.linkHint&&(b=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),c=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]||"0",b),b=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null,null==c&&(c=this.state),c=c.y+c.height,null!=
d&&(c=Math.max(c,d.y+d.height)),this.linkHint.style.left=Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(c+this.verticalOffset/2+Editor.hintOffset)+"px")};var R=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){R.apply(this,arguments);if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)null!=this.moveHandles[b]&&null!=this.moveHandles[b].parentNode&&this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);
this.moveHandles=null}if(null!=this.cornerHandles){for(b=0;b<this.cornerHandles.length;b++)null!=this.cornerHandles[b]&&null!=this.cornerHandles[b].node&&null!=this.cornerHandles[b].node.parentNode&&this.cornerHandles[b].node.parentNode.removeChild(this.cornerHandles[b].node);this.cornerHandles=null}null!=this.linkHint&&(null!=this.linkHint.parentNode&&this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),
this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var qa=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(qa.apply(this),null!=this.state&&null!=this.linkHint)){var b=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(b=new mxRectangle(b.x,b.y,b.width,b.height),b.add(this.state.text.bounds));
-this.linkHint.style.left=Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b.y+b.height+Editor.hintOffset)+"px"}};var ia=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){ia.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var fa=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){fa.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),
+this.linkHint.style.left=Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b.y+b.height+Editor.hintOffset)+"px"}};var ia=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){ia.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var ga=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ga.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),
this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(b,d,c){mxShape.call(this);this.line=b;this.stroke=d;this.strokewidth=null!=c?c:1;this.updateBoundsFromLine()}function c(){mxSwimlane.call(this)}function e(){mxSwimlane.call(this)}function f(){mxCylinder.call(this)}function n(){mxCylinder.call(this)}function l(){mxActor.call(this)}function q(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function p(){mxShape.call(this)}function m(){mxShape.call(this)}
function v(b,d,c,g){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=c;this.strokewidth=null!=g?g:1}function u(){mxActor.call(this)}function t(){mxCylinder.call(this)}function z(){mxCylinder.call(this)}function y(){mxActor.call(this)}function F(){mxActor.call(this)}function D(){mxActor.call(this)}function E(){mxActor.call(this)}function H(){mxActor.call(this)}function N(){mxActor.call(this)}function A(){mxActor.call(this)}function G(b,d){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
this.defaultVariation=d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,G.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,G.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,G.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,G.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,G.prototype.curveTo);
-this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,G.prototype.arcTo)}function I(){mxRectangleShape.call(this)}function L(){mxRectangleShape.call(this)}function M(){mxActor.call(this)}function K(){mxActor.call(this)}function O(){mxActor.call(this)}function U(){mxRectangleShape.call(this)}function X(){mxRectangleShape.call(this)}function ma(){mxCylinder.call(this)}function ba(){mxShape.call(this)}function S(){mxShape.call(this)}function x(){mxEllipse.call(this)}function C(){mxShape.call(this)}
-function J(){mxShape.call(this)}function W(){mxRectangleShape.call(this)}function ca(){mxShape.call(this)}function aa(){mxShape.call(this)}function da(){mxShape.call(this)}function ta(){mxShape.call(this)}function ua(){mxShape.call(this)}function ga(){mxCylinder.call(this)}function na(){mxCylinder.call(this)}function Y(){mxRectangleShape.call(this)}function Q(){mxDoubleEllipse.call(this)}function ea(){mxDoubleEllipse.call(this)}function T(){mxArrowConnector.call(this);this.spacing=0}function la(){mxArrowConnector.call(this);
-this.spacing=0}function oa(){mxActor.call(this)}function ra(){mxRectangleShape.call(this)}function R(){mxActor.call(this)}function qa(){mxActor.call(this)}function ia(){mxActor.call(this)}function fa(){mxActor.call(this)}function ha(){mxActor.call(this)}function pa(){mxActor.call(this)}function Aa(){mxActor.call(this)}function xa(){mxActor.call(this)}function sa(){mxActor.call(this)}function ja(){mxActor.call(this)}function Z(){mxEllipse.call(this)}function P(){mxEllipse.call(this)}function Ga(){mxEllipse.call(this)}
+this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,G.prototype.arcTo)}function I(){mxRectangleShape.call(this)}function L(){mxRectangleShape.call(this)}function M(){mxActor.call(this)}function K(){mxActor.call(this)}function O(){mxActor.call(this)}function U(){mxRectangleShape.call(this)}function X(){mxRectangleShape.call(this)}function na(){mxCylinder.call(this)}function ca(){mxShape.call(this)}function S(){mxShape.call(this)}function x(){mxEllipse.call(this)}function C(){mxShape.call(this)}
+function J(){mxShape.call(this)}function W(){mxRectangleShape.call(this)}function da(){mxShape.call(this)}function aa(){mxShape.call(this)}function ea(){mxShape.call(this)}function ta(){mxShape.call(this)}function ua(){mxShape.call(this)}function ha(){mxCylinder.call(this)}function oa(){mxCylinder.call(this)}function Y(){mxRectangleShape.call(this)}function Q(){mxDoubleEllipse.call(this)}function fa(){mxDoubleEllipse.call(this)}function T(){mxArrowConnector.call(this);this.spacing=0}function la(){mxArrowConnector.call(this);
+this.spacing=0}function pa(){mxActor.call(this)}function ra(){mxRectangleShape.call(this)}function R(){mxActor.call(this)}function qa(){mxActor.call(this)}function ia(){mxActor.call(this)}function ga(){mxActor.call(this)}function ba(){mxActor.call(this)}function ma(){mxActor.call(this)}function Aa(){mxActor.call(this)}function xa(){mxActor.call(this)}function sa(){mxActor.call(this)}function ja(){mxActor.call(this)}function Z(){mxEllipse.call(this)}function P(){mxEllipse.call(this)}function Ga(){mxEllipse.call(this)}
function Da(){mxRhombus.call(this)}function ya(){mxEllipse.call(this)}function Ea(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}function Ha(){mxEllipse.call(this)}function Ca(){mxActor.call(this)}function za(){mxActor.call(this)}function Ba(){mxActor.call(this)}function V(b,d,c,g){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=c;this.strokewidth=null!=g?g:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Fa(){mxConnector.call(this)}
function Ua(b,d,c,g,e,k,f,l,m,p){f+=m;var B=g.clone();g.x-=e*(2*f+m);g.y-=k*(2*f+m);e*=f+m;k*=f+m;return function(){b.ellipse(B.x-e-f,B.y-k-f,2*f,2*f);p?b.fillAndStroke():b.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var b=null;if(null!=this.line)for(var d=0;d<this.line.length;d++){var c=this.line[d];null!=c&&(c=new mxRectangle(c.x,c.y,this.strokewidth,this.strokewidth),null==b?b=c:b.add(c))}this.bounds=null!=b?b:new mxRectangle};b.prototype.paintVertexShape=function(b,
d,c,g,e){this.paintTableLine(b,this.line,0,0)};b.prototype.paintTableLine=function(b,d,c,g){if(null!=d){var B=null;b.begin();for(var e=0;e<d.length;e++){var k=d[e];null!=k&&(null==B?b.moveTo(k.x+c,k.y+g):null!=B&&b.lineTo(k.x+c,k.y+g));B=k}b.end();b.stroke()}};b.prototype.intersectsRectangle=function(b){var d=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var c=null,g=0;g<this.line.length&&!d;g++){var B=this.line[g];null!=B&&null!=c&&(d=mxUtils.rectangleIntersectsSegment(b,
@@ -2762,7 +2767,7 @@ k&&(b.begin(),b.moveTo(g,B),b.arcTo(.5*g,B,0,0,1,.5*g,2*B),b.arcTo(.5*g,B,0,0,1,
t.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var B=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),k=mxUtils.getValue(this.style,"rounded",!1),f=mxUtils.getValue(this.style,"absoluteArcSize",!1),l=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));f||(l*=Math.min(g,e));
l=Math.min(l,.5*g,.5*(e-c));d=Math.max(d,l);d=Math.min(g-l,d);k||(l=0);b.begin();"left"==B?(b.moveTo(Math.max(l,0),c),b.lineTo(Math.max(l,0),0),b.lineTo(d,0),b.lineTo(d,c)):(b.moveTo(g-d,c),b.lineTo(g-d,0),b.lineTo(g-Math.max(l,0),0),b.lineTo(g-Math.max(l,0),c));k?(b.moveTo(0,l+c),b.arcTo(l,l,0,0,1,l,c),b.lineTo(g-l,c),b.arcTo(l,l,0,0,1,g,l+c),b.lineTo(g,e-l),b.arcTo(l,l,0,0,1,g-l,e),b.lineTo(l,e),b.arcTo(l,l,0,0,1,0,e-l)):(b.moveTo(0,c),b.lineTo(g,c),b.lineTo(g,e),b.lineTo(0,e));b.close();b.fillAndStroke();
b.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(b.begin(),b.moveTo(g-30,c+20),b.lineTo(g-20,c+10),b.lineTo(g-10,c+20),b.close(),b.stroke())};mxCellRenderer.registerShape("folder",t);t.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var c=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,
-"tabHeight",15)*this.scale,g=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),B=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(B*=Math.min(b.width,b.height));B=Math.min(B,.5*b.width,.5*(b.height-d));g||(B=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(B,0,Math.min(b.width,b.width-c),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,b.width-c),0,B,Math.min(b.height,b.height-
+"tabHeight",15)*this.scale,g=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(k*=Math.min(b.width,b.height));k=Math.min(k,.5*b.width,.5*(b.height-d));g||(k=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(k,0,Math.min(b.width,b.width-c),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,b.width-c),0,k,Math.min(b.height,b.height-
d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};mxUtils.extend(z,mxCylinder);z.prototype.arcSize=.1;z.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);var k=mxUtils.getValue(this.style,"rounded",!1),B=mxUtils.getValue(this.style,"absoluteArcSize",!1);d=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));c=mxUtils.getValue(this.style,"umlStateConnection",null);B||(d*=Math.min(g,e));d=Math.min(d,.5*g,.5*e);k||(d=0);k=0;null!=c&&(k=10);b.begin();b.moveTo(k,
d);b.arcTo(d,d,0,0,1,k+d,0);b.lineTo(g-d,0);b.arcTo(d,d,0,0,1,g,d);b.lineTo(g,e-d);b.arcTo(d,d,0,0,1,g-d,e);b.lineTo(k+d,e);b.arcTo(d,d,0,0,1,k,e-d);b.close();b.fillAndStroke();b.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(b.roundrect(g-40,e-20,10,10,3,3),b.stroke(),b.roundrect(g-20,e-20,10,10,3,3),b.stroke(),b.begin(),b.moveTo(g-30,e-15),b.lineTo(g-20,e-15),b.stroke());"connPointRefEntry"==c?(b.ellipse(0,.5*e-10,20,20),b.fillAndStroke()):"connPointRefExit"==
c&&(b.ellipse(0,.5*e-10,20,20),b.fillAndStroke(),b.begin(),b.moveTo(5,.5*e-5),b.lineTo(15,.5*e+5),b.moveTo(15,.5*e-5),b.lineTo(5,.5*e+5),b.stroke())};z.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",z);mxUtils.extend(y,mxActor);y.prototype.size=30;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath=
@@ -2797,15 +2802,15 @@ U);var $a=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBound
0);d+=k;c+=k;g-=2*k;e-=2*k;0<g&&0<e&&(b.setShadow(!1),$a.apply(this,[b,d,c,g,e]))}};mxUtils.extend(X,mxRectangleShape);X.prototype.isHtmlAllowed=function(){return!1};X.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};X.prototype.paintForeground=function(b,d,c,g,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var k=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=k;c+=k;g-=2*k;e-=2*k;0<g&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}b.setDashed(!1);var k=0,B;do{B=mxCellRenderer.defaultShapes[this.style["symbol"+k]];if(null!=B){var f=this.style["symbol"+k+"Align"],l=this.style["symbol"+k+"VerticalAlign"],m=this.style["symbol"+k+"Width"],p=this.style["symbol"+k+"Height"],x=this.style["symbol"+k+"Spacing"]||0,v=this.style["symbol"+k+"VSpacing"]||x,wa=
this.style["symbol"+k+"ArcSpacing"];null!=wa&&(wa*=this.getArcSize(g+this.strokewidth,e+this.strokewidth),x+=wa,v+=wa);var wa=d,Ja=c,wa=f==mxConstants.ALIGN_CENTER?wa+(g-m)/2:f==mxConstants.ALIGN_RIGHT?wa+(g-m-x):wa+x,Ja=l==mxConstants.ALIGN_MIDDLE?Ja+(e-p)/2:l==mxConstants.ALIGN_BOTTOM?Ja+(e-p-v):Ja+v;b.save();f=new B;f.style=this.style;B.prototype.paintVertexShape.call(f,b,wa,Ja,m,p);b.restore()}k++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
-X);mxUtils.extend(ma,mxCylinder);ma.prototype.redrawPath=function(b,d,c,g,e,k){k?(b.moveTo(0,0),b.lineTo(g/2,e/2),b.lineTo(g,0),b.end()):(b.moveTo(0,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",ma);mxUtils.extend(ba,mxShape);ba.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.ellipse(g/4,0,g/2,e/4);b.fillAndStroke();b.begin();b.moveTo(g/2,e/4);b.lineTo(g/2,2*e/3);b.moveTo(g/2,e/3);b.lineTo(0,e/3);b.moveTo(g/2,e/3);b.lineTo(g,e/3);
-b.moveTo(g/2,2*e/3);b.lineTo(0,e);b.moveTo(g/2,2*e/3);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",ba);mxUtils.extend(S,mxShape);S.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};S.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(g/6,e/2);b.end();b.stroke();b.ellipse(g/6,0,5*g/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+X);mxUtils.extend(na,mxCylinder);na.prototype.redrawPath=function(b,d,c,g,e,k){k?(b.moveTo(0,0),b.lineTo(g/2,e/2),b.lineTo(g,0),b.end()):(b.moveTo(0,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",na);mxUtils.extend(ca,mxShape);ca.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.ellipse(g/4,0,g/2,e/4);b.fillAndStroke();b.begin();b.moveTo(g/2,e/4);b.lineTo(g/2,2*e/3);b.moveTo(g/2,e/3);b.lineTo(0,e/3);b.moveTo(g/2,e/3);b.lineTo(g,e/3);
+b.moveTo(g/2,2*e/3);b.lineTo(0,e);b.moveTo(g/2,2*e/3);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",ca);mxUtils.extend(S,mxShape);S.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};S.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(g/6,e/2);b.end();b.stroke();b.ellipse(g/6,0,5*g/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
S);mxUtils.extend(x,mxEllipse);x.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+g/8,c+e);b.lineTo(d+7*g/8,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("umlEntity",x);mxUtils.extend(C,mxShape);C.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(g,0);b.lineTo(0,e);b.moveTo(0,0);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlDestroy",C);mxUtils.extend(J,mxShape);
J.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};J.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,0);b.end();b.stroke();b.ellipse(0,e/8,g,7*e/8);b.fillAndStroke()};J.prototype.paintForeground=function(b,d,c,g,e){b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,e/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(W,mxRectangleShape);W.prototype.size=
40;W.prototype.isHtmlAllowed=function(){return!1};W.prototype.getLabelBounds=function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,d)};W.prototype.paintBackground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,b,d,
c,g,k):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=W&&(f=new f,f.apply(this.state),b.save(),f.paintVertexShape(b,d,c,g,k),b.restore()));k<e&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(d+g/2,c+k),b.lineTo(d+g/2,c+e),b.end(),b.stroke())};W.prototype.paintForeground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,d,c,g,Math.min(e,
-k))};mxCellRenderer.registerShape("umlLifeline",W);mxUtils.extend(ca,mxShape);ca.prototype.width=60;ca.prototype.height=30;ca.prototype.corner=10;ca.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};ca.prototype.paintBackground=function(b,d,c,g,e){var k=this.corner,f=Math.min(g,Math.max(k,parseFloat(mxUtils.getValue(this.style,
+k))};mxCellRenderer.registerShape("umlLifeline",W);mxUtils.extend(da,mxShape);da.prototype.width=60;da.prototype.height=30;da.prototype.corner=10;da.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};da.prototype.paintBackground=function(b,d,c,g,e){var k=this.corner,f=Math.min(g,Math.max(k,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),B=Math.min(e,Math.max(1.5*k,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),l=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);l!=mxConstants.NONE&&(b.setFillColor(l),b.rect(d,c,g,e),b.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(b,d,c,g,e),b.setGradient(this.fill,this.gradient,d,c,g,e,this.gradientDirection)):b.setFillColor(this.fill);b.begin();
-b.moveTo(d,c);b.lineTo(d+f,c);b.lineTo(d+f,c+Math.max(0,B-1.5*k));b.lineTo(d+Math.max(0,f-k),c+B);b.lineTo(d,c+B);b.close();b.fillAndStroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+g,c);b.lineTo(d+g,c+e);b.lineTo(d,c+e);b.lineTo(d,c+B);b.stroke()};mxCellRenderer.registerShape("umlFrame",ca);mxPerimeter.CenterPerimeter=function(b,d,c,g){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
+b.moveTo(d,c);b.lineTo(d+f,c);b.lineTo(d+f,c+Math.max(0,B-1.5*k));b.lineTo(d+Math.max(0,f-k),c+B);b.lineTo(d,c+B);b.close();b.fillAndStroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+g,c);b.lineTo(d+g,c+e);b.lineTo(d,c+e);b.lineTo(d,c+B);b.stroke()};mxCellRenderer.registerShape("umlFrame",da);mxPerimeter.CenterPerimeter=function(b,d,c,g){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
c,g){g=W.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;c.x<b.getCenterX()&&(d=-1*(d+1));return new mxPoint(b.getCenterX()+d,Math.min(b.y+b.height,Math.max(b.y+g,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,d,c,g){g=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(b,d,c,g){g=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(g+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return c.x<b.getCenterX()&&(g=-1*(g+1)),new mxPoint(b.getCenterX()+g,Math.min(b.y+b.height,Math.max(b.y,c.y)));c.y<b.getCenterY()&&(g=-1*(g+1));return new mxPoint(Math.min(b.x+
b.width,Math.max(b.x,c.x)),b.getCenterY()+g)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(b,d,c,g){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(b,new mxRectangle(0,0,0,Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(d.style,"size",M.prototype.size))*d.view.scale))),d.style),d,c,g)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(b,
@@ -2818,25 +2823,25 @@ d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAS
l,B+m),new mxPoint(f+e,B+m),new mxPoint(f,b),new mxPoint(f+e,B)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),B=[new mxPoint(f,B+e),new mxPoint(p,B),new mxPoint(f+l,B+e),new mxPoint(f+l,B+m),new mxPoint(p,B+m-e),new mxPoint(f,B+m),new mxPoint(f,B+e)]):(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),B=[new mxPoint(f,B),new mxPoint(p,B+e),new mxPoint(f+l,B),new mxPoint(f+l,B+m-e),new mxPoint(p,B+m),new mxPoint(f,B+m-e),new mxPoint(f,B)]);p=new mxPoint(p,
b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(B,p,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?O.prototype.fixedSize:O.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,B=b.y,l=b.width,m=b.height,p=b.getCenterX();b=b.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),B=[new mxPoint(p,B),new mxPoint(f+l,B+e),new mxPoint(f+l,B+m-e),new mxPoint(p,B+m),new mxPoint(f,B+m-e),new mxPoint(f,B+e),new mxPoint(p,B)]):(e=e?Math.max(0,Math.min(l,k)):l*Math.max(0,Math.min(1,k)),B=[new mxPoint(f+e,B),new mxPoint(f+l-e,B),new mxPoint(f+l,b),new mxPoint(f+l-e,B+m),new mxPoint(f+e,B+m),new mxPoint(f,b),new mxPoint(f+e,B)]);p=new mxPoint(p,
-b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(B,p,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(aa,mxShape);aa.prototype.size=10;aa.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,c);b.ellipse((g-k)/2,0,k,k);b.fillAndStroke();b.begin();b.moveTo(g/2,k);b.lineTo(g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",aa);mxUtils.extend(da,
-mxShape);da.prototype.size=10;da.prototype.inset=2;da.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.begin();b.moveTo(g/2,k+f);b.lineTo(g/2,e);b.end();b.stroke();b.begin();b.moveTo((g-k)/2-f,k/2);b.quadTo((g-k)/2-f,k+f,g/2,k+f);b.quadTo((g+k)/2+f,k+f,(g+k)/2+f,k/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",da);mxUtils.extend(ta,
+b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(B,p,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(aa,mxShape);aa.prototype.size=10;aa.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,c);b.ellipse((g-k)/2,0,k,k);b.fillAndStroke();b.begin();b.moveTo(g/2,k);b.lineTo(g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",aa);mxUtils.extend(ea,
+mxShape);ea.prototype.size=10;ea.prototype.inset=2;ea.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.begin();b.moveTo(g/2,k+f);b.lineTo(g/2,e);b.end();b.stroke();b.begin();b.moveTo((g-k)/2-f,k/2);b.quadTo((g-k)/2-f,k+f,g/2,k+f);b.quadTo((g+k)/2+f,k+f,(g+k)/2+f,k/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",ea);mxUtils.extend(ta,
mxShape);ta.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",ta);mxUtils.extend(ua,mxShape);ua.prototype.inset=2;ua.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.ellipse(0,k,g-2*k,e-2*k);b.fillAndStroke();b.begin();b.moveTo(g/2,0);b.quadTo(g,0,g,e/2);b.quadTo(g,
-e,g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ua);mxUtils.extend(ga,mxCylinder);ga.prototype.jettyWidth=20;ga.prototype.jettyHeight=10;ga.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,B=Math.min(d,e-d),l=Math.min(B+2*d,e-d);k?(b.moveTo(c,B),b.lineTo(f,B),b.lineTo(f,B+d),b.lineTo(c,B+d),b.moveTo(c,
-l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(c,B),b.close());b.end()};mxCellRenderer.registerShape("module",ga);mxUtils.extend(na,mxCylinder);na.prototype.jettyWidth=32;na.prototype.jettyHeight=12;na.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
-"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,B=.3*e-d/2,l=.7*e-d/2;k?(b.moveTo(c,B),b.lineTo(f,B),b.lineTo(f,B+d),b.lineTo(c,B+d),b.moveTo(c,l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(c,B),b.close());b.end()};mxCellRenderer.registerShape("component",na);mxUtils.extend(Y,mxRectangleShape);Y.prototype.paintForeground=
+e,g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ua);mxUtils.extend(ha,mxCylinder);ha.prototype.jettyWidth=20;ha.prototype.jettyHeight=10;ha.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,B=Math.min(d,e-d),l=Math.min(B+2*d,e-d);k?(b.moveTo(c,B),b.lineTo(f,B),b.lineTo(f,B+d),b.lineTo(c,B+d),b.moveTo(c,
+l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(c,B),b.close());b.end()};mxCellRenderer.registerShape("module",ha);mxUtils.extend(oa,mxCylinder);oa.prototype.jettyWidth=32;oa.prototype.jettyHeight=12;oa.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
+"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,B=.3*e-d/2,l=.7*e-d/2;k?(b.moveTo(c,B),b.lineTo(f,B),b.lineTo(f,B+d),b.lineTo(c,B+d),b.moveTo(c,l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(c,B),b.close());b.end()};mxCellRenderer.registerShape("component",oa);mxUtils.extend(Y,mxRectangleShape);Y.prototype.paintForeground=
function(b,d,c,g,e){var k=g/2,f=e/2,B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(d+k,c),new mxPoint(d+g,c+f),new mxPoint(d+k,c+e),new mxPoint(d,c+f)],this.isRounded,B,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Y);mxUtils.extend(Q,mxDoubleEllipse);Q.prototype.outerStroke=!0;Q.prototype.paintVertexShape=function(b,d,c,g,e){var k=Math.min(4,
-Math.min(g/5,e/5));0<g&&0<e&&(b.ellipse(d+k,c+k,g-2*k,e-2*k),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,c,g,e),b.stroke())};mxCellRenderer.registerShape("endState",Q);mxUtils.extend(ea,Q);ea.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ea);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=4;T.prototype.isOpenEnded=function(){return!0};T.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
+Math.min(g/5,e/5));0<g&&0<e&&(b.ellipse(d+k,c+k,g-2*k,e-2*k),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,c,g,e),b.stroke())};mxCellRenderer.registerShape("endState",Q);mxUtils.extend(fa,Q);fa.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",fa);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=4;T.prototype.isOpenEnded=function(){return!0};T.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
this.strokewidth-1)};T.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",T);mxUtils.extend(la,mxArrowConnector);la.prototype.defaultWidth=10;la.prototype.defaultArrowWidth=20;la.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};la.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};la.prototype.getEdgeWidth=
-function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",la);mxUtils.extend(oa,mxActor);oa.prototype.size=30;oa.prototype.isRoundable=function(){return!0};oa.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(g,
-0),new mxPoint(g,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("manualInput",oa);mxUtils.extend(ra,mxRectangleShape);ra.prototype.dx=20;ra.prototype.dy=20;ra.prototype.isHtmlAllowed=function(){return!1};ra.prototype.paintForeground=function(b,d,c,g,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var k=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(g*f,e*f));f=
+function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",la);mxUtils.extend(pa,mxActor);pa.prototype.size=30;pa.prototype.isRoundable=function(){return!0};pa.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(g,
+0),new mxPoint(g,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("manualInput",pa);mxUtils.extend(ra,mxRectangleShape);ra.prototype.dx=20;ra.prototype.dy=20;ra.prototype.isHtmlAllowed=function(){return!1};ra.prototype.paintForeground=function(b,d,c,g,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var k=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(g*f,e*f));f=
Math.max(k,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));k=Math.max(k,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(d,c+k);b.lineTo(d+g,c+k);b.end();b.stroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+f,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",ra);mxUtils.extend(R,mxActor);R.prototype.dx=20;R.prototype.dy=20;R.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint(d,c),new mxPoint(d,e),new mxPoint(0,e)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("corner",R);mxUtils.extend(qa,mxActor);qa.prototype.redrawPath=function(b,d,c,
g,e){b.moveTo(0,0);b.lineTo(0,e);b.end();b.moveTo(g,0);b.lineTo(g,e);b.end();b.moveTo(0,e/2);b.lineTo(g,e/2);b.end()};mxCellRenderer.registerShape("crossbar",qa);mxUtils.extend(ia,mxActor);ia.prototype.dx=20;ia.prototype.dy=20;ia.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint((g+d)/2,c),new mxPoint((g+d)/2,e),new mxPoint((g-d)/2,e),new mxPoint((g-d)/2,c),new mxPoint(0,c)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("tee",ia);mxUtils.extend(fa,mxActor);fa.prototype.arrowWidth=.3;fa.prototype.arrowSize=.2;fa.prototype.redrawPath=function(b,d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
-this.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(0,k)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("singleArrow",fa);mxUtils.extend(ha,mxActor);ha.prototype.redrawPath=function(b,
-d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",fa.prototype.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",fa.prototype.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(d,
-k),new mxPoint(d,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",ha);mxUtils.extend(pa,mxActor);pa.prototype.size=.1;pa.prototype.fixedSize=20;pa.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(g,0);b.quadTo(g-2*d,e/2,g,e);b.lineTo(d,
-e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",pa);mxUtils.extend(Aa,mxActor);Aa.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",Aa);mxUtils.extend(xa,mxActor);xa.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.quadTo(g/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",xa);mxUtils.extend(sa,mxActor);
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint((g+d)/2,c),new mxPoint((g+d)/2,e),new mxPoint((g-d)/2,e),new mxPoint((g-d)/2,c),new mxPoint(0,c)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("tee",ia);mxUtils.extend(ga,mxActor);ga.prototype.arrowWidth=.3;ga.prototype.arrowSize=.2;ga.prototype.redrawPath=function(b,d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
+this.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(0,k)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("singleArrow",ga);mxUtils.extend(ba,mxActor);ba.prototype.redrawPath=function(b,
+d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ga.prototype.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ga.prototype.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(d,
+k),new mxPoint(d,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",ba);mxUtils.extend(ma,mxActor);ma.prototype.size=.1;ma.prototype.fixedSize=20;ma.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(g,0);b.quadTo(g-2*d,e/2,g,e);b.lineTo(d,
+e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",ma);mxUtils.extend(Aa,mxActor);Aa.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",Aa);mxUtils.extend(xa,mxActor);xa.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.quadTo(g/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",xa);mxUtils.extend(sa,mxActor);
sa.prototype.size=20;sa.prototype.isRoundable=function(){return!0};sa.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(g/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(g-d,0),new mxPoint(g,.8*d),new mxPoint(g,e),new mxPoint(0,e),new mxPoint(0,.8*d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("loopLimit",sa);mxUtils.extend(ja,
mxActor);ja.prototype.size=.375;ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(b,d,c,g,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,e-d),new mxPoint(g/2,e),new mxPoint(0,e-d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",ja);mxUtils.extend(Z,
mxEllipse);Z.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+g/2,c+e);b.lineTo(d+g,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",Z);mxUtils.extend(P,mxEllipse);P.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,c+e/2);b.lineTo(d+g,c+e/2);b.end();b.stroke();b.begin();b.moveTo(d+g/2,c);b.lineTo(d+g/2,c+e);b.end();
@@ -2855,10 +2860,10 @@ dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Ro
dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];V.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);this.strictDrawShape(b,0,0,g,e)};V.prototype.strictDrawShape=function(b,d,c,g,e,k){var f=k&&k.rectStyle?k.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),l=k&&k.absoluteCornerSize?k.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",
this.absoluteCornerSize),m=k&&k.size?k.size:Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),p=k&&k.rectOutline?k.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),x=k&&k.indent?k.indent:Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),v=k&&k.dashed?k.dashed:mxUtils.getValue(this.style,"dashed",!1),B=k&&k.dashPattern?k.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),n=k&&k.relIndent?k.relIndent:
Math.max(0,Math.min(50,x)),t=k&&k.top?k.top:mxUtils.getValue(this.style,"top",!0),u=k&&k.right?k.right:mxUtils.getValue(this.style,"right",!0),y=k&&k.bottom?k.bottom:mxUtils.getValue(this.style,"bottom",!0),C=k&&k.left?k.left:mxUtils.getValue(this.style,"left",!0),z=k&&k.topLeftStyle?k.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),J=k&&k.topRightStyle?k.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),q=k&&k.bottomRightStyle?k.bottomRightStyle:mxUtils.getValue(this.style,
-"bottomRightStyle","default"),A=k&&k.bottomLeftStyle?k.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),da=k&&k.fillColor?k.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");k&&k.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var K=k&&k.strokeWidth?k.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),W=k&&k.fillColor2?k.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),ca=k&&k.gradientColor2?k.gradientColor2:mxUtils.getValue(this.style,
+"bottomRightStyle","default"),A=k&&k.bottomLeftStyle?k.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),ea=k&&k.fillColor?k.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");k&&k.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var K=k&&k.strokeWidth?k.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),W=k&&k.fillColor2?k.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),da=k&&k.gradientColor2?k.gradientColor2:mxUtils.getValue(this.style,
"gradientColor2","none"),aa=k&&k.gradientDirection2?k.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Ja=k&&k.opacity?k.opacity:mxUtils.getValue(this.style,"opacity","100"),wa=Math.max(0,Math.min(50,m));k=V.prototype;b.setDashed(v);B&&""!=B&&b.setDashPattern(B);b.setStrokeWidth(K);m=Math.min(.5*e,.5*g,m);l||(m=wa*Math.min(g,e)/100);m=Math.min(m,.5*Math.min(g,e));l||(x=Math.min(n*Math.min(g,e)/100));x=Math.min(x,.5*Math.min(g,e)-m);(t||u||y||C)&&"frame"!=p&&(b.begin(),
-t?k.moveNW(b,d,c,g,e,f,z,m,C):b.moveTo(0,0),t&&k.paintNW(b,d,c,g,e,f,z,m,C),k.paintTop(b,d,c,g,e,f,J,m,u),u&&k.paintNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),y&&k.paintSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,g,e,f,A,m,C),C&&k.paintSW(b,d,c,g,e,f,A,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(W),v=l=Ja,"none"==W&&(l=0),"none"==ca&&(v=0),b.setGradient(W,ca,0,0,g,e,aa,l,v),b.begin(),t?k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C):b.moveTo(x,0),k.paintLeftInner(b,
-d,c,g,e,f,A,m,x,y,C),C&&y&&k.paintSWInner(b,d,c,g,e,f,A,m,x,y),k.paintBottomInner(b,d,c,g,e,f,q,m,x,u,y),y&&u&&k.paintSEInner(b,d,c,g,e,f,q,m,x),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,u),u&&t&&k.paintNEInner(b,d,c,g,e,f,J,m,x),k.paintTopInner(b,d,c,g,e,f,z,m,x,C,t),t&&C&&k.paintNWInner(b,d,c,g,e,f,z,m,x),b.fill(),"none"==da&&(b.begin(),k.paintFolds(b,d,c,g,e,f,z,J,q,A,m,t,u,y,C),b.stroke()));t||u||y||!C?t||u||!y||C?!t&&!u&&y&&C?"frame"!=p?(b.begin(),k.moveSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,
+t?k.moveNW(b,d,c,g,e,f,z,m,C):b.moveTo(0,0),t&&k.paintNW(b,d,c,g,e,f,z,m,C),k.paintTop(b,d,c,g,e,f,J,m,u),u&&k.paintNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),y&&k.paintSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,g,e,f,A,m,C),C&&k.paintSW(b,d,c,g,e,f,A,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(W),v=l=Ja,"none"==W&&(l=0),"none"==da&&(v=0),b.setGradient(W,da,0,0,g,e,aa,l,v),b.begin(),t?k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C):b.moveTo(x,0),k.paintLeftInner(b,
+d,c,g,e,f,A,m,x,y,C),C&&y&&k.paintSWInner(b,d,c,g,e,f,A,m,x,y),k.paintBottomInner(b,d,c,g,e,f,q,m,x,u,y),y&&u&&k.paintSEInner(b,d,c,g,e,f,q,m,x),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,u),u&&t&&k.paintNEInner(b,d,c,g,e,f,J,m,x),k.paintTopInner(b,d,c,g,e,f,z,m,x,C,t),t&&C&&k.paintNWInner(b,d,c,g,e,f,z,m,x),b.fill(),"none"==ea&&(b.begin(),k.paintFolds(b,d,c,g,e,f,z,J,q,A,m,t,u,y,C),b.stroke()));t||u||y||!C?t||u||!y||C?!t&&!u&&y&&C?"frame"!=p?(b.begin(),k.moveSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,
g,e,f,A,m,C),k.paintSW(b,d,c,g,e,f,A,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),"double"==p&&(k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,A,m,x,y,C),k.paintSWInner(b,d,c,g,e,f,A,m,x,y),k.paintBottomInner(b,d,c,g,e,f,q,m,x,u,y)),b.stroke()):(b.begin(),k.moveSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,g,e,f,A,m,C),k.paintSW(b,d,c,g,e,f,A,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),k.lineNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,A,m,x,y,C),k.paintSWInner(b,d,c,g,e,f,A,m,x,y),k.paintBottomInner(b,
d,c,g,e,f,q,m,x,u,y),b.close(),b.fillAndStroke()):t||!u||y||C?!t&&u&&!y&&C?"frame"!=p?(b.begin(),k.moveSW(b,d,c,g,e,f,z,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),"double"==p&&(k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,A,m,x,y,C)),b.stroke(),b.begin(),k.moveNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),"double"==p&&(k.moveSEInner(b,d,c,g,e,f,q,m,x,y),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,u)),b.stroke()):(b.begin(),k.moveSW(b,d,c,g,e,f,z,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),
k.lineNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,A,m,x,y,C),b.close(),b.fillAndStroke(),b.begin(),k.moveNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),k.lineSEInner(b,d,c,g,e,f,q,m,x,y),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,u),b.close(),b.fillAndStroke()):!t&&u&&y&&!C?"frame"!=p?(b.begin(),k.moveNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),k.paintSE(b,d,c,g,e,f,q,m,u),k.paintBottom(b,d,c,g,e,f,A,m,C),"double"==p&&(k.moveSWInner(b,d,c,g,e,f,A,m,x,C),k.paintBottomInner(b,
@@ -2895,15 +2900,15 @@ function(b,d,c,g,e,k,f,m,l,p){p?"square"==f||"default"==f&&"square"==k?b.moveTo(
l,e-m-.5*l):("invRound"==f||"default"==f&&"invRound"==k||"fold"==f||"default"==f&&"fold"==k)&&b.lineTo(g-l,e-m-l):b.lineTo(g-l,e)};V.prototype.moveNEInner=function(b,d,c,g,e,k,f,m,l,p){p?"square"==f||"default"==f&&"square"==k||p?b.moveTo(g-l,l):"rounded"==f||"default"==f&&"rounded"==k||"snip"==f||"default"==f&&"snip"==k?b.moveTo(g-l,m+.5*l):("invRound"==f||"default"==f&&"invRound"==k||"fold"==f||"default"==f&&"fold"==k)&&b.moveTo(g-l,m+l):b.moveTo(g,l)};V.prototype.lineNEInner=function(b,d,c,g,e,
k,f,m,l,p){p?"square"==f||"default"==f&&"square"==k||p?b.lineTo(g-l,l):"rounded"==f||"default"==f&&"rounded"==k||"snip"==f||"default"==f&&"snip"==k?b.lineTo(g-l,m+.5*l):("invRound"==f||"default"==f&&"invRound"==k||"fold"==f||"default"==f&&"fold"==k)&&b.lineTo(g-l,m+l):b.lineTo(g,l)};V.prototype.moveNWInner=function(b,d,c,g,e,k,f,m,l,p,x){p||x?!p&&x?b.moveTo(l,0):p&&!x?b.moveTo(0,l):"square"==f||"default"==f&&"square"==k?b.moveTo(l,l):"rounded"==f||"default"==f&&"rounded"==k||"snip"==f||"default"==
f&&"snip"==k?b.moveTo(l,m+.5*l):("invRound"==f||"default"==f&&"invRound"==k||"fold"==f||"default"==f&&"fold"==k)&&b.moveTo(l,m+l):b.moveTo(0,0)};V.prototype.lineNWInner=function(b,d,c,g,e,k,f,m,l,p,x){p||x?!p&&x?b.lineTo(l,0):p&&!x?b.lineTo(0,l):"square"==f||"default"==f&&"square"==k?b.lineTo(l,l):"rounded"==f||"default"==f&&"rounded"==k||"snip"==f||"default"==f&&"snip"==k?b.lineTo(l,m+.5*l):("invRound"==f||"default"==f&&"invRound"==k||"fold"==f||"default"==f&&"fold"==k)&&b.lineTo(l,m+l):b.lineTo(0,
-0)};V.prototype.paintFolds=function(b,d,c,g,e,k,f,m,l,p,x,v,t,u,n){if("fold"==k||"fold"==f||"fold"==m||"fold"==l||"fold"==p)("fold"==f||"default"==f&&"fold"==k)&&v&&n&&(b.moveTo(0,x),b.lineTo(x,x),b.lineTo(x,0)),("fold"==m||"default"==m&&"fold"==k)&&v&&t&&(b.moveTo(g-x,0),b.lineTo(g-x,x),b.lineTo(g,x)),("fold"==l||"default"==l&&"fold"==k)&&u&&t&&(b.moveTo(g-x,e),b.lineTo(g-x,e-x),b.lineTo(g,e-x)),("fold"==p||"default"==p&&"fold"==k)&&u&&n&&(b.moveTo(0,e-x),b.lineTo(x,e-x),b.lineTo(x,e))};mxCellRenderer.registerShape(V.prototype.cst.RECT2,
+0)};V.prototype.paintFolds=function(b,d,c,g,e,k,f,m,l,p,x,v,n,t,u){if("fold"==k||"fold"==f||"fold"==m||"fold"==l||"fold"==p)("fold"==f||"default"==f&&"fold"==k)&&v&&u&&(b.moveTo(0,x),b.lineTo(x,x),b.lineTo(x,0)),("fold"==m||"default"==m&&"fold"==k)&&v&&n&&(b.moveTo(g-x,0),b.lineTo(g-x,x),b.lineTo(g,x)),("fold"==l||"default"==l&&"fold"==k)&&t&&n&&(b.moveTo(g-x,e),b.lineTo(g-x,e-x),b.lineTo(g,e-x)),("fold"==p||"default"==p&&"fold"==k)&&t&&u&&(b.moveTo(0,e-x),b.lineTo(x,e-x),b.lineTo(x,e))};mxCellRenderer.registerShape(V.prototype.cst.RECT2,
V);V.prototype.constraints=null;mxUtils.extend(Fa,mxConnector);Fa.prototype.origPaintEdgeShape=Fa.prototype.paintEdgeShape;Fa.prototype.paintEdgeShape=function(b,d,c){for(var g=[],e=0;e<d.length;e++)g.push(mxUtils.clone(d[e]));var e=b.state.dashed,k=b.state.fixDash;Fa.prototype.origPaintEdgeShape.apply(this,[b,g,c]);3<=b.state.strokeWidth&&(g=mxUtils.getValue(this.style,"fillColor",null),null!=g&&(b.setStrokeColor(g),b.setStrokeWidth(b.state.strokeWidth-2),b.setDashed(e,k),Fa.prototype.origPaintEdgeShape.apply(this,
[b,d,c])))};mxCellRenderer.registerShape("filledEdge",Fa);"undefined"!==typeof StyleFormatPanel&&function(){var b=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.editorUi.getSelectionState(),c=b.apply(this,arguments);"umlFrame"==d.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return c}}();mxMarker.addMarker("dash",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1);return function(){b.begin();
-b.moveTo(g.x-x/2-v/2,g.y-v/2+x/2);b.lineTo(g.x+v/2-3*x/2,g.y-3*v/2-x/2);b.stroke()}});mxMarker.addMarker("box",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1),t=g.x+x/2,u=g.y+v/2;g.x-=x;g.y-=v;return function(){b.begin();b.moveTo(t-x/2-v/2,u-v/2+x/2);b.lineTo(t-x/2+v/2,u-v/2-x/2);b.lineTo(t+v/2-3*x/2,u-3*v/2-x/2);b.lineTo(t-v/2-3*x/2,u-3*v/2+x/2);b.close();p?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("cross",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1);return function(){b.begin();
-b.moveTo(g.x-x/2-v/2,g.y-v/2+x/2);b.lineTo(g.x+v/2-3*x/2,g.y-3*v/2-x/2);b.moveTo(g.x-x/2+v/2,g.y-v/2-x/2);b.lineTo(g.x-v/2-3*x/2,g.y-3*v/2+x/2);b.stroke()}});mxMarker.addMarker("circle",Ua);mxMarker.addMarker("circlePlus",function(b,d,c,g,e,k,f,m,l,p){var x=g.clone(),v=Ua.apply(this,arguments),t=e*(f+2*l),u=k*(f+2*l);return function(){v.apply(this,arguments);b.begin();b.moveTo(x.x-e*l,x.y-k*l);b.lineTo(x.x-2*t+e*l,x.y-2*u+k*l);b.moveTo(x.x-t-u+k*l,x.y-u+t-e*l);b.lineTo(x.x+u-t-k*l,x.y-u-t+e*l);b.stroke()}});
-mxMarker.addMarker("halfCircle",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1),t=g.clone();g.x-=x;g.y-=v;return function(){b.begin();b.moveTo(t.x-v,t.y+x);b.quadTo(g.x-v,g.y+x,g.x,g.y);b.quadTo(g.x+v,g.y-x,t.x+v,t.y-x);b.stroke()}});mxMarker.addMarker("async",function(b,d,c,g,e,k,f,m,l,p){d=e*l*1.118;c=k*l*1.118;e*=f+l;k*=f+l;var x=g.clone();x.x-=d;x.y-=c;g.x+=1*-e-d;g.y+=1*-k-c;return function(){b.begin();b.moveTo(x.x,x.y);m?b.lineTo(x.x-e-k/2,x.y-k+e/2):b.lineTo(x.x+k/2-e,x.y-k-e/2);
+b.moveTo(g.x-x/2-v/2,g.y-v/2+x/2);b.lineTo(g.x+v/2-3*x/2,g.y-3*v/2-x/2);b.stroke()}});mxMarker.addMarker("box",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1),n=g.x+x/2,t=g.y+v/2;g.x-=x;g.y-=v;return function(){b.begin();b.moveTo(n-x/2-v/2,t-v/2+x/2);b.lineTo(n-x/2+v/2,t-v/2-x/2);b.lineTo(n+v/2-3*x/2,t-3*v/2-x/2);b.lineTo(n-v/2-3*x/2,t-3*v/2+x/2);b.close();p?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("cross",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1);return function(){b.begin();
+b.moveTo(g.x-x/2-v/2,g.y-v/2+x/2);b.lineTo(g.x+v/2-3*x/2,g.y-3*v/2-x/2);b.moveTo(g.x-x/2+v/2,g.y-v/2-x/2);b.lineTo(g.x-v/2-3*x/2,g.y-3*v/2+x/2);b.stroke()}});mxMarker.addMarker("circle",Ua);mxMarker.addMarker("circlePlus",function(b,d,c,g,e,k,f,m,l,x){var p=g.clone(),v=Ua.apply(this,arguments),n=e*(f+2*l),t=k*(f+2*l);return function(){v.apply(this,arguments);b.begin();b.moveTo(p.x-e*l,p.y-k*l);b.lineTo(p.x-2*n+e*l,p.y-2*t+k*l);b.moveTo(p.x-n-t+k*l,p.y-t+n-e*l);b.lineTo(p.x+t-n-k*l,p.y-t-n+e*l);b.stroke()}});
+mxMarker.addMarker("halfCircle",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),v=k*(f+l+1),n=g.clone();g.x-=x;g.y-=v;return function(){b.begin();b.moveTo(n.x-v,n.y+x);b.quadTo(g.x-v,g.y+x,g.x,g.y);b.quadTo(g.x+v,g.y-x,n.x+v,n.y-x);b.stroke()}});mxMarker.addMarker("async",function(b,d,c,g,e,k,f,m,l,p){d=e*l*1.118;c=k*l*1.118;e*=f+l;k*=f+l;var x=g.clone();x.x-=d;x.y-=c;g.x+=1*-e-d;g.y+=1*-k-c;return function(){b.begin();b.moveTo(x.x,x.y);m?b.lineTo(x.x-e-k/2,x.y-k+e/2):b.lineTo(x.x+k/2-e,x.y-k-e/2);
b.lineTo(x.x-e,x.y-k);b.close();p?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("openAsync",function(b){b=null!=b?b:2;return function(d,c,g,e,k,f,m,l,x,p){k*=m+x;f*=m+x;var v=e.clone();return function(){d.begin();d.moveTo(v.x,v.y);l?d.lineTo(v.x-k-f/b,v.y-f+k/b):d.lineTo(v.x+f/b-k,v.y-f-k/b);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var ab=function(b,d,c){return Ma(b,["width"],d,function(d,g,e,k,f){f=b.shape.getEdgeWidth()*b.view.scale+c;return new mxPoint(k.x+g*d/4+e*f/2,k.y+
e*d/4-g*f/2)},function(d,g,e,k,f,m){d=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,f.x,f.y,m.x,m.y));b.style.width=Math.round(2*d)/b.view.scale-c})},Ma=function(b,d,c,g,e){return ka(b,d,function(d){var e=b.absolutePoints,k=e.length-1;d=b.view.translate;var f=b.view.scale,m=c?e[0]:e[k],e=c?e[1]:e[k-1],k=e.x-m.x,l=e.y-m.y,x=Math.sqrt(k*k+l*l),m=g.call(this,x,k/x,l/x,m,e);return new mxPoint(m.x/f-d.x,m.y/f-d.y)},function(d,g,k){var f=b.absolutePoints,m=f.length-1;d=b.view.translate;var l=b.view.scale,x=c?f[0]:
-f[m],f=c?f[1]:f[m-1],m=f.x-x.x,p=f.y-x.y,v=Math.sqrt(m*m+p*p);g.x=(g.x+d.x)*l;g.y=(g.y+d.y)*l;e.call(this,v,m/v,p/v,x,f,g,k)})},Va=function(b){return function(d){return[ka(d,["arrowWidth","arrowSize"],function(d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",fa.prototype.arrowWidth))),g=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",fa.prototype.arrowSize)));return new mxPoint(d.x+(1-g)*d.width,d.y+(1-c)*d.height/2)},function(d,c){this.state.style.arrowWidth=
+f[m],f=c?f[1]:f[m-1],m=f.x-x.x,p=f.y-x.y,v=Math.sqrt(m*m+p*p);g.x=(g.x+d.x)*l;g.y=(g.y+d.y)*l;e.call(this,v,m/v,p/v,x,f,g,k)})},Va=function(b){return function(d){return[ka(d,["arrowWidth","arrowSize"],function(d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",ga.prototype.arrowWidth))),g=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",ga.prototype.arrowSize)));return new mxPoint(d.x+(1-g)*d.width,d.y+(1-c)*d.height/2)},function(d,c){this.state.style.arrowWidth=
Math.max(0,Math.min(1,Math.abs(d.y+d.height/2-c.y)/d.height*2));this.state.style.arrowSize=Math.max(0,Math.min(b,(d.x+d.width-c.x)/d.width))})]}},Wa=function(b){return function(d){return[ka(d,["size"],function(d){var c=Math.max(0,Math.min(.5*d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(d.x,d.y+c)},function(b,d){this.state.style.size=Math.max(0,d.y-b.y)},!0)]}},Sa=function(b,d,c){return function(g){var e=[ka(g,["size"],function(c){var g=Math.max(0,Math.min(c.width,
Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*b;return new mxPoint(c.x+g,c.y+g)},function(d,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,c.x-d.x),Math.min(d.height,c.y-d.y)))/b)},!1)];c&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ia(g));return e}},Na=function(b,d,c,g,e){c=null!=c?c:.5;return function(k){var f=[ka(k,["size"],function(d){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,g=parseFloat(mxUtils.getValue(this.state.style,
"size",c?e:b));return new mxPoint(d.x+Math.max(0,Math.min(.5*d.width,g*(c?1:d.width))),d.getCenterY())},function(b,d,g){b=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(c,(d.x-b.x)/b.width));this.state.style.size=b},!1,g)];d&&mxUtils.getValue(k.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(Ia(k));return f}},Xa=function(b,d,c){b=null!=b?b:.5;return function(g){var e=[ka(g,["size"],function(g){var e=null!=c?"0"!=mxUtils.getValue(this.state.style,"fixedSize",
@@ -2923,17 +2928,17 @@ b.style[mxConstants.STYLE_ENDSIZE],b.style.startWidth=b.style.endWidth;mxEvent.i
parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(Ia(b,c/2))}d.push(ka(b,[mxConstants.STYLE_STARTSIZE],function(d){var c=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,c))):new mxPoint(d.x+Math.max(0,Math.min(d.width,c)),d.getCenterY())},function(d,c){b.style[mxConstants.STYLE_STARTSIZE]=
1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,c.y-d.y))):Math.round(Math.max(0,Math.min(d.width,c.x-d.x)))},!1,null,function(d){var c=b.view.graph;if(!mxEvent.isShiftDown(d.getEvent())&&!mxEvent.isControlDown(d.getEvent())&&(c.isTableRow(b.cell)||c.isTableCell(b.cell))){d=c.getSwimlaneDirection(b.style);for(var g=c.model.getParent(b.cell),g=c.model.getChildCells(g,!0),e=[],k=0;k<g.length;k++)g[k]!=b.cell&&c.isSwimlane(g[k])&&c.getSwimlaneDirection(c.getCurrentCellStyle(g[k]))==
d&&e.push(g[k]);c.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],e)}}));return d},label:La(),ext:La(),rectangle:La(),triangle:La(),rhombus:La(),umlLifeline:function(b){return[ka(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",W.prototype.size))));return new mxPoint(b.getCenterX(),b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},umlFrame:function(b){return[ka(b,
-["width","height"],function(b){var d=Math.max(ca.prototype.corner,Math.min(b.width,mxUtils.getValue(this.state.style,"width",ca.prototype.width))),c=Math.max(1.5*ca.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",ca.prototype.height)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.width=Math.round(Math.max(ca.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*ca.prototype.corner,Math.min(b.height,d.y-b.y)))},
+["width","height"],function(b){var d=Math.max(da.prototype.corner,Math.min(b.width,mxUtils.getValue(this.state.style,"width",da.prototype.width))),c=Math.max(1.5*da.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",da.prototype.height)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.width=Math.round(Math.max(da.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*da.prototype.corner,Math.min(b.height,d.y-b.y)))},
!1)]},process:function(b){var d=[ka(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",I.prototype.size));return d?new mxPoint(b.x+c,b.y+b.height/4):new mxPoint(b.x+b.width*c,b.y+b.height/4)},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*b.width,d.x-b.x)):Math.max(0,Math.min(.5,(d.x-b.x)/b.width));this.state.style.size=c},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,
!1)&&d.push(Ia(b));return d},cross:function(b){return[ka(b,["size"],function(b){var d=Math.min(b.width,b.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",za.prototype.size)))*d/2;return new mxPoint(b.getCenterX()-d,b.getCenterY()-d)},function(b,d){var c=Math.min(b.width,b.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,b.getCenterY()-d.y)/c*2,Math.max(0,b.getCenterX()-d.x)/c*2)))})]},note:function(b){return[ka(b,["size"],function(b){var d=Math.max(0,
Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},note2:function(b){return[ka(b,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},
-function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ka(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",oa.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));
-return d},dataStorage:function(b){return[ka(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",d?pa.prototype.fixedSize:pa.prototype.size));return new mxPoint(b.x+b.width-c*(d?1:b.width),b.getCenterY())},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=c},!1)]},callout:function(b){var d=
+function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ka(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",pa.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));
+return d},dataStorage:function(b){return[ka(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",d?ma.prototype.fixedSize:ma.prototype.size));return new mxPoint(b.x+b.width-c*(d?1:b.width),b.getCenterY())},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=c},!1)]},callout:function(b){var d=
[ka(b,["size","position"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",M.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",M.prototype.position)));mxUtils.getValue(this.state.style,"base",M.prototype.base);return new mxPoint(b.x+c*b.width,b.y+b.height-d)},function(b,d){mxUtils.getValue(this.state.style,"base",M.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(b.height,b.y+b.height-d.y)));this.state.style.position=
Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ka(b,["position2"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",M.prototype.position2)));return new mxPoint(b.x+d*b.width,b.y+b.height)},function(b,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ka(b,["base"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",M.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"position",M.prototype.position))),g=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"base",M.prototype.base)));return new mxPoint(b.x+Math.min(b.width,c*b.width+g),b.y+b.height-d)},function(b,d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",M.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(b.width,d.x-b.x-c*b.width)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));return d},internalStorage:function(b){var d=
[ka(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ra.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ra.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));return d},module:function(b){return[ka(b,
-["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",ga.prototype.jettyWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"jettyHeight",ga.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*c)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ka(b,
+["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",ha.prototype.jettyWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"jettyHeight",ha.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*c)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ka(b,
["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",R.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",R.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},tee:function(b){return[ka(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
"dx",ia.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ia.prototype.dy)));return new mxPoint(b.x+(b.width+d)/2,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,2*Math.min(b.width/2,d.x-b.x-b.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},singleArrow:Va(1),doubleArrow:Va(.5),folder:function(b){return[ka(b,["tabWidth","tabHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
"tabWidth",t.prototype.tabWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"tabHeight",t.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",t.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(d=b.width-d);return new mxPoint(b.x+d,b.y+c)},function(b,d){var c=Math.max(0,Math.min(b.width,d.x-b.x));mxUtils.getValue(this.state.style,"tabPosition",t.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=b.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=
@@ -2944,8 +2949,8 @@ return new mxPoint(b.x+d,b.y+d)},function(b,d){this.state.style.size=Math.round(
!0,K.prototype.fixedSize),hexagon:Na(O.prototype.size,!0,.5,!0,O.prototype.fixedSize),curlyBracket:Na(N.prototype.size,!1),display:Na(Ba.prototype.size,!1),cube:Sa(1,f.prototype.size,!1),card:Sa(.5,y.prototype.size,!0),loopLimit:Sa(.5,sa.prototype.size,!0),trapezoid:Xa(.5,H.prototype.size,H.prototype.fixedSize),parallelogram:Xa(1,E.prototype.size,E.prototype.fixedSize)};Graph.createHandle=ka;Graph.handleFactory=Oa;var eb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=
function(){var b=eb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var d=this.state.style.shape;null==mxCellRenderer.defaultShapes[d]&&null==mxStencilRegistry.getStencil(d)?d=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(d=mxConstants.SHAPE_SWIMLANE);d=Oa[d];null==d&&null!=this.state.shape&&this.state.shape.isRoundable()&&(d=Oa[mxConstants.SHAPE_RECTANGLE]);null!=d&&(d=d(this.state),null!=d&&(b=null==b?d:b.concat(d)))}return b};mxEdgeHandler.prototype.createCustomHandles=
function(){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)&&(b=mxConstants.SHAPE_CONNECTOR);b=Oa[b];return null!=b?b(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Pa=new mxPoint(1,0),Qa=new mxPoint(1,0),Ya=mxUtils.toRadians(-30),Pa=mxUtils.getRotatedPoint(Pa,Math.cos(Ya),Math.sin(Ya)),Za=mxUtils.toRadians(-150),Qa=mxUtils.getRotatedPoint(Qa,Math.cos(Za),Math.sin(Za));mxEdgeStyle.IsometricConnector=function(b,
-d,c,g,e){var k=b.view;g=null!=g&&0<g.length?g[0]:null;var f=b.absolutePoints,m=f[0],f=f[f.length-1];null!=g&&(g=k.transformControlPoint(b,g));null==m&&null!=d&&(m=new mxPoint(d.getCenterX(),d.getCenterY()));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));var l=Pa.x,x=Pa.y,p=Qa.x,v=Qa.y,t="horizontal"==mxUtils.getValue(b.style,"elbow","horizontal");if(null!=f&&null!=m){b=function(b,d,c){b-=u.x;var g=d-u.y;d=(v*b-p*g)/(l*v-x*p);b=(x*b-l*g)/(x*p-l*v);t?(c&&(u=new mxPoint(u.x+l*d,u.y+
-x*d),e.push(u)),u=new mxPoint(u.x+p*b,u.y+v*b)):(c&&(u=new mxPoint(u.x+p*b,u.y+v*b),e.push(u)),u=new mxPoint(u.x+l*d,u.y+x*d));e.push(u)};var u=m;null==g&&(g=new mxPoint(m.x+(f.x-m.x)/2,m.y+(f.y-m.y)/2));b(g.x,g.y,!0);b(f.x,f.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var fb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(b,d){if(d==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(b);c.snapToTerminals=!1;return c}return fb.apply(this,
+d,c,g,e){var k=b.view;g=null!=g&&0<g.length?g[0]:null;var f=b.absolutePoints,m=f[0],f=f[f.length-1];null!=g&&(g=k.transformControlPoint(b,g));null==m&&null!=d&&(m=new mxPoint(d.getCenterX(),d.getCenterY()));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));var l=Pa.x,x=Pa.y,p=Qa.x,v=Qa.y,n="horizontal"==mxUtils.getValue(b.style,"elbow","horizontal");if(null!=f&&null!=m){b=function(b,d,c){b-=t.x;var g=d-t.y;d=(v*b-p*g)/(l*v-x*p);b=(x*b-l*g)/(x*p-l*v);n?(c&&(t=new mxPoint(t.x+l*d,t.y+
+x*d),e.push(t)),t=new mxPoint(t.x+p*b,t.y+v*b)):(c&&(t=new mxPoint(t.x+p*b,t.y+v*b),e.push(t)),t=new mxPoint(t.x+l*d,t.y+x*d));e.push(t)};var t=m;null==g&&(g=new mxPoint(m.x+(f.x-m.x)/2,m.y+(f.y-m.y)/2));b(g.x,g.y,!0);b(f.x,f.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var fb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(b,d){if(d==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(b);c.snapToTerminals=!1;return c}return fb.apply(this,
arguments)};l.prototype.constraints=[];q.prototype.getConstraints=function(b,d,c){b=[];var g=Math.tan(mxUtils.toRadians(30)),e=(.5-g)/2,g=Math.min(d,c/(.5+g));d=(d-g)/2;c=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c+.25*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*g,c+g*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+g,c+.25*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+g,c+.75*g));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,d+.5*g,c+(1-e)*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c+.75*g));return b};p.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,g=Math.min(d*Math.tan(g),.5*c);b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,d,c-g));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-g));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));return b};M.prototype.getConstraints=function(b,d,c){b=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var g=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,
@@ -2964,14 +2969,14 @@ parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.push(new mxConnect
1),!1,null,0,.29*-d));b.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-d));return b};t.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(b.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),e))):(b.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,e)),b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(d-g),e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
-0,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};ra.prototype.constraints=mxRectangleShape.prototype.constraints;pa.prototype.constraints=
-mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxEllipse.prototype.constraints;P.prototype.constraints=mxEllipse.prototype.constraints;Ga.prototype.constraints=mxEllipse.prototype.constraints;Ha.prototype.constraints=mxEllipse.prototype.constraints;oa.prototype.constraints=mxRectangleShape.prototype.constraints;Ca.prototype.constraints=mxRectangleShape.prototype.constraints;Ba.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(d,c/2),e=Math.min(d-g,Math.max(0,parseFloat(mxUtils.getValue(this.style,
+0,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};ra.prototype.constraints=mxRectangleShape.prototype.constraints;ma.prototype.constraints=
+mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxEllipse.prototype.constraints;P.prototype.constraints=mxEllipse.prototype.constraints;Ga.prototype.constraints=mxEllipse.prototype.constraints;Ha.prototype.constraints=mxEllipse.prototype.constraints;pa.prototype.constraints=mxRectangleShape.prototype.constraints;Ca.prototype.constraints=mxRectangleShape.prototype.constraints;Ba.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(d,c/2),e=Math.min(d-g,Math.max(0,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))*d);b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-g),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-g),c));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,e,c));return b};ga.prototype.getConstraints=function(b,d,c){d=parseFloat(mxUtils.getValue(b,"jettyWidth",ga.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,"jettyHeight",ga.prototype.jettyHeight));var g=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,d),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,
+0),!1,null,e,c));return b};ha.prototype.getConstraints=function(b,d,c){d=parseFloat(mxUtils.getValue(b,"jettyWidth",ha.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,"jettyHeight",ha.prototype.jettyHeight));var g=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,d),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,d),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(c-.5*b,1.5*b)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-
.5*b,3.5*b))];c>5*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,d));c>8*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,d));c>15*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,d));return g};sa.prototype.constraints=mxRectangleShape.prototype.constraints;ja.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)];ba.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)];na.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,
+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)];ca.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)];oa.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)];u.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];F.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,
@@ -2987,9 +2992,9 @@ null,.75*d+.25*g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
!1,null,.5*(d-g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d-.25*g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return b};R.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),
!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*(c+e)));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,g,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return b};qa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,
-.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];fa.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-g));return b};ha.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,
-parseFloat(mxUtils.getValue(this.style,"arrowWidth",fa.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",fa.prototype.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),
+.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];ga.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-g));return b};ba.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,
+parseFloat(mxUtils.getValue(this.style,"arrowWidth",ga.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ga.prototype.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),
!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return b};za.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(c,d),e=Math.max(0,Math.min(g,g*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=(c-e)/2,k=g+e,f=(d-e)/2,e=f+e;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,f,0));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c-.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),k));b.push(new mxConnectionConstraint(new mxPoint(0,
@@ -3020,42 +3025,42 @@ null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&b.value.hasAttribute("
this.addAction("editLink...",function(){var b=l.getSelectionCell();if(l.isEnabled()&&null!=b&&l.isCellEditable(b)){var d=l.getLinkForCell(b)||"";f.showLinkDialog(d,mxResources.get("apply"),function(d,c,g){d=mxUtils.trim(d);l.setLinkForCell(b,0<d.length?d:null);l.setAttributeForCell(b,"linkTarget",g)},!0,l.getLinkTargetForCell(b))}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&(l.clearSelection(),
f.actions.get("image").funct())})).isEnabled=q;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&f.showLinkDialog("",mxResources.get("insert"),function(b,d,c){b=mxUtils.trim(b);if(0<b.length){var g=null,e=l.getLinkTitle(b);null!=d&&0<d.length&&(g=d[0].iconUrl,e=d[0].name||d[0].type,e=e.charAt(0).toUpperCase()+e.substring(1),30<e.length&&(e=e.substring(0,30)+"..."));d=new mxCell(e,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+
(null!=g?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+g:"spacing=10;"));d.vertex=!0;g=l.getCenterInsertPoint(l.getBoundingBoxFromGeometry([d],!0));d.geometry.x=g.x;d.geometry.y=g.y;l.setAttributeForCell(d,"linkTarget",c);l.setLinkForCell(d,b);l.cellSizeUpdated(d,!0);l.getModel().beginUpdate();try{d=l.addCell(d),l.fireEvent(new mxEventObject("cellsInserted","cells",[d]))}finally{l.getModel().endUpdate()}l.setSelectionCell(d);l.scrollCellToVisible(l.getSelectionCell())}},
-!0)})).isEnabled=q;this.addAction("link...",mxUtils.bind(this,function(){if(l.isEnabled())if(l.cellEditor.isContentEditing()){var b=l.getSelectedElement(),d=l.getParentByName(b,"A",l.cellEditor.textarea),c="";if(null==d&&null!=b&&null!=b.getElementsByTagName)for(var e=b.getElementsByTagName("a"),k=0;k<e.length&&null==d;k++)e[k].textContent==b.textContent&&(d=e[k]);null!=d&&"A"==d.nodeName&&(c=d.getAttribute("href")||"",l.selectNode(d));var t=l.cellEditor.saveSelection();f.showLinkDialog(c,mxResources.get("apply"),
-mxUtils.bind(this,function(b){l.cellEditor.restoreSelection(t);null!=b&&l.insertLink(b)}))}else l.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=q;this.addAction("autosize",function(){var b=l.getSelectionCells();if(null!=b){l.getModel().beginUpdate();try{for(var d=0;d<b.length;d++){var c=b[d];0<l.getModel().getChildCount(c)?l.updateGroupBounds([c],0,!0):l.updateCellSize(c)}}finally{l.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",
-function(){l.stopEditing();var b=l.getCommonStyle(l.getSelectionCells()),b="1"==mxUtils.getValue(b,"html","0")?null:"1";l.getModel().beginUpdate();try{for(var d=l.getEditableCells(l.getSelectionCells()),c=0;c<d.length;c++)if(state=l.getView().getState(d[c]),null!=state){var e=mxUtils.getValue(state.style,"html","0");if("1"==e&&null==b){var k=l.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var t=document.createElement("div");
-t.innerHTML=l.sanitizeHtml(k);k=mxUtils.extractTextWithWhitespace(t.childNodes);l.cellLabelChanged(state.cell,k);l.setCellStyles("html",b,[d[c]])}else"0"==e&&"1"==b&&(k=mxUtils.htmlEntities(l.convertValueToString(state.cell),!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),l.cellLabelChanged(state.cell,l.sanitizeHtml(k)),l.setCellStyles("html",b,[d[c]]))}f.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=b?b:"0"],"cells",d))}finally{l.getModel().endUpdate()}});
-this.addAction("wordWrap",function(){var b=l.getView().getState(l.getSelectionCell()),d="wrap";l.stopEditing();null!=b&&"wrap"==b.style[mxConstants.STYLE_WHITE_SPACE]&&(d=null);l.setCellStyles(mxConstants.STYLE_WHITE_SPACE,d)});this.addAction("rotation",function(){var b="0",d=l.getView().getState(l.getSelectionCell());null!=d&&(b=d.style[mxConstants.STYLE_ROTATION]||b);b=new FilenameDialog(f,b,mxResources.get("apply"),function(b){null!=b&&0<b.length&&l.setCellStyles(mxConstants.STYLE_ROTATION,b)},
-mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");f.showDialog(b.container,375,80,!0,!0);b.init()});this.addAction("resetView",function(){l.zoomTo(1);f.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",function(b){l.isFastZoomEnabled()?l.lazyZoom(!0,!0,f.buttonZoomDelay):l.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(b){l.isFastZoomEnabled()?l.lazyZoom(!1,!0,f.buttonZoomDelay):l.zoomOut()},null,null,Editor.ctrlKey+
-" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var b=l.isSelectionEmpty()?l.getGraphBounds():l.getBoundingBox(l.getSelectionCells()),d=l.view.translate,c=l.view.scale;b.x=b.x/c-d.x;b.y=b.y/c-d.y;b.width/=c;b.height/=c;null!=l.backgroundImage&&(b=mxRectangle.fromRectangle(b),b.add(new mxRectangle(0,0,l.backgroundImage.width,l.backgroundImage.height)));0==b.width||0==b.height?(l.zoomTo(1),f.resetScrollbars()):(d=Editor.fitWindowBorders,null!=d&&(b.x-=d.x,b.y-=d.y,b.width+=d.width+
-d.x,b.height+=d.height+d.y),l.fitWindow(b))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();var b=l.pageFormat,d=l.pageScale;l.zoomTo(Math.floor(20*Math.min((l.container.clientWidth-10)/b.width/d,(l.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(l.container)&&(b=l.getPagePadding(),l.container.scrollTop=b.y*l.view.scale-1,l.container.scrollLeft=Math.min(b.x*l.view.scale,(l.container.scrollWidth-
-l.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();var b=l.pageFormat,d=l.pageScale;l.zoomTo(Math.floor(20*Math.min((l.container.clientWidth-10)/(2*b.width)/d,(l.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(l.container)&&(b=l.getPagePadding(),l.container.scrollTop=Math.min(b.y,(l.container.scrollHeight-l.container.clientHeight)/2),l.container.scrollLeft=Math.min(b.x,
-(l.container.scrollWidth-l.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();l.zoomTo(Math.floor(20*(l.container.clientWidth-10)/l.pageFormat.width/l.pageScale)/20);if(mxUtils.hasScrollbars(l.container)){var b=l.getPagePadding();l.container.scrollLeft=Math.min(b.x*l.view.scale,(l.container.scrollWidth-l.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+
-"...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*l.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&l.zoomTo(b/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*l.pageScale),mxResources.get("apply"),mxUtils.bind(this,
-function(b){b=parseInt(b);!isNaN(b)&&0<b&&(b=new ChangePageSetup(f,null,null,null,b/100),b.ignoreColor=!0,b.ignoreImage=!0,l.model.execute(b))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}));var d=null,d=this.addAction("grid",function(){l.setGridEnabled(!l.isGridEnabled());l.defaultGridEnabled=l.isGridEnabled();f.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.isGridEnabled()});
-d.setEnabled(!1);d=this.addAction("guides",function(){l.graphHandler.guidesEnabled=!l.graphHandler.guidesEnabled;f.fireEvent(new mxEventObject("guidesEnabledChanged"))});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.graphHandler.guidesEnabled});d.setEnabled(!1);d=this.addAction("tooltips",function(){l.tooltipHandler.setEnabled(!l.tooltipHandler.isEnabled());f.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.tooltipHandler.isEnabled()});
-d=this.addAction("collapseExpand",function(){var b=new ChangePageSetup(f);b.ignoreColor=!0;b.ignoreImage=!0;b.foldingEnabled=!l.foldingEnabled;l.model.execute(b)});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.foldingEnabled});d.isEnabled=q;d=this.addAction("scrollbars",function(){f.setScrollbars(!f.hasScrollbars())});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.scrollbars});d=this.addAction("pageView",mxUtils.bind(this,function(){f.setPageVisible(!l.pageVisible)}));
-d.setToggleAction(!0);d.setSelectedCallback(function(){return l.pageVisible});d=this.addAction("connectionArrows",function(){l.connectionArrowsEnabled=!l.connectionArrowsEnabled;f.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionArrowsEnabled});d=this.addAction("connectionPoints",function(){l.setConnectable(!l.connectionHandler.isEnabled());f.fireEvent(new mxEventObject("connectionPointsChanged"))},
-null,null,"Alt+Shift+P");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionHandler.isEnabled()});d=this.addAction("copyConnect",function(){l.connectionHandler.setCreateTarget(!l.connectionHandler.isCreateTarget());f.fireEvent(new mxEventObject("copyConnectChanged"))});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionHandler.isCreateTarget()});d.isEnabled=q;d=this.addAction("autosave",function(){f.editor.setAutosave(!f.editor.autosave)});d.setToggleAction(!0);
-d.setSelectedCallback(function(){return f.editor.autosave});d.isEnabled=q;d.visible=!1;this.addAction("help",function(){var b="";mxResources.isLanguageSupported(mxClient.language)&&(b="_"+mxClient.language);l.openLink(RESOURCES_PATH+"/help"+b+".html")});var k=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){k||(f.showDialog((new AboutDialog(f)).container,320,280,!0,!0,function(){k=!1}),k=!0)}));d=mxUtils.bind(this,function(b,d,c,e){return this.addAction(b,function(){if(null!=
-c&&l.cellEditor.isContentEditing())c();else{l.stopEditing(!1);l.getModel().beginUpdate();try{var b=l.getEditableCells(l.getSelectionCells());l.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,d,b);(d&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?l.updateLabelElements(b,function(b){b.style.fontWeight=null;"B"==b.nodeName&&l.replaceElement(b)}):(d&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?l.updateLabelElements(b,function(b){b.style.fontStyle=null;"I"==b.nodeName&&l.replaceElement(b)}):(d&mxConstants.FONT_UNDERLINE)==
-mxConstants.FONT_UNDERLINE&&l.updateLabelElements(b,function(b){b.style.textDecoration=null;"U"==b.nodeName&&l.replaceElement(b)});for(var g=0;g<b.length;g++)0==l.model.getChildCount(b[g])&&l.autoSizeCell(b[g],!1)}finally{l.getModel().endUpdate()}}},null,null,e)});d("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");d("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");d("underline",mxConstants.FONT_UNDERLINE,
-function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){f.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){f.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){f.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){f.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)});this.addAction("backgroundColor...",
-function(){f.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){f.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){f.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,!0)});this.addAction("shadow",function(){f.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,null),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,
-null),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("dashed",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,"1"),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",
-l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("dotted",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,"1"),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("sharp",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,
-"0"),l.setCellStyles(mxConstants.STYLE_CURVED,"0"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("rounded",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),l.setCellStyles(mxConstants.STYLE_CURVED,"0"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],
-"values",["1","0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!l.isSelectionEmpty()&&l.isEnabled()){l.getModel().beginUpdate();try{var b=l.getSelectionCells(),d=l.getCurrentCellStyle(b[0]),c="1"==mxUtils.getValue(d,mxConstants.STYLE_ROUNDED,"0")?"0":"1";l.setCellStyles(mxConstants.STYLE_ROUNDED,c);l.setCellStyles(mxConstants.STYLE_CURVED,null);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],
-"values",[c,"0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}}});this.addAction("curved",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),l.setCellStyles(mxConstants.STYLE_CURVED,"1"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("collapsible",function(){var b=l.view.getState(l.getSelectionCell()),
-d="1";null!=b&&null!=l.getFoldingImage(b)&&(d="0");l.setCellStyles("collapsible",d);f.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[d],"cells",l.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var b=l.getEditableCells(l.getSelectionCells());if(null!=b&&0<b.length){var d=l.getModel(),d=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",d.getStyle(b[0])||"",function(d){null!=d&&l.setCellStyle(mxUtils.trim(d),b)},null,null,
-400,220);this.editorUi.showDialog(d.container,420,300,!0,!0);d.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){l.isEnabled()&&!l.isSelectionEmpty()&&f.setDefaultStyle(l.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){l.isEnabled()&&f.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var b=l.getSelectionCell();if(null!=b&&l.getModel().isEdge(b)){var d=n.graph.selectionCellsHandler.getHandler(b);
-if(d instanceof mxEdgeHandler){for(var c=l.view.translate,e=l.view.scale,k=c.x,c=c.y,b=l.getModel().getParent(b),f=l.getCellGeometry(b);l.getModel().isVertex(b)&&null!=f;)k+=f.x,c+=f.y,b=l.getModel().getParent(b),f=l.getCellGeometry(b);k=Math.round(l.snap(l.popupMenuHandler.triggerX/e-k));e=Math.round(l.snap(l.popupMenuHandler.triggerY/e-c));d.addPointAt(d.state,k,e)}}});this.addAction("removeWaypoint",function(){var b=f.actions.get("removeWaypoint");null!=b.handler&&b.handler.removePoint(b.handler.state,
-b.index)});this.addAction("clearWaypoints",function(b,d){b=null!=d?d:b;var c=l.getSelectionCells();if(null!=c){c=l.getEditableCells(l.addAllEdges(c));l.getModel().beginUpdate();try{for(var g=0;g<c.length;g++){var e=c[g];if(l.getModel().isEdge(e)){var k=l.getCellGeometry(e);null!=d&&mxEvent.isShiftDown(b)?(l.setCellStyles(mxConstants.STYLE_EXIT_X,null,[e]),l.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[e]),l.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[e]),l.setCellStyles(mxConstants.STYLE_ENTRY_Y,
-null,[e])):null!=k&&(k=k.clone(),k.points=null,k.x=0,k.y=0,k.offset=null,l.getModel().setGeometry(e,k))}}}finally{l.getModel().endUpdate()}}},null,null,"Alt+Shift+C");d=this.addAction("subscript",mxUtils.bind(this,function(){l.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");d=this.addAction("superscript",mxUtils.bind(this,function(){l.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");
-this.addAction("image...",function(){if(l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())){var b=mxResources.get("image")+" ("+mxResources.get("url")+"):",d=l.getView().getState(l.getSelectionCell()),c="",k=null;null!=d&&(c=d.style[mxConstants.STYLE_IMAGE]||c,k=d.style[mxConstants.STYLE_CLIP_PATH]||k);var n=l.cellEditor.saveSelection();f.showImageDialog(b,c,function(b,d,c,g,k,f){if(l.cellEditor.isContentEditing())l.cellEditor.restoreSelection(n),l.insertImage(b,d,c);else{var m=l.getSelectionCells();
-if(null!=b&&(0<b.length||0<m.length)){var p=null;l.getModel().beginUpdate();try{if(0==m.length){var m=[l.insertVertex(l.getDefaultParent(),null,"",0,0,d,c,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],v=l.getCenterInsertPoint(l.getBoundingBoxFromGeometry(m,!0));m[0].geometry.x=v.x;m[0].geometry.y=v.y;p=m;l.fireEvent(new mxEventObject("cellsInserted","cells",p))}l.setCellStyles(mxConstants.STYLE_IMAGE,0<b.length?b:null,m);var t=l.getCurrentCellStyle(m[0]);
-"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?l.setCellStyles(mxConstants.STYLE_SHAPE,"image",m):0==b.length&&l.setCellStyles(mxConstants.STYLE_SHAPE,null,m);if(1==l.getSelectionCount()&&null!=d&&null!=c){var u=m[0],y=l.getModel().getGeometry(u);null!=y&&(y=y.clone(),y.width=d,y.height=c,l.getModel().setGeometry(u,y));null!=g?e(u,g,k,f,l):l.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,m)}}finally{l.getModel().endUpdate()}null!=p&&(l.setSelectionCells(p),l.scrollCellToVisible(p[0]))}}},
-l.cellEditor.isContentEditing(),!l.cellEditor.isContentEditing(),!0,k)}}).isEnabled=q;this.addAction("crop...",function(){var b=l.getSelectionCell();if(l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&null!=b){var d=l.getCurrentCellStyle(b),c=d[mxConstants.STYLE_IMAGE],k=d[mxConstants.STYLE_SHAPE];c&&"image"==k&&(d=new CropImageDialog(f,c,d[mxConstants.STYLE_CLIP_PATH],function(d,c,g){e(b,d,c,g,l)}),f.showDialog(d.container,300,380,!0,!0))}}).isEnabled=q;d=this.addAction("layers",mxUtils.bind(this,
-function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(f,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){f.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),this.layersWindow.window.addListener("hide",function(){f.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),f.fireEvent(new mxEventObject("layers")),this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),
+!0)})).isEnabled=q;this.addAction("link...",mxUtils.bind(this,function(){if(l.isEnabled())if(l.cellEditor.isContentEditing()){var b=l.getSelectedElement(),d=l.getParentByName(b,"A",l.cellEditor.textarea),c="";if(null==d&&null!=b&&null!=b.getElementsByTagName)for(var e=b.getElementsByTagName("a"),k=0;k<e.length&&null==d;k++)e[k].textContent==b.textContent&&(d=e[k]);null!=d&&"A"==d.nodeName&&(c=d.getAttribute("href")||"",l.selectNode(d));var n=l.cellEditor.saveSelection();f.showLinkDialog(c,mxResources.get("apply"),
+mxUtils.bind(this,function(b){l.cellEditor.restoreSelection(n);null!=b&&l.insertLink(b)}))}else l.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=q;this.addAction("autosize",function(){var b=l.getSelectionCells();if(null!=b){l.getModel().beginUpdate();try{for(var d=0;d<b.length;d++){var c=b[d];0<l.getModel().getChildCount(c)?l.updateGroupBounds([c],0,!0):l.updateCellSize(c)}}finally{l.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("snapToGrid",
+function(){l.snapCellsToGrid(l.getSelectionCells(),l.gridSize)});this.addAction("formattedText",function(){l.stopEditing();var b=l.getCommonStyle(l.getSelectionCells()),b="1"==mxUtils.getValue(b,"html","0")?null:"1";l.getModel().beginUpdate();try{for(var d=l.getEditableCells(l.getSelectionCells()),c=0;c<d.length;c++)if(state=l.getView().getState(d[c]),null!=state){var e=mxUtils.getValue(state.style,"html","0");if("1"==e&&null==b){var k=l.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,
+"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var n=document.createElement("div");n.innerHTML=l.sanitizeHtml(k);k=mxUtils.extractTextWithWhitespace(n.childNodes);l.cellLabelChanged(state.cell,k);l.setCellStyles("html",b,[d[c]])}else"0"==e&&"1"==b&&(k=mxUtils.htmlEntities(l.convertValueToString(state.cell),!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),l.cellLabelChanged(state.cell,l.sanitizeHtml(k)),l.setCellStyles("html",b,[d[c]]))}f.fireEvent(new mxEventObject("styleChanged",
+"keys",["html"],"values",[null!=b?b:"0"],"cells",d))}finally{l.getModel().endUpdate()}});this.addAction("wordWrap",function(){var b=l.getView().getState(l.getSelectionCell()),d="wrap";l.stopEditing();null!=b&&"wrap"==b.style[mxConstants.STYLE_WHITE_SPACE]&&(d=null);l.setCellStyles(mxConstants.STYLE_WHITE_SPACE,d)});this.addAction("rotation",function(){var b="0",d=l.getView().getState(l.getSelectionCell());null!=d&&(b=d.style[mxConstants.STYLE_ROTATION]||b);b=new FilenameDialog(f,b,mxResources.get("apply"),
+function(b){null!=b&&0<b.length&&l.setCellStyles(mxConstants.STYLE_ROTATION,b)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");f.showDialog(b.container,375,80,!0,!0);b.init()});this.addAction("resetView",function(){l.zoomTo(1);f.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",function(b){l.isFastZoomEnabled()?l.lazyZoom(!0,!0,f.buttonZoomDelay):l.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(b){l.isFastZoomEnabled()?
+l.lazyZoom(!1,!0,f.buttonZoomDelay):l.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var b=l.isSelectionEmpty()?l.getGraphBounds():l.getBoundingBox(l.getSelectionCells()),d=l.view.translate,c=l.view.scale;b.x=b.x/c-d.x;b.y=b.y/c-d.y;b.width/=c;b.height/=c;null!=l.backgroundImage&&(b=mxRectangle.fromRectangle(b),b.add(new mxRectangle(0,0,l.backgroundImage.width,l.backgroundImage.height)));0==b.width||0==b.height?(l.zoomTo(1),f.resetScrollbars()):
+(d=Editor.fitWindowBorders,null!=d&&(b.x-=d.x,b.y-=d.y,b.width+=d.width+d.x,b.height+=d.height+d.y),l.fitWindow(b))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();var b=l.pageFormat,d=l.pageScale;l.zoomTo(Math.floor(20*Math.min((l.container.clientWidth-10)/b.width/d,(l.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(l.container)&&(b=l.getPagePadding(),l.container.scrollTop=b.y*l.view.scale-1,
+l.container.scrollLeft=Math.min(b.x*l.view.scale,(l.container.scrollWidth-l.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();var b=l.pageFormat,d=l.pageScale;l.zoomTo(Math.floor(20*Math.min((l.container.clientWidth-10)/(2*b.width)/d,(l.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(l.container)&&(b=l.getPagePadding(),l.container.scrollTop=Math.min(b.y,(l.container.scrollHeight-
+l.container.clientHeight)/2),l.container.scrollLeft=Math.min(b.x,(l.container.scrollWidth-l.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){l.pageVisible||this.get("pageView").funct();l.zoomTo(Math.floor(20*(l.container.clientWidth-10)/l.pageFormat.width/l.pageScale)/20);if(mxUtils.hasScrollbars(l.container)){var b=l.getPagePadding();l.container.scrollLeft=Math.min(b.x*l.view.scale,(l.container.scrollWidth-l.container.clientWidth)/
+2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*l.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&l.zoomTo(b/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,
+parseInt(100*l.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&(b=new ChangePageSetup(f,null,null,null,b/100),b.ignoreColor=!0,b.ignoreImage=!0,l.model.execute(b))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}));var d=null,d=this.addAction("grid",function(){l.setGridEnabled(!l.isGridEnabled());l.defaultGridEnabled=l.isGridEnabled();f.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+
+"+Shift+G");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.isGridEnabled()});d.setEnabled(!1);d=this.addAction("guides",function(){l.graphHandler.guidesEnabled=!l.graphHandler.guidesEnabled;f.fireEvent(new mxEventObject("guidesEnabledChanged"))});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.graphHandler.guidesEnabled});d.setEnabled(!1);d=this.addAction("tooltips",function(){l.tooltipHandler.setEnabled(!l.tooltipHandler.isEnabled());f.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});
+d.setToggleAction(!0);d.setSelectedCallback(function(){return l.tooltipHandler.isEnabled()});d=this.addAction("collapseExpand",function(){var b=new ChangePageSetup(f);b.ignoreColor=!0;b.ignoreImage=!0;b.foldingEnabled=!l.foldingEnabled;l.model.execute(b)});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.foldingEnabled});d.isEnabled=q;d=this.addAction("scrollbars",function(){f.setScrollbars(!f.hasScrollbars())});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.scrollbars});
+d=this.addAction("pageView",mxUtils.bind(this,function(){f.setPageVisible(!l.pageVisible)}));d.setToggleAction(!0);d.setSelectedCallback(function(){return l.pageVisible});d=this.addAction("connectionArrows",function(){l.connectionArrowsEnabled=!l.connectionArrowsEnabled;f.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionArrowsEnabled});d=this.addAction("connectionPoints",function(){l.setConnectable(!l.connectionHandler.isEnabled());
+f.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionHandler.isEnabled()});d=this.addAction("copyConnect",function(){l.connectionHandler.setCreateTarget(!l.connectionHandler.isCreateTarget());f.fireEvent(new mxEventObject("copyConnectChanged"))});d.setToggleAction(!0);d.setSelectedCallback(function(){return l.connectionHandler.isCreateTarget()});d.isEnabled=q;d=this.addAction("autosave",function(){f.editor.setAutosave(!f.editor.autosave)});
+d.setToggleAction(!0);d.setSelectedCallback(function(){return f.editor.autosave});d.isEnabled=q;d.visible=!1;this.addAction("help",function(){var b="";mxResources.isLanguageSupported(mxClient.language)&&(b="_"+mxClient.language);l.openLink(RESOURCES_PATH+"/help"+b+".html")});var k=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){k||(f.showDialog((new AboutDialog(f)).container,320,280,!0,!0,function(){k=!1}),k=!0)}));d=mxUtils.bind(this,function(b,d,c,e){return this.addAction(b,
+function(){if(null!=c&&l.cellEditor.isContentEditing())c();else{l.stopEditing(!1);l.getModel().beginUpdate();try{var b=l.getEditableCells(l.getSelectionCells());l.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,d,b);(d&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?l.updateLabelElements(b,function(b){b.style.fontWeight=null;"B"==b.nodeName&&l.replaceElement(b)}):(d&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?l.updateLabelElements(b,function(b){b.style.fontStyle=null;"I"==b.nodeName&&l.replaceElement(b)}):
+(d&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&l.updateLabelElements(b,function(b){b.style.textDecoration=null;"U"==b.nodeName&&l.replaceElement(b)});for(var g=0;g<b.length;g++)0==l.model.getChildCount(b[g])&&l.autoSizeCell(b[g],!1)}finally{l.getModel().endUpdate()}}},null,null,e)});d("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");d("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");
+d("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){f.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){f.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){f.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){f.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)});
+this.addAction("backgroundColor...",function(){f.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){f.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){f.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,!0)});this.addAction("shadow",function(){f.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,
+null),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("dashed",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,"1"),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,
+mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("dotted",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_DASHED,"1"),l.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("sharp",
+function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),l.setCellStyles(mxConstants.STYLE_CURVED,"0"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("rounded",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),l.setCellStyles(mxConstants.STYLE_CURVED,"0"),f.fireEvent(new mxEventObject("styleChanged",
+"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!l.isSelectionEmpty()&&l.isEnabled()){l.getModel().beginUpdate();try{var b=l.getSelectionCells(),d=l.getCurrentCellStyle(b[0]),c="1"==mxUtils.getValue(d,mxConstants.STYLE_ROUNDED,"0")?"0":"1";l.setCellStyles(mxConstants.STYLE_ROUNDED,c);l.setCellStyles(mxConstants.STYLE_CURVED,null);f.fireEvent(new mxEventObject("styleChanged",
+"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[c,"0"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}}});this.addAction("curved",function(){l.getModel().beginUpdate();try{l.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),l.setCellStyles(mxConstants.STYLE_CURVED,"1"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}});this.addAction("collapsible",
+function(){var b=l.view.getState(l.getSelectionCell()),d="1";null!=b&&null!=l.getFoldingImage(b)&&(d="0");l.setCellStyles("collapsible",d);f.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[d],"cells",l.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var b=l.getEditableCells(l.getSelectionCells());if(null!=b&&0<b.length){var d=l.getModel(),d=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",d.getStyle(b[0])||"",function(d){null!=
+d&&l.setCellStyle(mxUtils.trim(d),b)},null,null,400,220);this.editorUi.showDialog(d.container,420,300,!0,!0);d.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){l.isEnabled()&&!l.isSelectionEmpty()&&f.setDefaultStyle(l.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){l.isEnabled()&&f.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var b=l.getSelectionCell();
+if(null!=b&&l.getModel().isEdge(b)){var d=n.graph.selectionCellsHandler.getHandler(b);if(d instanceof mxEdgeHandler){for(var c=l.view.translate,e=l.view.scale,k=c.x,c=c.y,b=l.getModel().getParent(b),f=l.getCellGeometry(b);l.getModel().isVertex(b)&&null!=f;)k+=f.x,c+=f.y,b=l.getModel().getParent(b),f=l.getCellGeometry(b);k=Math.round(l.snap(l.popupMenuHandler.triggerX/e-k));e=Math.round(l.snap(l.popupMenuHandler.triggerY/e-c));d.addPointAt(d.state,k,e)}}});this.addAction("removeWaypoint",function(){var b=
+f.actions.get("removeWaypoint");null!=b.handler&&b.handler.removePoint(b.handler.state,b.index)});this.addAction("clearWaypoints",function(b,d){b=null!=d?d:b;var c=l.getSelectionCells();if(null!=c){c=l.getEditableCells(l.addAllEdges(c));l.getModel().beginUpdate();try{for(var g=0;g<c.length;g++){var e=c[g];if(l.getModel().isEdge(e)){var k=l.getCellGeometry(e);null!=d&&mxEvent.isShiftDown(b)?(l.setCellStyles(mxConstants.STYLE_EXIT_X,null,[e]),l.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[e]),l.setCellStyles(mxConstants.STYLE_ENTRY_X,
+null,[e]),l.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[e])):null!=k&&(k=k.clone(),k.points=null,k.x=0,k.y=0,k.offset=null,l.getModel().setGeometry(e,k))}}}finally{l.getModel().endUpdate()}}},null,null,"Alt+Shift+C");d=this.addAction("subscript",mxUtils.bind(this,function(){l.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");d=this.addAction("superscript",mxUtils.bind(this,function(){l.cellEditor.isContentEditing()&&document.execCommand("superscript",
+!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())){var b=mxResources.get("image")+" ("+mxResources.get("url")+"):",d=l.getView().getState(l.getSelectionCell()),c="",k=null;null!=d&&(c=d.style[mxConstants.STYLE_IMAGE]||c,k=d.style[mxConstants.STYLE_CLIP_PATH]||k);var n=l.cellEditor.saveSelection();f.showImageDialog(b,c,function(b,d,c,g,k,f){if(l.cellEditor.isContentEditing())l.cellEditor.restoreSelection(n),l.insertImage(b,
+d,c);else{var m=l.getSelectionCells();if(null!=b&&(0<b.length||0<m.length)){var p=null;l.getModel().beginUpdate();try{if(0==m.length){var m=[l.insertVertex(l.getDefaultParent(),null,"",0,0,d,c,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],v=l.getCenterInsertPoint(l.getBoundingBoxFromGeometry(m,!0));m[0].geometry.x=v.x;m[0].geometry.y=v.y;p=m;l.fireEvent(new mxEventObject("cellsInserted","cells",p))}l.setCellStyles(mxConstants.STYLE_IMAGE,0<b.length?b:null,
+m);var t=l.getCurrentCellStyle(m[0]);"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?l.setCellStyles(mxConstants.STYLE_SHAPE,"image",m):0==b.length&&l.setCellStyles(mxConstants.STYLE_SHAPE,null,m);if(1==l.getSelectionCount()&&null!=d&&null!=c){var u=m[0],y=l.getModel().getGeometry(u);null!=y&&(y=y.clone(),y.width=d,y.height=c,l.getModel().setGeometry(u,y));null!=g?e(u,g,k,f,l):l.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,m)}}finally{l.getModel().endUpdate()}null!=p&&(l.setSelectionCells(p),
+l.scrollCellToVisible(p[0]))}}},l.cellEditor.isContentEditing(),!l.cellEditor.isContentEditing(),!0,k)}}).isEnabled=q;this.addAction("crop...",function(){var b=l.getSelectionCell();if(l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&null!=b){var d=l.getCurrentCellStyle(b),c=d[mxConstants.STYLE_IMAGE],k=d[mxConstants.STYLE_SHAPE];c&&"image"==k&&(d=new CropImageDialog(f,c,d[mxConstants.STYLE_CLIP_PATH],function(d,c,g){e(b,d,c,g,l)}),f.showDialog(d.container,300,380,!0,!0))}}).isEnabled=q;d=this.addAction("layers",
+mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(f,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){f.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),this.layersWindow.window.addListener("hide",function(){f.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),f.fireEvent(new mxEventObject("layers")),this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),
null,null,Editor.ctrlKey+"+Shift+L");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));d=this.addAction("formatPanel",mxUtils.bind(this,function(){f.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return 0<f.formatWidth}));d=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=
new OutlineWindow(f,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){f.fireEvent(new mxEventObject("outline"));this.outlineWindow.window.fit()})),this.outlineWindow.window.addListener("hide",function(){f.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),f.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+
"+Shift+O");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))};Actions.prototype.addAction=function(b,c,e,f,n){var l;"..."==b.substring(b.length-3)?(b=b.substring(0,b.length-3),l=mxResources.get(b)+"..."):l=mxResources.get(b);return this.put(b,new Action(l,c,e,f,n))};Actions.prototype.put=function(b,c){return this.actions[b]=c};Actions.prototype.get=function(b){return this.actions[b]};
@@ -3159,31 +3164,31 @@ IMAGE_PATH+"/img-lo-res.png";Editor.cameraImage="data:image/svg+xml;base64,PHN2Z
Editor.tagsImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE4cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48Zz48cGF0aCBkPSJNMjEuNDEsMTEuNDFsLTguODMtOC44M0MxMi4yMSwyLjIxLDExLjcsMiwxMS4xNywySDRDMi45LDIsMiwyLjksMiw0djcuMTdjMCwwLjUzLDAuMjEsMS4wNCwwLjU5LDEuNDFsOC44Myw4LjgzIGMwLjc4LDAuNzgsMi4wNSwwLjc4LDIuODMsMGw3LjE3LTcuMTdDMjIuMiwxMy40NiwyMi4yLDEyLjIsMjEuNDEsMTEuNDF6IE0xMi44MywyMEw0LDExLjE3VjRoNy4xN0wyMCwxMi44M0wxMi44MywyMHoiLz48Y2lyY2xlIGN4PSI2LjUiIGN5PSI2LjUiIHI9IjEuNSIvPjwvZz48L2c+PC9zdmc+";
Editor.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');Editor.errorImage="data:image/gif;base64,R0lGODlhEAAQAPcAAADGAIQAAISEhP8AAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEAAAAALAAAAAAQABAAAAhoAAEIFBigYMGBCAkGGMCQ4cGECxtKHBAAYUQCEzFSHLiQgMeGHjEGEAAg4oCQJz86LCkxpEqHAkwyRClxpEyXGmGaREmTIsmOL1GO/DkzI0yOE2sKIMlRJsWhCQHENDiUaVSpS5cmDAgAOw==";
Editor.configurationKey=".configuration";Editor.settingsKey=".drawio-config";Editor.defaultCustomLibraries=[];Editor.enableCustomLibraries=!0;Editor.enableCustomProperties=!0;Editor.defaultIncludeDiagram=!0;Editor.enableServiceWorker="0"!=urlParams.pwa&&"serviceWorker"in navigator&&("1"==urlParams.offline||/.*\.diagrams\.net$/.test(window.location.hostname)||/.*\.draw\.io$/.test(window.location.hostname));Editor.enableWebFonts="1"!=urlParams["safe-style-src"];Editor.enableShadowOption=!mxClient.IS_SF;
-Editor.enableExportUrl=!0;Editor.compressXml=!0;Editor.oneDriveInlinePicker=null!=window.urlParams&&"0"==window.urlParams.inlinePicker?!1:!0;Editor.globalVars=null;Editor.config=null;Editor.configVersion=null;Editor.defaultBorder=5;Editor.commonProperties=[{name:"comic",dispName:"Comic",type:"bool",defVal:!1,isVisible:function(b,d){return"1"!=mxUtils.getValue(b.style,"sketch","0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,
-"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"fillWeight",dispName:"Fill Weight",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureGap",dispName:"Hachure Gap",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureAngle",dispName:"Hachure Angle",type:"int",defVal:-41,isVisible:function(b,
-d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"curveFitting",dispName:"Curve Fitting",type:"float",defVal:.95,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"simplification",dispName:"Simplification",type:"float",defVal:0,min:0,max:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStroke",dispName:"Disable Multi Stroke",type:"bool",
-defVal:!1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStrokeFill",dispName:"Disable Multi Stroke Fill",type:"bool",defVal:!1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"dashOffset",dispName:"Dash Offset",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"dashGap",dispName:"Dash Gap",
-type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"zigzagOffset",dispName:"ZigZag Offset",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"sketchStyle",
-dispName:"Sketch Style",type:"enum",defVal:"rough",enumList:[{val:"rough",dispName:"Rough"},{val:"comic",dispName:"Comic"}],isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}}];Editor.commonEdgeProperties=[{type:"separator"},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"sourcePortConstraint",dispName:"Source 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:"targetPortConstraint",dispName:"Target 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:"jettySize",dispName:"Jetty Size",type:"int",min:0,defVal:"auto",allowAuto:!0,isVisible:function(b){return"orthogonalEdgeStyle"==mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,
-null)}},{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"startFill",dispName:"Start Fill",type:"bool",defVal:!0},{name:"endFill",dispName:"End Fill",type:"bool",defVal:!0},{name:"perimeterSpacing",dispName:"Terminal Spacing",type:"float",defVal:0},{name:"anchorPointDirection",dispName:"Anchor Direction",type:"bool",defVal:!0},{name:"snapToPoint",dispName:"Snap to Point",type:"bool",
-defVal:!1},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!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:"bendable",dispName:"Bendable",type:"bool",defVal:!0},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",
-defVal:!0},{name:"noJump",dispName:"No Jumps",type:"bool",defVal:!1},{name:"flowAnimation",dispName:"Flow Animation",type:"bool",defVal:!1},{name:"ignoreEdge",dispName:"Ignore Edge",type:"bool",defVal:!1},{name:"orthogonalLoop",dispName:"Loop Routing",type:"bool",defVal:!1},{name:"orthogonal",dispName:"Orthogonal",type:"bool",defVal:!1}].concat(Editor.commonProperties);Editor.commonVertexProperties=[{name:"colspan",dispName:"Colspan",type:"int",min:1,defVal:1,isVisible:function(b,d){var c=d.editorUi.editor.graph;
-return 1==b.vertices.length&&0==b.edges.length&&c.isTableCell(b.vertices[0])}},{name:"rowspan",dispName:"Rowspan",type:"int",min:1,defVal:1,isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTableCell(b.vertices[0])}},{type:"separator"},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",getDefaultValue:function(b,d){var c=d.editorUi.editor.graph.getCellStyle(1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(c,
-"resizeLastRow","0")},isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTable(b.vertices[0])}},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",getDefaultValue:function(b,d){var c=d.editorUi.editor.graph.getCellStyle(1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(c,"resizeLast","0")},isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTable(b.vertices[0])}},
-{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"overflow",dispName:"Text Overflow",defVal:"visible",type:"enum",enumList:[{val:"visible",dispName:"Visible"},{val:"hidden",dispName:"Hidden"},{val:"block",dispName:"Block"},{val:"fill",dispName:"Fill"},{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(b,d){return d.editorUi.editor.graph.isCellConnectable(0<b.vertices.length&&0==b.edges.length?b.vertices[0]:null)},isVisible:function(b,d){return 0<b.vertices.length&&0==b.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(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:
-null,g=d.editorUi.editor.graph;return null!=c&&(g.isSwimlane(c)||0<g.model.getChildCount(c))},isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null,g=d.editorUi.editor.graph;return null!=c&&(g.isContainer(c)&&"0"!=b.style.collapsible||!g.isContainer(c)&&"1"==b.style.collapsible)},isVisible:function(b,d){return 1==b.vertices.length&&
-0==b.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length&&!d.editorUi.editor.graph.isSwimlane(b.vertices[0])&&null==mxUtils.getValue(b.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(b,d){var c=d.editorUi.editor.graph.model;return 0<b.vertices.length?c.isVertex(c.getParent(b.vertices[0])):
-!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"enumerate",dispName:"Enumerate",type:"bool",defVal:!1,onChange:function(b){b.refresh()}},{name:"enumerateValue",dispName:"Enumerate Value",type:"string",defVal:"",isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"enumerate","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(b,d){var c=0<b.vertices.length?d.editorUi.editor.graph.getCellGeometry(b.vertices[0]):null;return null!=c&&!c.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(b,d){var c=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null);return d.editorUi.editor.graph.isSwimlane(b.vertices[0])||null==c||c==mxConstants.NONE||0==mxUtils.getValue(b.style,mxConstants.STYLE_FILL_OPACITY,
-100)||0==mxUtils.getValue(b.style,mxConstants.STYLE_OPACITY,100)||null!=b.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(b,d){return 0<b.vertices.length&&d.editorUi.editor.graph.isContainer(b.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## 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## 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 or a JSON string as used in Layout, Apply.\n## 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(b){var d=rough.canvas({getContext:function(){return b}});d.draw=function(d){var c=d.sets||[];d=d.options||this.getDefaultOptions();for(var g=0;g<c.length;g++){var e=c[g];switch(e.type){case "path":null!=d.stroke&&this._drawToContext(b,e,d);break;case "fillPath":this._drawToContext(b,e,d);break;case "fillSketch":this.fillSketch(b,e,d)}}};d.fillSketch=function(d,c,g){var e=b.state.strokeColor,k=b.state.strokeWidth,f=b.state.strokeAlpha,m=b.state.dashed,l=g.fillWeight;
-0>l&&(l=g.strokeWidth/2);b.setStrokeAlpha(b.state.fillAlpha);b.setStrokeColor(g.fill||"");b.setStrokeWidth(l);b.setDashed(!1);this._drawToContext(d,c,g);b.setDashed(m);b.setStrokeWidth(k);b.setStrokeColor(e);b.setStrokeAlpha(f)};d._drawToContext=function(b,d,c){b.begin();for(var g=0;g<d.ops.length;g++){var e=d.ops[g],k=e.data;switch(e.op){case "move":b.moveTo(k[0],k[1]);break;case "bcurveTo":b.curveTo(k[0],k[1],k[2],k[3],k[4],k[5]);break;case "lineTo":b.lineTo(k[0],k[1])}}b.end();"fillPath"===d.type&&
+Editor.enableExportUrl=!0;Editor.compressXml=!0;Editor.oneDriveInlinePicker=null!=window.urlParams&&"0"==window.urlParams.inlinePicker?!1:!0;Editor.globalVars=null;Editor.config=null;Editor.configVersion=null;Editor.defaultBorder=5;Editor.commonProperties=[{name:"enumerate",dispName:"Enumerate",type:"bool",defVal:!1,onChange:function(b){b.refresh()}},{name:"enumerateValue",dispName:"Enumerate Value",type:"string",defVal:"",isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"enumerate","0")}},
+{name:"comic",dispName:"Comic",type:"bool",defVal:!1,isVisible:function(b,d){return"1"!=mxUtils.getValue(b.style,"sketch","0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"fillWeight",dispName:"Fill Weight",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureGap",
+dispName:"Hachure Gap",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"hachureAngle",dispName:"Hachure Angle",type:"int",defVal:-41,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"curveFitting",dispName:"Curve Fitting",type:"float",defVal:.95,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"simplification",
+dispName:"Simplification",type:"float",defVal:0,min:0,max:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStroke",dispName:"Disable Multi Stroke",type:"bool",defVal:!1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"disableMultiStrokeFill",dispName:"Disable Multi Stroke Fill",type:"bool",defVal:!1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch",
+"1"==urlParams.rough?"1":"0")}},{name:"dashOffset",dispName:"Dash Offset",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"dashGap",dispName:"Dash Gap",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"zigzagOffset",dispName:"ZigZag Offset",type:"int",defVal:-1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?
+"1":"0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"comic","0")||"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"sketchStyle",dispName:"Sketch Style",type:"enum",defVal:"rough",enumList:[{val:"rough",dispName:"Rough"},{val:"comic",dispName:"Comic"}],isVisible:function(b,d){return"1"==mxUtils.getValue(b.style,"sketch","1"==urlParams.rough?"1":"0")}}];Editor.commonEdgeProperties=[{type:"separator"},
+{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"sourcePortConstraint",dispName:"Source 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:"targetPortConstraint",dispName:"Target 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:"jettySize",dispName:"Jetty Size",type:"int",min:0,defVal:"auto",allowAuto:!0,isVisible:function(b){return"orthogonalEdgeStyle"==mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,null)}},{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"startFill",dispName:"Start Fill",type:"bool",defVal:!0},{name:"endFill",dispName:"End Fill",
+type:"bool",defVal:!0},{name:"perimeterSpacing",dispName:"Terminal Spacing",type:"float",defVal:0},{name:"anchorPointDirection",dispName:"Anchor Direction",type:"bool",defVal:!0},{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!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:"bendable",dispName:"Bendable",type:"bool",defVal:!0},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"noJump",dispName:"No Jumps",type:"bool",defVal:!1},{name:"flowAnimation",dispName:"Flow Animation",type:"bool",defVal:!1},{name:"ignoreEdge",dispName:"Ignore Edge",type:"bool",defVal:!1},{name:"orthogonalLoop",dispName:"Loop Routing",type:"bool",defVal:!1},
+{name:"orthogonal",dispName:"Orthogonal",type:"bool",defVal:!1}].concat(Editor.commonProperties);Editor.commonVertexProperties=[{name:"colspan",dispName:"Colspan",type:"int",min:1,defVal:1,isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTableCell(b.vertices[0])}},{name:"rowspan",dispName:"Rowspan",type:"int",min:1,defVal:1,isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTableCell(b.vertices[0])}},
+{type:"separator"},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",getDefaultValue:function(b,d){var c=d.editorUi.editor.graph.getCellStyle(1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(c,"resizeLastRow","0")},isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTable(b.vertices[0])}},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",getDefaultValue:function(b,d){var c=d.editorUi.editor.graph.getCellStyle(1==
+b.vertices.length&&0==b.edges.length?b.vertices[0]:null);return"1"==mxUtils.getValue(c,"resizeLast","0")},isVisible:function(b,d){var c=d.editorUi.editor.graph;return 1==b.vertices.length&&0==b.edges.length&&c.isTable(b.vertices[0])}},{name:"fillOpacity",dispName:"Fill Opacity",type:"int",min:0,max:100,defVal:100},{name:"strokeOpacity",dispName:"Stroke Opacity",type:"int",min:0,max:100,defVal:100},{name:"overflow",dispName:"Text Overflow",defVal:"visible",type:"enum",enumList:[{val:"visible",dispName:"Visible"},
+{val:"hidden",dispName:"Hidden"},{val:"block",dispName:"Block"},{val:"fill",dispName:"Fill"},{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(b,d){return d.editorUi.editor.graph.isCellConnectable(0<b.vertices.length&&0==b.edges.length?b.vertices[0]:null)},isVisible:function(b,d){return 0<b.vertices.length&&
+0==b.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(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null,g=d.editorUi.editor.graph;return null!=c&&(g.isSwimlane(c)||0<g.model.getChildCount(c))},isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&
+0==b.edges.length?b.vertices[0]:null,g=d.editorUi.editor.graph;return null!=c&&(g.isContainer(c)&&"0"!=b.style.collapsible||!g.isContainer(c)&&"1"==b.style.collapsible)},isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length&&!d.editorUi.editor.graph.isSwimlane(b.vertices[0])&&null==mxUtils.getValue(b.style,"childLayout",null)}},{name:"expand",
+dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(b,d){var c=d.editorUi.editor.graph.model;return 0<b.vertices.length?c.isVertex(c.getParent(b.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(b,d){var c=0<b.vertices.length?d.editorUi.editor.graph.getCellGeometry(b.vertices[0]):null;return null!=c&&!c.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(b,d){var c=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null);return d.editorUi.editor.graph.isSwimlane(b.vertices[0])||null==c||c==mxConstants.NONE||0==mxUtils.getValue(b.style,mxConstants.STYLE_FILL_OPACITY,100)||
+0==mxUtils.getValue(b.style,mxConstants.STYLE_OPACITY,100)||null!=b.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(b,d){return 0<b.vertices.length&&d.editorUi.editor.graph.isContainer(b.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## 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## 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 or a JSON string as used in Layout, Apply.\n## 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(b){var d=rough.canvas({getContext:function(){return b}});d.draw=function(d){var c=d.sets||[];d=d.options||this.getDefaultOptions();for(var g=0;g<c.length;g++){var e=c[g];switch(e.type){case "path":null!=d.stroke&&this._drawToContext(b,e,d);break;case "fillPath":this._drawToContext(b,e,d);break;case "fillSketch":this.fillSketch(b,e,d)}}};d.fillSketch=function(d,c,g){var e=b.state.strokeColor,k=b.state.strokeWidth,f=b.state.strokeAlpha,l=b.state.dashed,m=g.fillWeight;
+0>m&&(m=g.strokeWidth/2);b.setStrokeAlpha(b.state.fillAlpha);b.setStrokeColor(g.fill||"");b.setStrokeWidth(m);b.setDashed(!1);this._drawToContext(d,c,g);b.setDashed(l);b.setStrokeWidth(k);b.setStrokeColor(e);b.setStrokeAlpha(f)};d._drawToContext=function(b,d,c){b.begin();for(var g=0;g<d.ops.length;g++){var e=d.ops[g],k=e.data;switch(e.op){case "move":b.moveTo(k[0],k[1]);break;case "bcurveTo":b.curveTo(k[0],k[1],k[2],k[3],k[4],k[5]);break;case "lineTo":b.lineTo(k[0],k[1])}}b.end();"fillPath"===d.type&&
c.filled?b.fill():b.stroke()};return d};(function(){function b(d,c,g){this.canvas=d;this.rc=c;this.shape=g;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,b.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,b.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,b.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
mxUtils.bind(this,b.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,b.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,b.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,b.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,b.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
b.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,b.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,b.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,b.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,b.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,b.prototype.fillAndStroke);
@@ -3223,7 +3228,7 @@ null!=d.parentNode){var c=document.createElement("style");c.setAttribute("type",
null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(d){d=null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var c=d.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],g=c.getElementsByTagName("div");null!=g&&0<g.length&&(c=g[0]);throw{message:mxUtils.getTextContent(c)};}if("mxGraphModel"==d.nodeName){c=d.getAttribute("style")||
"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),null!=g&&(e=new mxCodec(g.ownerDocument),e.decode(g,this.graph.getStylesheet())));else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var e=new mxCodec(g.ownerDocument);e.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=
c;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");c=d.getAttribute("backgroundImage");null!=c?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(c)):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),
-!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),g=0;g<c.length;g++)this.graph.addExtFont(c[g].name,c[g].url)}catch(ca){console.log("ExtFonts format error: "+ca.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=
+!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),g=0;g<c.length;g++)this.graph.addExtFont(c[g].name,c[g].url)}catch(da){console.log("ExtFonts format error: "+da.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=
function(b,d){b=null!=b?b:!0;var g=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&g.setAttribute("style",this.graph.currentStyle);var e=this.graph.getBackgroundImageObject(this.graph.backgroundImage,d);null!=e&&g.setAttribute("backgroundImage",JSON.stringify(e));g.setAttribute("math",this.graph.mathEnabled?"1":"0");g.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(e=this.graph.extFonts.map(function(b){return b.name+
"^"+b.url}),g.setAttribute("extFonts",e.join("|")));return g};Editor.prototype.isDataSvg=function(b){try{var d=mxUtils.parseXml(b).documentElement.getAttribute("content");if(null!=d&&(null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var c=mxUtils.parseXml(d).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(W){}return!1};Editor.prototype.extractGraphModel=
function(b,d,c){return Editor.extractGraphModel.apply(this,arguments)};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};
@@ -3231,17 +3236,17 @@ var f=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphCompone
Editor.initMath=function(b,d){if("undefined"===typeof window.MathJax){b=(null!=b?b:DRAW_MATH_URL+"/MathJax.js")+"?config=TeX-MML-AM_"+("html"==urlParams["math-output"]?"HTMLorMML":"SVG")+"-full";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(b){window.setTimeout(function(){"hidden"!=b.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,b])},0)};var c=null!=urlParams["math-font"]?decodeURIComponent(urlParams["math-font"]):"TeX";d=null!=d?d:{"HTML-CSS":{availableFonts:[c],imageFont:null},
SVG:{font:c,useFontCache:!1},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(d);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};
Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var g=Editor.prototype.init;Editor.prototype.init=function(){g.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,d){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var e=document.createElement("script");e.setAttribute("type","text/javascript");e.setAttribute("src",
-b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var k=document.createElement("style");k.type="text/css";k.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(k)}}catch(da){}}};Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;
+b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var k=document.createElement("style");k.type="text/css";k.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(k)}}catch(ea){}}};Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;
var d=[];b.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(b,c,g,e){void 0!==c?d.push(c.replace(/\\'/g,"'")):void 0!==g?d.push(g.replace(/\\"/g,'"')):void 0!==e&&d.push(e);return""});/,\s*$/.test(b)&&d.push("");return d};Editor.prototype.isCorsEnabledForUrl=function(b){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||b.substring(0,window.location.origin.length)==window.location.origin)return!0;null!=urlParams.cors&&
null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(b)||"https://raw.githubusercontent.com/"===b.substring(0,34)};Editor.prototype.createImageUrlConverter=function(){var b=new mxUrlConverter;b.updateBaseUrl();var d=b.convert,c=this;b.convert=function(g){if(null!=g){var e="http://"==g.substring(0,7)||"https://"==g.substring(0,8);e&&!navigator.onLine?g=Editor.svgBrokenImage.src:!e||g.substring(0,b.baseUrl.length)==
b.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(g)?"chrome-extension://"==g.substring(0,19)||mxClient.IS_CHROMEAPP||(g=d.apply(this,arguments)):g=PROXY_URL+"?url="+encodeURIComponent(g)}return g};return b};Editor.createSvgDataUri=function(b){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(b)))};Editor.prototype.convertImageToDataUri=function(b,d){try{var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;d(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(b))mxUtils.get(b,
mxUtils.bind(this,function(b){window.clearTimeout(g);c&&d(Editor.createSvgDataUri(b.getText()))}),function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)});else{var e=new Image;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(g);if(c)try{var b=document.createElement("canvas"),k=b.getContext("2d");b.height=e.height;b.width=e.width;k.drawImage(e,0,0);d(b.toDataURL())}catch(ta){d(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(g);
c&&d(Editor.svgBrokenImage.src)};e.src=b}}catch(aa){d(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,d,c,g){null==g&&(g=this.createImageUrlConverter());var e=0,k=c||{};c=mxUtils.bind(this,function(c,f){for(var m=b.getElementsByTagName(c),l=0;l<m.length;l++)mxUtils.bind(this,function(c){try{if(null!=c){var m=g.convert(c.getAttribute(f));if(null!=m&&"data:"!=m.substring(0,5)){var l=k[m];null==l?(e++,this.convertImageToDataUri(m,function(g){null!=g&&(k[m]=g,c.setAttribute(f,g));
-e--;0==e&&d(b)})):c.setAttribute(f,l)}else null!=m&&c.setAttribute(f,m)}}catch(ea){}})(m[l])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,g=b.length,e,k,f;c<g;){e=b.charCodeAt(c++)&255;if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);d+="==";break}k=b.charCodeAt(c++);if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
+e--;0==e&&d(b)})):c.setAttribute(f,l)}else null!=m&&c.setAttribute(f,m)}}catch(fa){}})(m[l])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,g=b.length,e,k,f;c<g;){e=b.charCodeAt(c++)&255;if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);d+="==";break}k=b.charCodeAt(c++);if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);d+="=";break}f=b.charCodeAt(c++);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(f&192)>>6);
d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f&63)}return d};Editor.prototype.loadUrl=function(b,d,c,g,e,k,f,m){try{var l=!f&&(g||/(\.png)($|\?)/i.test(b)||/(\.jpe?g)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.pdf)($|\?)/i.test(b));e=null!=e?e:!0;var p=mxUtils.bind(this,function(){mxUtils.get(b,mxUtils.bind(this,function(b){if(200<=b.getStatus()&&299>=b.getStatus()){if(null!=d){var g=b.getText();if(l){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==
typeof window.mxUtilsBinaryToArray){b=mxUtilsBinaryToArray(b.request.responseBody).toArray();for(var g=Array(b.length),e=0;e<b.length;e++)g[e]=String.fromCharCode(b[e]);g=g.join("")}k=null!=k?k:"data:image/png;base64,";g=k+Editor.base64Encode(g)}d(g)}}else null!=c&&(0==b.getStatus()?c({message:mxResources.get("accessDenied")},b):c({message:mxResources.get("error")+" "+b.getStatus()},b))}),function(b){null!=c&&c({message:mxResources.get("error")+" "+b.getStatus()})},l,this.timeout,function(){e&&null!=
-c&&c({code:App.ERROR_TIMEOUT,retry:p})},m)});p()}catch(na){null!=c&&c(na)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var g=null!=b?b.lastIndexOf("/"):-1;0<=g&&(b=b.substring(0,g+1));var g=document.getElementsByTagName("base"),e=null;null!=g&&0<g.length&&(e=g[0].getAttribute("href"));for(var k=1;k<c.length;k++)if(g=c[k].indexOf(")"),0<g){var f=Editor.trimCssUrl(c[k].substring(0,g));this.graph.isRelativeUrl(f)&&
+c&&c({code:App.ERROR_TIMEOUT,retry:p})},m)});p()}catch(oa){null!=c&&c(oa)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var g=null!=b?b.lastIndexOf("/"):-1;0<=g&&(b=b.substring(0,g+1));var g=document.getElementsByTagName("base"),e=null;null!=g&&0<g.length&&(e=g[0].getAttribute("href"));for(var k=1;k<c.length;k++)if(g=c[k].indexOf(")"),0<g){var f=Editor.trimCssUrl(c[k].substring(0,g));this.graph.isRelativeUrl(f)&&
(f=null!=e?e+f:window.location.protocol+"//"+window.location.hostname+("/"==f.charAt(0)?"":b)+f);d.push('url("'+f+'"'+c[k].substring(g))}else d.push(c[k])}else d=[b]}return null!=d?d.join(""):null};Editor.prototype.embedCssFonts=function(b,d){var c=b.split("url("),g=0;null==this.cachedFonts&&(this.cachedFonts={});var e=mxUtils.bind(this,function(){if(0==g){for(var b=[c[0]],e=1;e<c.length;e++){var k=c[e].indexOf(")");b.push('url("');b.push(this.cachedFonts[Editor.trimCssUrl(c[e].substring(0,k))]);
b.push('"'+c[e].substring(k))}d(b.join(""))}});if(0<c.length){for(var k=1;k<c.length;k++){var f=c[k].indexOf(")"),m=null,l=c[k].indexOf("format(",f);0<l&&(m=Editor.trimCssUrl(c[k].substring(l+7,c[k].indexOf(")",l))));mxUtils.bind(this,function(b){if(null==this.cachedFonts[b]){this.cachedFonts[b]=b;g++;var d="application/x-font-ttf";if("svg"==m||/(\.svg)($|\?)/i.test(b))d="image/svg+xml";else if("otf"==m||"embedded-opentype"==m||/(\.otf)($|\?)/i.test(b))d="application/x-font-opentype";else if("woff"==
m||/(\.woff)($|\?)/i.test(b))d="application/font-woff";else if("woff2"==m||/(\.woff2)($|\?)/i.test(b))d="application/font-woff2";else if("eot"==m||/(\.eot)($|\?)/i.test(b))d="application/vnd.ms-fontobject";else if("sfnt"==m||/(\.sfnt)($|\?)/i.test(b))d="application/font-sfnt";var c=b;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(b));this.loadUrl(c,mxUtils.bind(this,function(d){this.cachedFonts[b]=d;g--;e()}),mxUtils.bind(this,function(b){g--;e()}),!0,
@@ -3249,10 +3254,10 @@ null,"data:"+d+";charset=utf-8;base64,")}})(Editor.trimCssUrl(c[k].substring(0,f
g&&this.embedCssFonts(c,b)}),k=0;k<d.length;k++)mxUtils.bind(this,function(b,d){Graph.isCssFontUrl(d)?null==this.cachedGoogleFonts[d]?(g++,this.loadUrl(d,mxUtils.bind(this,function(b){this.cachedGoogleFonts[d]=b;c+=b;g--;e()}),mxUtils.bind(this,function(b){g--;c+="@import url("+d+");";e()}))):c+=this.cachedGoogleFonts[d]:c+='@font-face {font-family: "'+b+'";src: url("'+d+'")}'})(d[k].name,d[k].url);e()}else b()};Editor.prototype.addMathCss=function(b){b=b.getElementsByTagName("defs");if(null!=b&&
0<b.length)for(var d=document.getElementsByTagName("style"),c=0;c<d.length;c++){var g=mxUtils.getTextContent(d[c]);0>g.indexOf("mxPageSelector")&&0<g.indexOf("MathJax")&&b[0].appendChild(d[c].cloneNode(!0))}};Editor.prototype.addFontCss=function(b,d){d=null!=d?d:this.absoluteCssFonts(this.fontCss);if(null!=d){var c=b.getElementsByTagName("defs"),g=b.ownerDocument;0==c.length?(c=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"defs"):g.createElement("defs"),null!=b.firstChild?b.insertBefore(c,
b.firstChild):b.appendChild(c)):c=c[0];g=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"style"):g.createElement("style");g.setAttribute("type","text/css");mxUtils.setTextContent(g,d);c.appendChild(g)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,d,c){var g=mxClient.IS_FF?8192:16384;return Math.min(c,Math.min(g/b,g/d))};Editor.prototype.exportToCanvas=function(b,d,c,g,e,k,f,m,l,p,v,
-t,n,u,y,z,q,A){try{k=null!=k?k:!0;f=null!=f?f:!0;t=null!=t?t:this.graph;n=null!=n?n:0;var x=l?null:t.background;x==mxConstants.NONE&&(x=null);null==x&&(x=g);null==x&&0==l&&(x=z?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(t.getSvg(null,null,n,u,null,f,null,null,null,p,null,z,q,A),mxUtils.bind(this,function(c){try{var g=new Image;g.onload=mxUtils.bind(this,function(){try{var f=function(){mxClient.IS_SF?window.setTimeout(function(){u.drawImage(g,0,0);b(l,c)},0):(u.drawImage(g,
-0,0),b(l,c))},l=document.createElement("canvas"),p=parseInt(c.getAttribute("width")),v=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=d&&(m=k?Math.min(1,Math.min(3*d/(4*v),d/p)):d/p);m=this.getMaxCanvasScale(p,v,m);p=Math.ceil(m*p);v=Math.ceil(m*v);l.setAttribute("width",p);l.setAttribute("height",v);var u=l.getContext("2d");null!=x&&(u.beginPath(),u.rect(0,0,p,v),u.fillStyle=x,u.fill());1!=m&&u.scale(m,m);if(y){var z=t.view,q=z.scale;z.scale=1;var A=btoa(unescape(encodeURIComponent(z.createSvgGrid(z.gridColor))));
-z.scale=q;var A="data:image/svg+xml;base64,"+A,C=t.gridSize*z.gridSteps*m,K=t.getGraphBounds(),J=z.translate.x*q,da=z.translate.y*q,G=J+(K.x-J)/q-n,O=da+(K.y-da)/q-n,M=new Image;M.onload=function(){try{for(var b=-Math.round(C-mxUtils.mod((J-G)*m,C)),d=-Math.round(C-mxUtils.mod((da-O)*m,C));b<p;b+=C)for(var c=d;c<v;c+=C)u.drawImage(M,b/m,c/m);f()}catch(Fa){null!=e&&e(Fa)}};M.onerror=function(b){null!=e&&e(b)};M.src=A}else f()}catch(za){null!=e&&e(za)}});g.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(c);
-this.graph.mathEnabled&&this.addMathCss(c);var f=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,this.resolvedFontCss),g.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(ha){null!=e&&e(ha)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(f)}catch(pa){null!=e&&e(pa)}}))}catch(ha){null!=e&&e(ha)}}),c,v)}catch(qa){null!=e&&e(qa)}};Editor.crcTable=[];for(var n=0;256>n;n++)for(var l=n,q=0;8>q;q++)l=1==(l&1)?3988292384^
+n,t,u,y,z,q,A){try{k=null!=k?k:!0;f=null!=f?f:!0;n=null!=n?n:this.graph;t=null!=t?t:0;var x=l?null:n.background;x==mxConstants.NONE&&(x=null);null==x&&(x=g);null==x&&0==l&&(x=z?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(n.getSvg(null,null,t,u,null,f,null,null,null,p,null,z,q,A),mxUtils.bind(this,function(c){try{var g=new Image;g.onload=mxUtils.bind(this,function(){try{var f=function(){mxClient.IS_SF?window.setTimeout(function(){u.drawImage(g,0,0);b(l,c)},0):(u.drawImage(g,
+0,0),b(l,c))},l=document.createElement("canvas"),p=parseInt(c.getAttribute("width")),v=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=d&&(m=k?Math.min(1,Math.min(3*d/(4*v),d/p)):d/p);m=this.getMaxCanvasScale(p,v,m);p=Math.ceil(m*p);v=Math.ceil(m*v);l.setAttribute("width",p);l.setAttribute("height",v);var u=l.getContext("2d");null!=x&&(u.beginPath(),u.rect(0,0,p,v),u.fillStyle=x,u.fill());1!=m&&u.scale(m,m);if(y){var z=n.view,q=z.scale;z.scale=1;var A=btoa(unescape(encodeURIComponent(z.createSvgGrid(z.gridColor))));
+z.scale=q;var A="data:image/svg+xml;base64,"+A,C=n.gridSize*z.gridSteps*m,K=n.getGraphBounds(),J=z.translate.x*q,ea=z.translate.y*q,G=J+(K.x-J)/q-t,O=ea+(K.y-ea)/q-t,M=new Image;M.onload=function(){try{for(var b=-Math.round(C-mxUtils.mod((J-G)*m,C)),d=-Math.round(C-mxUtils.mod((ea-O)*m,C));b<p;b+=C)for(var c=d;c<v;c+=C)u.drawImage(M,b/m,c/m);f()}catch(Fa){null!=e&&e(Fa)}};M.onerror=function(b){null!=e&&e(b)};M.src=A}else f()}catch(za){null!=e&&e(za)}});g.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(c);
+this.graph.mathEnabled&&this.addMathCss(c);var f=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,this.resolvedFontCss),g.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(ba){null!=e&&e(ba)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(f)}catch(ma){null!=e&&e(ma)}}))}catch(ba){null!=e&&e(ba)}}),c,v)}catch(qa){null!=e&&e(qa)}};Editor.crcTable=[];for(var n=0;256>n;n++)for(var l=n,q=0;8>q;q++)l=1==(l&1)?3988292384^
l>>>1:l>>>1,Editor.crcTable[n]=l;Editor.updateCRC=function(b,d,c,g){for(var e=0;e<g;e++)b=Editor.crcTable[(b^d.charCodeAt(c+e))&255]^b>>>8;return b};Editor.crc32=function(b){for(var d=-1,c=0;c<b.length;c++)d=d>>>8^Editor.crcTable[(d^b.charCodeAt(c))&255];return(d^-1)>>>0};Editor.writeGraphModelToPng=function(b,d,c,g,e){function k(b,d){var c=l;l+=d;return b.substring(c,l)}function f(b){b=k(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function m(b){return String.fromCharCode(b>>
24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,!0);var l=0;if(k(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(k(b,4),"IHDR"!=k(b,4))null!=e&&e();else{k(b,17);e=b.substring(0,l);do{var p=f(b);if("IDAT"==k(b,4)){e=b.substring(0,l-8);"pHYs"==d&&"dpi"==c?(c=Math.round(g/.0254),c=m(c)+m(c)+String.fromCharCode(1)):c=c+String.fromCharCode(0)+("zTXt"==d?String.fromCharCode(0):"")+g;g=4294967295;g=Editor.updateCRC(g,
d,0,4);g=Editor.updateCRC(g,c,0,c.length);e+=m(c.length)+d+c+m(g^4294967295);e+=b.substring(l-8,b.length);break}e+=b.substring(l-8,l-4+p);k(b,p);k(b,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(b,c){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};
@@ -3287,34 +3292,34 @@ font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#
function(b,d,c){if(null!=d){var g=function(b){if(null!=b)if(c)for(var g=0;g<b.length;g++)d[b[g].name]=b[g];else for(var e in d){for(var k=!1,g=0;g<b.length;g++)if(b[g].name==e&&b[g].type==d[e].type){k=!0;break}k||delete d[e]}},e=this.editorUi.editor.graph.view.getState(b);null!=e&&null!=e.shape&&(e.shape.commonCustomPropAdded||(e.shape.commonCustomPropAdded=!0,e.shape.customProperties=e.shape.customProperties||[],e.cell.vertex?Array.prototype.push.apply(e.shape.customProperties,Editor.commonVertexProperties):
Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),g(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{g(JSON.parse(b))}catch(aa){}}};var u=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.editorUi.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));u.apply(this,arguments);if(Editor.enableCustomProperties){for(var d=
{},c=b.vertices,g=b.edges,e=0;e<c.length;e++)this.findCommonProperties(c[e],d,0==e);for(e=0;e<g.length;e++)this.findCommonProperties(g[e],d,0==c.length&&0==e);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(d).length&&this.container.appendChild(this.addProperties(this.createPanel(),d,b))}};var t=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(b){this.addActions(b,["copyStyle","pasteStyle"]);return t.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=
-!0;StyleFormatPanel.prototype.addProperties=function(b,d,c){function g(b,d,c,g){t.getModel().beginUpdate();try{var e=[],k=[];if(null!=c.index){for(var f=[],m=c.parentRow.nextSibling;m&&m.getAttribute("data-pName")==b;)f.push(m.getAttribute("data-pValue")),m=m.nextSibling;c.index<f.length?null!=g?f.splice(g,1):f[c.index]=d:f.push(d);null!=c.size&&f.length>c.size&&(f=f.slice(0,c.size));d=f.join(",");null!=c.countProperty&&(t.setCellStyles(c.countProperty,f.length,t.getSelectionCells()),e.push(c.countProperty),
-k.push(f.length))}t.setCellStyles(b,d,t.getSelectionCells());e.push(b);k.push(d);if(null!=c.dependentProps)for(b=0;b<c.dependentProps.length;b++){var l=c.dependentPropsDefVal[b],p=c.dependentPropsVals[b];if(p.length>d)p=p.slice(0,d);else for(var x=p.length;x<d;x++)p.push(l);p=p.join(",");t.setCellStyles(c.dependentProps[b],p,t.getSelectionCells());e.push(c.dependentProps[b]);k.push(p)}if("function"==typeof c.onChange)c.onChange(t,d);v.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",
-k,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}function e(d,c,g){var e=mxUtils.getOffset(b,!0),k=mxUtils.getOffset(d,!0);c.style.position="absolute";c.style.left=k.x-e.x+"px";c.style.top=k.y-e.y+"px";c.style.width=d.offsetWidth+"px";c.style.height=d.offsetHeight-(g?4:0)+"px";c.style.zIndex=5}function k(b,d,c){var e=document.createElement("div");e.style.width="32px";e.style.height="4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=d&&"none"!=d?d:"url('"+
-Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(v,function(k){this.editorUi.pickColor(d,function(d){e.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;g(b,d,c)});mxEvent.consume(k)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function f(b,d,c,e,k,f,m){null!=d&&(d=d.split(","),u.push({name:b,values:d,type:c,defVal:e,countProperty:k,parentRow:f,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",
-mxUtils.bind(v,function(d){for(var l=f,v=0;null!=l.nextSibling;)if(l.nextSibling.getAttribute("data-pName")==b)l=l.nextSibling,v++;else break;var x={type:c,parentRow:f,index:v,isDeletable:!0,defVal:e,countProperty:k},v=p(b,"",x,0==v%2,m);g(b,e,x);l.parentNode.insertBefore(v,l.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function m(b,d,c,g,e,k,f){if(0<e){var m=Array(e);d=null!=d?d.split(","):[];for(var l=0;l<e;l++)m[l]=null!=
-d[l]?d[l]:null!=g?g:"";u.push({name:b,values:m,type:c,defVal:g,parentRow:k,flipBkg:f,size:e})}return document.createElement("div")}function l(b,d,c){var e=document.createElement("input");e.type="checkbox";e.checked="1"==d;mxEvent.addListener(e,"change",function(){g(b,e.checked?"1":"0",c)});return e}function p(d,c,p,x,t){var n=p.dispName,u=p.type,y=document.createElement("tr");y.className="gePropRow"+(t?"Dark":"")+(x?"Alt":"")+" gePropNonHeaderRow";y.setAttribute("data-pName",d);y.setAttribute("data-pValue",
-c);x=!1;null!=p.index&&(y.setAttribute("data-index",p.index),n=(null!=n?n:"")+"["+p.index+"]",x=!0);var z=document.createElement("td");z.className="gePropRowCell";n=mxResources.get(n,null,n);mxUtils.write(z,n);z.setAttribute("title",n);x&&(z.style.textAlign="right");y.appendChild(z);z=document.createElement("td");z.className="gePropRowCell";if("color"==u)z.appendChild(k(d,c,p));else if("bool"==u||"boolean"==u)z.appendChild(l(d,c,p));else if("enum"==u){var q=p.enumList;for(t=0;t<q.length;t++)if(n=
-q[t],n.val==c){mxUtils.write(z,mxResources.get(n.dispName,null,n.dispName));break}mxEvent.addListener(z,"click",mxUtils.bind(v,function(){var k=document.createElement("select");e(z,k);for(var f=0;f<q.length;f++){var m=q[f],l=document.createElement("option");l.value=mxUtils.htmlEntities(m.val);mxUtils.write(l,mxResources.get(m.dispName,null,m.dispName));k.appendChild(l)}k.value=c;b.appendChild(k);mxEvent.addListener(k,"change",function(){var b=mxUtils.htmlEntities(k.value);g(d,b,p)});k.focus();mxEvent.addListener(k,
+!0;StyleFormatPanel.prototype.addProperties=function(b,d,c){function g(b,d,c,g){n.getModel().beginUpdate();try{var e=[],k=[];if(null!=c.index){for(var f=[],m=c.parentRow.nextSibling;m&&m.getAttribute("data-pName")==b;)f.push(m.getAttribute("data-pValue")),m=m.nextSibling;c.index<f.length?null!=g?f.splice(g,1):f[c.index]=d:f.push(d);null!=c.size&&f.length>c.size&&(f=f.slice(0,c.size));d=f.join(",");null!=c.countProperty&&(n.setCellStyles(c.countProperty,f.length,n.getSelectionCells()),e.push(c.countProperty),
+k.push(f.length))}n.setCellStyles(b,d,n.getSelectionCells());e.push(b);k.push(d);if(null!=c.dependentProps)for(b=0;b<c.dependentProps.length;b++){var l=c.dependentPropsDefVal[b],p=c.dependentPropsVals[b];if(p.length>d)p=p.slice(0,d);else for(var t=p.length;t<d;t++)p.push(l);p=p.join(",");n.setCellStyles(c.dependentProps[b],p,n.getSelectionCells());e.push(c.dependentProps[b]);k.push(p)}if("function"==typeof c.onChange)c.onChange(n,d);v.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",
+k,"cells",n.getSelectionCells()))}finally{n.getModel().endUpdate()}}function e(d,c,g){var e=mxUtils.getOffset(b,!0),k=mxUtils.getOffset(d,!0);c.style.position="absolute";c.style.left=k.x-e.x+"px";c.style.top=k.y-e.y+"px";c.style.width=d.offsetWidth+"px";c.style.height=d.offsetHeight-(g?4:0)+"px";c.style.zIndex=5}function k(b,d,c){var e=document.createElement("div");e.style.width="32px";e.style.height="4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=d&&"none"!=d?d:"url('"+
+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(v,function(k){this.editorUi.pickColor(d,function(d){e.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;g(b,d,c)});mxEvent.consume(k)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function f(b,d,c,e,k,f,m){null!=d&&(d=d.split(","),t.push({name:b,values:d,type:c,defVal:e,countProperty:k,parentRow:f,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",
+mxUtils.bind(v,function(d){for(var l=f,v=0;null!=l.nextSibling;)if(l.nextSibling.getAttribute("data-pName")==b)l=l.nextSibling,v++;else break;var n={type:c,parentRow:f,index:v,isDeletable:!0,defVal:e,countProperty:k},v=p(b,"",n,0==v%2,m);g(b,e,n);l.parentNode.insertBefore(v,l.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function m(b,d,c,g,e,k,f){if(0<e){var m=Array(e);d=null!=d?d.split(","):[];for(var l=0;l<e;l++)m[l]=null!=
+d[l]?d[l]:null!=g?g:"";t.push({name:b,values:m,type:c,defVal:g,parentRow:k,flipBkg:f,size:e})}return document.createElement("div")}function l(b,d,c){var e=document.createElement("input");e.type="checkbox";e.checked="1"==d;mxEvent.addListener(e,"change",function(){g(b,e.checked?"1":"0",c)});return e}function p(d,c,p,n,t){var x=p.dispName,u=p.type,y=document.createElement("tr");y.className="gePropRow"+(t?"Dark":"")+(n?"Alt":"")+" gePropNonHeaderRow";y.setAttribute("data-pName",d);y.setAttribute("data-pValue",
+c);n=!1;null!=p.index&&(y.setAttribute("data-index",p.index),x=(null!=x?x:"")+"["+p.index+"]",n=!0);var z=document.createElement("td");z.className="gePropRowCell";x=mxResources.get(x,null,x);mxUtils.write(z,x);z.setAttribute("title",x);n&&(z.style.textAlign="right");y.appendChild(z);z=document.createElement("td");z.className="gePropRowCell";if("color"==u)z.appendChild(k(d,c,p));else if("bool"==u||"boolean"==u)z.appendChild(l(d,c,p));else if("enum"==u){var q=p.enumList;for(t=0;t<q.length;t++)if(x=
+q[t],x.val==c){mxUtils.write(z,mxResources.get(x.dispName,null,x.dispName));break}mxEvent.addListener(z,"click",mxUtils.bind(v,function(){var k=document.createElement("select");e(z,k);for(var f=0;f<q.length;f++){var m=q[f],l=document.createElement("option");l.value=mxUtils.htmlEntities(m.val);mxUtils.write(l,mxResources.get(m.dispName,null,m.dispName));k.appendChild(l)}k.value=c;b.appendChild(k);mxEvent.addListener(k,"change",function(){var b=mxUtils.htmlEntities(k.value);g(d,b,p)});k.focus();mxEvent.addListener(k,
"blur",function(){b.removeChild(k)})}))}else"dynamicArr"==u?z.appendChild(f(d,c,p.subType,p.subDefVal,p.countProperty,y,t)):"staticArr"==u?z.appendChild(m(d,c,p.subType,p.subDefVal,p.size,y,t)):"readOnly"==u?(t=document.createElement("input"),t.setAttribute("readonly",""),t.value=c,t.style.width="96px",t.style.borderWidth="0px",z.appendChild(t)):(z.innerHTML=c,mxEvent.addListener(z,"click",mxUtils.bind(v,function(){function k(){var b=f.value,b=0==b.length&&"string"!=u?0:b;p.allowAuto&&(null!=b.trim&&
"auto"==b.trim().toLowerCase()?(b="auto",u="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=p.min&&b<p.min?b=p.min:null!=p.max&&b>p.max&&(b=p.max);b=mxUtils.htmlEntities(("int"==u?parseInt(b):b)+"");g(d,b,p)}var f=document.createElement("input");e(z,f,!0);f.value=c;f.className="gePropEditor";"int"!=u&&"float"!=u||p.allowAuto||(f.type="number",f.step="int"==u?"1":"any",null!=p.min&&(f.min=parseFloat(p.min)),null!=p.max&&(f.max=parseFloat(p.max)));b.appendChild(f);mxEvent.addListener(f,"keypress",
-function(b){13==b.keyCode&&k()});f.focus();mxEvent.addListener(f,"blur",function(){k()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(v,function(b){g(d,"",p,p.index);mxEvent.consume(b)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",z.appendChild(t));y.appendChild(z);return y}var v=this,t=this.editorUi.editor.graph,u=[];b.style.position="relative";b.style.padding="0";var n=document.createElement("table");n.className="geProperties";n.style.whiteSpace=
-"nowrap";n.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;z.style.verticalAlign="middle";y.appendChild(z);mxUtils.write(y,mxResources.get("property"));x.style.cursor="pointer";var q=function(){var d=n.querySelectorAll(".gePropNonHeaderRow"),c;if(v.editorUi.propertiesCollapsed){z.src=Sidebar.prototype.collapsedImage;c="none";for(var g=
-b.childNodes.length-1;0<=g;g--)try{var e=b.childNodes[g],k=e.nodeName.toUpperCase();"INPUT"!=k&&"SELECT"!=k||b.removeChild(e)}catch(Da){}}else z.src=Sidebar.prototype.expandedImage,c="";for(g=0;g<d.length;g++)d[g].style.display=c};mxEvent.addListener(x,"click",function(){v.editorUi.propertiesCollapsed=!v.editorUi.propertiesCollapsed;q()});x.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");x.appendChild(y);n.appendChild(x);var A=!1,C=
-!1,x=null;1==c.vertices.length&&0==c.edges.length?x=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(x=c.edges[0].id);null!=x&&n.appendChild(p("id",mxUtils.htmlEntities(x),{dispName:"ID",type:"readOnly"},!0,!1));for(var K in d)if(x=d[K],"function"!=typeof x.isVisible||x.isVisible(c,this)){var G=null!=c.style[K]?mxUtils.htmlEntities(c.style[K]+""):null!=x.getDefaultValue?x.getDefaultValue(c,this):x.defVal;if("separator"==x.type)C=!C;else{if("staticArr"==x.type)x.size=parseInt(c.style[x.sizeProperty]||
-d[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var O=x.dependentProps,J=[],M=[],y=0;y<O.length;y++){var I=c.style[O[y]];M.push(d[O[y]].subDefVal);J.push(null!=I?I.split(","):[])}x.dependentPropsDefVal=M;x.dependentPropsVals=J}n.appendChild(p(K,G,x,A,C));A=!A}}for(y=0;y<u.length;y++)for(x=u[y],d=x.parentRow,c=0;c<x.values.length;c++)K=p(x.name,x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:c,defVal:x.defVal,countProperty:x.countProperty,size:x.size},
-0==c%2,x.flipBkg),d.parentNode.insertBefore(K,d.nextSibling),d=K;b.appendChild(n);q();return b};StyleFormatPanel.prototype.addStyles=function(b){function d(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var c=this.editorUi,g=c.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";
+function(b){13==b.keyCode&&k()});f.focus();mxEvent.addListener(f,"blur",function(){k()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(v,function(b){g(d,"",p,p.index);mxEvent.consume(b)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",z.appendChild(t));y.appendChild(z);return y}var v=this,n=this.editorUi.editor.graph,t=[];b.style.position="relative";b.style.padding="0";var x=document.createElement("table");x.className="geProperties";x.style.whiteSpace=
+"nowrap";x.style.width="100%";var u=document.createElement("tr");u.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;z.style.verticalAlign="middle";y.appendChild(z);mxUtils.write(y,mxResources.get("property"));u.style.cursor="pointer";var q=function(){var d=x.querySelectorAll(".gePropNonHeaderRow"),c;if(v.editorUi.propertiesCollapsed){z.src=Sidebar.prototype.collapsedImage;c="none";for(var g=
+b.childNodes.length-1;0<=g;g--)try{var e=b.childNodes[g],k=e.nodeName.toUpperCase();"INPUT"!=k&&"SELECT"!=k||b.removeChild(e)}catch(Da){}}else z.src=Sidebar.prototype.expandedImage,c="";for(g=0;g<d.length;g++)d[g].style.display=c};mxEvent.addListener(u,"click",function(){v.editorUi.propertiesCollapsed=!v.editorUi.propertiesCollapsed;q()});u.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");u.appendChild(y);x.appendChild(u);var A=!1,C=
+!1,u=null;1==c.vertices.length&&0==c.edges.length?u=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(u=c.edges[0].id);null!=u&&x.appendChild(p("id",mxUtils.htmlEntities(u),{dispName:"ID",type:"readOnly"},!0,!1));for(var K in d)if(u=d[K],"function"!=typeof u.isVisible||u.isVisible(c,this)){var G=null!=c.style[K]?mxUtils.htmlEntities(c.style[K]+""):null!=u.getDefaultValue?u.getDefaultValue(c,this):u.defVal;if("separator"==u.type)C=!C;else{if("staticArr"==u.type)u.size=parseInt(c.style[u.sizeProperty]||
+d[u.sizeProperty].defVal)||0;else if(null!=u.dependentProps){for(var O=u.dependentProps,M=[],J=[],y=0;y<O.length;y++){var I=c.style[O[y]];J.push(d[O[y]].subDefVal);M.push(null!=I?I.split(","):[])}u.dependentPropsDefVal=J;u.dependentPropsVals=M}x.appendChild(p(K,G,u,A,C));A=!A}}for(y=0;y<t.length;y++)for(u=t[y],d=u.parentRow,c=0;c<u.values.length;c++)K=p(u.name,u.values[c],{type:u.type,parentRow:u.parentRow,isDeletable:u.isDeletable,index:c,defVal:u.defVal,countProperty:u.countProperty,size:u.size},
+0==c%2,u.flipBkg),d.parentNode.insertBefore(K,d.nextSibling),d=K;b.appendChild(x);q();return b};StyleFormatPanel.prototype.addStyles=function(b){function d(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var c=this.editorUi,g=c.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";
b.style.position="relative";b.appendChild(e);var k="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(" "),f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.position="relative";f.style.textAlign="center";f.style.width="210px";for(var m=[],l=0;l<this.defaultColorSchemes.length;l++){var p=document.createElement("div");p.style.display="inline-block";p.style.width=
"6px";p.style.height="6px";p.style.marginLeft="4px";p.style.marginRight="3px";p.style.borderRadius="3px";p.style.cursor="pointer";p.style.background="transparent";p.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(p,"click",mxUtils.bind(this,function(){v(b)}))})(l);m.push(p);f.appendChild(p)}var v=mxUtils.bind(this,function(b){null!=m[b]&&(null!=this.format.currentScheme&&null!=m[this.format.currentScheme]&&(m[this.format.currentScheme].style.background="transparent"),
-this.format.currentScheme=b,t(this.defaultColorSchemes[this.format.currentScheme]),m[this.format.currentScheme].style.background="#84d7ff")}),t=mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(b){var d=mxUtils.button("",mxUtils.bind(this,function(d){g.getModel().beginUpdate();try{for(var e=c.getSelectionState().cells,f=0;f<e.length;f++){for(var m=g.getModel().getStyle(e[f]),l=0;l<k.length;l++)m=mxUtils.removeStylename(m,k[l]);var p=g.getModel().isVertex(e[f])?g.defaultVertexStyle:g.defaultEdgeStyle;
+this.format.currentScheme=b,n(this.defaultColorSchemes[this.format.currentScheme]),m[this.format.currentScheme].style.background="#84d7ff")}),n=mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(b){var d=mxUtils.button("",mxUtils.bind(this,function(d){g.getModel().beginUpdate();try{for(var e=c.getSelectionState().cells,f=0;f<e.length;f++){for(var m=g.getModel().getStyle(e[f]),l=0;l<k.length;l++)m=mxUtils.removeStylename(m,k[l]);var p=g.getModel().isVertex(e[f])?g.defaultVertexStyle:g.defaultEdgeStyle;
null!=b?(mxEvent.isShiftDown(d)||(m=""==b.fill?mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,b.fill||mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,null)),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,b.gradient||mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(d)||mxClient.IS_MAC&&mxEvent.isMetaDown(d)||!g.getModel().isVertex(e[f])||(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,b.font||mxUtils.getValue(p,
mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(d)||(m=""==b.stroke?mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,b.stroke||mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,null)))):(m=mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,"#ffffff")),m=mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,"#000000")),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,
mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(e[f])&&(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null))));g.getModel().setStyle(e[f],m)}}finally{g.getModel().endUpdate()}}));d.className="geStyleButton";d.style.width="36px";d.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";d.style.margin="0px 6px 6px 0px";if(null!=b){var f="1"==urlParams.sketch?"2px solid":"1px solid";null!=b.gradient?mxClient.IS_IE&&
10>document.documentMode?d.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+b.fill+"', EndColorStr='"+b.gradient+"', GradientType=0)":d.style.backgroundImage="linear-gradient("+b.fill+" 0px,"+b.gradient+" 100%)":b.fill==mxConstants.NONE?d.style.background="url('"+Dialog.prototype.noColorImage+"')":d.style.backgroundColor=""==b.fill?mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):b.fill||mxUtils.getValue(g.defaultVertexStyle,
mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");d.style.border=b.stroke==mxConstants.NONE?f+" transparent":""==b.stroke?f+" "+mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):f+" "+(b.stroke||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=b.title&&d.setAttribute("title",b.title)}else{var f=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,
-"#ffffff"),m=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");d.style.backgroundColor=f;d.style.border="1px solid "+m}d.style.borderRadius="0";e.appendChild(d)});e.innerHTML="";for(var f=0;f<b.length;f++)0<f&&0==mxUtils.mod(f,4)&&mxUtils.br(e),d(b[f])});null==this.format.currentScheme?v(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):v(this.format.currentScheme);var l=10>=this.defaultColorSchemes.length?28:8,x=document.createElement("div");x.style.cssText="position:absolute;left:10px;top:8px;bottom:"+
-l+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";mxEvent.addListener(x,"click",mxUtils.bind(this,function(){v(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));
-var n=document.createElement("div");n.style.cssText="position:absolute;left:202px;top:8px;bottom:"+l+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";1<this.defaultColorSchemes.length&&
-(b.appendChild(x),b.appendChild(n));mxEvent.addListener(n,"click",mxUtils.bind(this,function(){v(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));d(x);d(n);t(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&b.appendChild(f);return b};StyleFormatPanel.prototype.addEditOps=function(b){var d=this.editorUi.getSelectionState(),c=this.editorUi.editor.graph,g=null;1==d.cells.length&&(g=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,
+"#ffffff"),m=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");d.style.backgroundColor=f;d.style.border="1px solid "+m}d.style.borderRadius="0";e.appendChild(d)});e.innerHTML="";for(var f=0;f<b.length;f++)0<f&&0==mxUtils.mod(f,4)&&mxUtils.br(e),d(b[f])});null==this.format.currentScheme?v(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):v(this.format.currentScheme);var l=10>=this.defaultColorSchemes.length?28:8,t=document.createElement("div");t.style.cssText="position:absolute;left:10px;top:8px;bottom:"+
+l+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";mxEvent.addListener(t,"click",mxUtils.bind(this,function(){v(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));
+var u=document.createElement("div");u.style.cssText="position:absolute;left:202px;top:8px;bottom:"+l+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";1<this.defaultColorSchemes.length&&
+(b.appendChild(t),b.appendChild(u));mxEvent.addListener(u,"click",mxUtils.bind(this,function(){v(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));d(t);d(u);n(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&b.appendChild(f);return b};StyleFormatPanel.prototype.addEditOps=function(b){var d=this.editorUi.getSelectionState(),c=this.editorUi.editor.graph,g=null;1==d.cells.length&&(g=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,
function(b){this.editorUi.actions.get("editStyle").funct()})),g.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),g.style.width="210px",g.style.marginBottom="2px",b.appendChild(g));c=1==d.cells.length?c.view.getState(d.cells[0]):null;null!=c&&null!=c.shape&&null!=c.shape.stencil?(d=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(b){this.editorUi.actions.get("editShape").funct()})),d.setAttribute("title",mxResources.get("editShape")),
d.style.marginBottom="2px",null==g?d.style.width="210px":(g.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),b.appendChild(d)):d.image&&0<d.cells.length&&(d=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(b){this.editorUi.actions.get("image").funct()})),d.setAttribute("title",mxResources.get("editImage")),d.style.marginBottom="2px",null==g?d.style.width="210px":(g.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),b.appendChild(d));return b}}Graph.customFontElements=
{};Graph.recentCustomFonts={};Graph.isGoogleFontUrl=function(b){return b.substring(0,Editor.GOOGLE_FONTS.length)==Editor.GOOGLE_FONTS};Graph.isCssFontUrl=function(b){return Graph.isGoogleFontUrl(b)};Graph.createFontElement=function(b,d){var c;Graph.isCssFontUrl(d)?(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("charset","UTF-8"),c.setAttribute("href",d)):(c=document.createElement("style"),mxUtils.write(c,'@font-face {\nfont-family: "'+
@@ -3326,84 +3331,85 @@ b);mxEvent.addListener(this.container,"mousemove",b);mxEvent.addListener(this.co
parseFloat(d.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;c.marginLeft=d.marginLeft||0;c.marginRight=d.marginRight||0;c.marginTop=d.marginTop||0;c.marginBottom=d.marginBottom||0;c.allowGaps=d.allowGaps||0;c.horizontal="1"==mxUtils.getValue(d,"horizontalRack","0");c.resizeParent=!1;c.fill=!0;return c}return g.apply(this,arguments)};this.updateGlobalUrlVariables()};var y=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=function(b,d){return Graph.processFontStyle(y.apply(this,
arguments))};var F=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(b,d,c,g,e,k,f,m,l,p,v){F.apply(this,arguments);Graph.processFontAttributes(v)};var D=mxText.prototype.redraw;mxText.prototype.redraw=function(){D.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(b,d,c){function g(){for(var b=f.getSelectionCells(),d=[],c=0;c<b.length;c++)f.isCellVisible(b[c])&&
d.push(b[c]);f.setSelectionCells(d)}function e(b){f.hiddenTags=b?[]:m.slice();g();f.refresh()}function k(b,c){p.innerHTML="";if(0<b.length){var k=document.createElement("table");k.setAttribute("cellpadding","2");k.style.boxSizing="border-box";k.style.tableLayout="fixed";k.style.width="100%";var l=document.createElement("tbody");if(null!=b&&0<b.length)for(var v=0;v<b.length;v++)(function(b){var k=0>mxUtils.indexOf(f.hiddenTags,b),p=document.createElement("tr"),v=document.createElement("td");v.style.align=
-"center";v.style.width="16px";var t=document.createElement("img");t.setAttribute("src",k?Editor.visibleImage:Editor.hiddenImage);t.setAttribute("title",mxResources.get(k?"hideIt":"show",[b]));mxUtils.setOpacity(t,k?75:25);t.style.verticalAlign="middle";t.style.cursor="pointer";t.style.width="16px";if(d||Editor.isDarkMode())t.style.filter="invert(100%)";v.appendChild(t);mxEvent.addListener(t,"click",function(d){var c=mxUtils.indexOf(f.hiddenTags,b);mxEvent.isShiftDown(d)?e(0<=mxUtils.indexOf(f.hiddenTags,
+"center";v.style.width="16px";var n=document.createElement("img");n.setAttribute("src",k?Editor.visibleImage:Editor.hiddenImage);n.setAttribute("title",mxResources.get(k?"hideIt":"show",[b]));mxUtils.setOpacity(n,k?75:25);n.style.verticalAlign="middle";n.style.cursor="pointer";n.style.width="16px";if(d||Editor.isDarkMode())n.style.filter="invert(100%)";v.appendChild(n);mxEvent.addListener(n,"click",function(d){var c=mxUtils.indexOf(f.hiddenTags,b);mxEvent.isShiftDown(d)?e(0<=mxUtils.indexOf(f.hiddenTags,
b)):(0>c?f.hiddenTags.push(b):0<=c&&f.hiddenTags.splice(c,1),g(),f.refresh());mxEvent.consume(d)});p.appendChild(v);v=document.createElement("td");v.style.overflow="hidden";v.style.whiteSpace="nowrap";v.style.textOverflow="ellipsis";v.style.verticalAlign="middle";v.style.cursor="pointer";v.setAttribute("title",b);a=document.createElement("a");mxUtils.write(a,b);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,k?100:40);v.appendChild(a);mxEvent.addListener(v,"click",
-function(d){if(mxEvent.isShiftDown(d)){e(!0);var c=f.getCellsForTags([b],null,null,!0);f.isEnabled()?f.setSelectionCells(c):f.highlightCells(c)}else if(k&&0<f.hiddenTags.length)e(!0);else{var c=m.slice(),l=mxUtils.indexOf(c,b);c.splice(l,1);f.hiddenTags=c;g();f.refresh()}mxEvent.consume(d)});p.appendChild(v);if(f.isEnabled()){v=document.createElement("td");v.style.verticalAlign="middle";v.style.textAlign="center";v.style.width="18px";if(null==c){v.style.align="center";v.style.width="16px";t=document.createElement("img");
-t.setAttribute("src",Editor.crossImage);t.setAttribute("title",mxResources.get("removeIt",[b]));mxUtils.setOpacity(t,k?75:25);t.style.verticalAlign="middle";t.style.cursor="pointer";t.style.width="16px";if(d||Editor.isDarkMode())t.style.filter="invert(100%)";mxEvent.addListener(t,"click",function(d){var c=mxUtils.indexOf(m,b);0<=c&&m.splice(c,1);f.removeTagsForCells(f.model.getDescendants(f.model.getRoot()),[b]);f.refresh();mxEvent.consume(d)});v.appendChild(t)}else{var n=document.createElement("input");
-n.setAttribute("type","checkbox");n.style.margin="0px";n.defaultChecked=null!=c&&0<=mxUtils.indexOf(c,b);n.checked=n.defaultChecked;n.style.background="transparent";n.setAttribute("title",mxResources.get(n.defaultChecked?"removeIt":"add",[b]));mxEvent.addListener(n,"change",function(d){n.checked?f.addTagsForCells(f.getSelectionCells(),[b]):f.removeTagsForCells(f.getSelectionCells(),[b]);mxEvent.consume(d)});v.appendChild(n)}p.appendChild(v)}l.appendChild(p)})(b[v]);k.appendChild(l);p.appendChild(k)}}
+function(d){if(mxEvent.isShiftDown(d)){e(!0);var c=f.getCellsForTags([b],null,null,!0);f.isEnabled()?f.setSelectionCells(c):f.highlightCells(c)}else if(k&&0<f.hiddenTags.length)e(!0);else{var c=m.slice(),l=mxUtils.indexOf(c,b);c.splice(l,1);f.hiddenTags=c;g();f.refresh()}mxEvent.consume(d)});p.appendChild(v);if(f.isEnabled()){v=document.createElement("td");v.style.verticalAlign="middle";v.style.textAlign="center";v.style.width="18px";if(null==c){v.style.align="center";v.style.width="16px";n=document.createElement("img");
+n.setAttribute("src",Editor.crossImage);n.setAttribute("title",mxResources.get("removeIt",[b]));mxUtils.setOpacity(n,k?75:25);n.style.verticalAlign="middle";n.style.cursor="pointer";n.style.width="16px";if(d||Editor.isDarkMode())n.style.filter="invert(100%)";mxEvent.addListener(n,"click",function(d){var c=mxUtils.indexOf(m,b);0<=c&&m.splice(c,1);f.removeTagsForCells(f.model.getDescendants(f.model.getRoot()),[b]);f.refresh();mxEvent.consume(d)});v.appendChild(n)}else{var t=document.createElement("input");
+t.setAttribute("type","checkbox");t.style.margin="0px";t.defaultChecked=null!=c&&0<=mxUtils.indexOf(c,b);t.checked=t.defaultChecked;t.style.background="transparent";t.setAttribute("title",mxResources.get(t.defaultChecked?"removeIt":"add",[b]));mxEvent.addListener(t,"change",function(d){t.checked?f.addTagsForCells(f.getSelectionCells(),[b]):f.removeTagsForCells(f.getSelectionCells(),[b]);mxEvent.consume(d)});v.appendChild(t)}p.appendChild(v)}l.appendChild(p)})(b[v]);k.appendChild(l);p.appendChild(k)}}
var f=this,m=f.hiddenTags.slice(),l=document.createElement("div");l.style.userSelect="none";l.style.overflow="hidden";l.style.padding="10px";l.style.height="100%";var p=document.createElement("div");p.style.boxSizing="border-box";p.style.borderRadius="4px";p.style.userSelect="none";p.style.overflow="auto";p.style.position="absolute";p.style.left="10px";p.style.right="10px";p.style.top="10px";p.style.border=f.isEnabled()?"1px solid #808080":"none";p.style.bottom=f.isEnabled()?"48px":"10px";l.appendChild(p);
-var v=mxUtils.button(mxResources.get("reset"),function(b){f.hiddenTags=[];mxEvent.isShiftDown(b)||(m=f.hiddenTags.slice());g();f.refresh()});v.setAttribute("title",mxResources.get("reset"));v.className="geBtn";v.style.margin="0 4px 0 0";var t=mxUtils.button(mxResources.get("add"),function(){null!=c&&c(m,function(b){m=b;n()})});t.setAttribute("title",mxResources.get("add"));t.className="geBtn";t.style.margin="0";f.addListener(mxEvent.ROOT,function(){m=f.hiddenTags.slice()});var n=mxUtils.bind(this,
-function(d,c){if(b()){for(var g=f.getAllTags(),e=0;e<g.length;e++)0>mxUtils.indexOf(m,g[e])&&m.push(g[e]);m.sort();f.isSelectionEmpty()?k(m):k(m,f.getCommonTagsForCells(f.getSelectionCells()))}});f.selectionModel.addListener(mxEvent.CHANGE,n);f.model.addListener(mxEvent.CHANGE,n);f.addListener(mxEvent.REFRESH,n);var u=document.createElement("div");u.style.boxSizing="border-box";u.style.whiteSpace="nowrap";u.style.position="absolute";u.style.overflow="hidden";u.style.bottom="0px";u.style.height="42px";
-u.style.right="10px";u.style.left="10px";f.isEnabled()&&(u.appendChild(v),u.appendChild(t),l.appendChild(u));return{div:l,refresh:n}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");d=
+var v=mxUtils.button(mxResources.get("reset"),function(b){f.hiddenTags=[];mxEvent.isShiftDown(b)||(m=f.hiddenTags.slice());g();f.refresh()});v.setAttribute("title",mxResources.get("reset"));v.className="geBtn";v.style.margin="0 4px 0 0";var n=mxUtils.button(mxResources.get("add"),function(){null!=c&&c(m,function(b){m=b;t()})});n.setAttribute("title",mxResources.get("add"));n.className="geBtn";n.style.margin="0";f.addListener(mxEvent.ROOT,function(){m=f.hiddenTags.slice()});var t=mxUtils.bind(this,
+function(d,c){if(b()){for(var g=f.getAllTags(),e=0;e<g.length;e++)0>mxUtils.indexOf(m,g[e])&&m.push(g[e]);m.sort();f.isSelectionEmpty()?k(m):k(m,f.getCommonTagsForCells(f.getSelectionCells()))}});f.selectionModel.addListener(mxEvent.CHANGE,t);f.model.addListener(mxEvent.CHANGE,t);f.addListener(mxEvent.REFRESH,t);var u=document.createElement("div");u.style.boxSizing="border-box";u.style.whiteSpace="nowrap";u.style.position="absolute";u.style.overflow="hidden";u.style.bottom="0px";u.style.height="42px";
+u.style.right="10px";u.style.left="10px";f.isEnabled()&&(u.appendChild(v),u.appendChild(n),l.appendChild(u));return{div:l,refresh:t}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");d=
Graph.getFontUrl(b,d);for(var g=0;g<c.length;g++)c[g].getAttribute("face")==b&&c[g].getAttribute("data-font-src")!=d&&c[g].setAttribute("data-font-src",d)}};var E=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return E.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var b=
JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var d in b)this.globalVars[d]=b[d]}catch(J){null!=window.console&&console.log("Error in vars URL parameter: "+J)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var H=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var d=H.apply(this,arguments);null==d&&null!=this.globalVars&&(d=this.globalVars[b]);return d};Graph.prototype.getDefaultStylesheet=
-function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var N=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,d,c,g,e,k,f,m,l,p,v,t,n,u){var x=null,y=null,z=null;t||null==this.themes||"darkTheme"!=this.defaultThemeName||(x=this.stylesheet,y=this.shapeForegroundColor,z=this.shapeBackgroundColor,this.shapeForegroundColor=
+function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var N=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,d,c,g,e,k,f,m,l,p,v,n,t,u){var x=null,y=null,z=null;n||null==this.themes||"darkTheme"!=this.defaultThemeName||(x=this.stylesheet,y=this.shapeForegroundColor,z=this.shapeBackgroundColor,this.shapeForegroundColor=
"darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var q=N.apply(this,arguments),A=this.getCustomFonts();if(v&&0<A.length){var K=q.ownerDocument,C=null!=K.createElementNS?K.createElementNS(mxConstants.NS_SVG,"style"):K.createElement("style");null!=K.setAttributeNS?C.setAttributeNS("type","text/css"):C.setAttribute("type","text/css");for(var G=
"",O="",M=0;M<A.length;M++){var I=A[M].name,F=A[M].url;Graph.isCssFontUrl(F)?G+="@import url("+F+");\n":O+='@font-face {\nfont-family: "'+I+'";\nsrc: url("'+F+'");\n}\n'}C.appendChild(K.createTextNode(G+O));q.getElementsByTagName("defs")[0].appendChild(C)}null!=x&&(this.shapeBackgroundColor=z,this.shapeForegroundColor=y,this.stylesheet=x,this.refresh());return q};var A=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=A.apply(this,arguments);if(this.mathEnabled){var d=
b.drawText;b.drawText=function(b,c){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var g=b.text.getContentNode();if(null!=g){g=g.cloneNode(!0);if(g.getElementsByTagNameNS)for(var e=g.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=g.innerHTML&&(e=b.text.value,b.text.value=g.innerHTML,d.apply(this,arguments),b.text.value=e)}}else d.apply(this,
-arguments)}}return b};var G=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){G.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,b.text,b.secondLabel,b.control]};var I=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){I.apply(this,arguments);this.numberCounter=0};var L=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=
-function(b,d){var c=L.apply(this,arguments);d=null!=d?d:!0;var g=null!=c&&this.graph.model.isVertex(c.cell)?"1"==mxUtils.getValue(c.style,"enumerate",0):!1;d&&this.redrawNumberShape(c,g);return c};mxGraphView.prototype.redrawNumberShape=function(b,d){d&&this.graph.model.isVertex(b.cell)&&null!=b.shape&&null==b.secondLabel&&(b.secondLabel=new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),b.secondLabel.size=12,b.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,this.graph.cellRenderer.initializeLabel(b,
-b.secondLabel));if(null!=b&&null!=b.secondLabel)if(d){var c=mxUtils.getValue(b.style,"enumerateValue","");""==c&&(c=++this.numberCounter);var c='<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(c)+"</div>",g=this.graph.getView().getScale(),e=new mxRectangle(b.x+b.width-4*g,b.y+4*g,0,0);b.secondLabel.value=c;b.secondLabel.state=b;b.secondLabel.scale=g;b.secondLabel.bounds=e;b.secondLabel.redraw()}else b.secondLabel.destroy(),b.secondLabel=null};
-var M=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){M.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==
-this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};var K=Graph.prototype.refresh;Graph.prototype.refresh=function(){K.apply(this,arguments);this.refreshBackgroundImage()};
-Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var O=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){O.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};
-Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var c=!1,g=0,e=0,k=mxUtils.bind(this,function(){c||(c=!0,this.model.beginUpdate())}),f=mxUtils.bind(this,function(){c&&(c=!1,this.model.endUpdate())}),
-m=mxUtils.bind(this,function(){0<g&&g--;0==g&&l()}),l=mxUtils.bind(this,function(){if(e<b.length){var c=this.stoppingCustomActions,p=b[e++],v=[];if(null!=p.open)if(f(),this.isCustomLink(p.open)){if(!this.customLinkClicked(p.open))return}else this.openLink(p.open);null==p.wait||c||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;m()}),g++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=p.wait?parseInt(p.wait):
-1E3),f());null!=p.opacity&&null!=p.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(p.opacity,!0)),p.opacity.value);null!=p.fadeIn&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeIn,!0)),0,1,m,c?0:p.fadeIn.delay));null!=p.fadeOut&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeOut,!0)),1,0,m,c?0:p.fadeOut.delay));null!=p.wipeIn&&(v=v.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeIn,!0),!0)));null!=
-p.wipeOut&&(v=v.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeOut,!0),!1)));null!=p.toggle&&(k(),this.toggleCells(this.getCellsForAction(p.toggle,!0)));if(null!=p.show){k();var t=this.getCellsForAction(p.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(t),1);this.setCellsVisible(t,!0)}null!=p.hide&&(k(),t=this.getCellsForAction(p.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(t),0),this.setCellsVisible(t,!1));null!=p.toggleStyle&&null!=p.toggleStyle.key&&(k(),this.toggleCellStyles(p.toggleStyle.key,
-null!=p.toggleStyle.defaultValue?p.toggleStyle.defaultValue:"0",this.getCellsForAction(p.toggleStyle,!0)));null!=p.style&&null!=p.style.key&&(k(),this.setCellStyles(p.style.key,p.style.value,this.getCellsForAction(p.style,!0)));t=[];null!=p.select&&this.isEnabled()&&(t=this.getCellsForAction(p.select),this.setSelectionCells(t));null!=p.highlight&&(t=this.getCellsForAction(p.highlight),this.highlightCells(t,p.highlight.color,p.highlight.duration,p.highlight.opacity));null!=p.scroll&&(t=this.getCellsForAction(p.scroll));
-null!=p.viewbox&&this.fitWindow(p.viewbox,p.viewbox.border);0<t.length&&this.scrollCellToVisible(t[0]);if(null!=p.tags){t=[];null!=p.tags.hidden&&(t=t.concat(p.tags.hidden));if(null!=p.tags.visible)for(var n=this.getAllTags(),u=0;u<n.length;u++)0>mxUtils.indexOf(p.tags.visible,n[u])&&0>mxUtils.indexOf(t,n[u])&&t.push(n[u]);this.hiddenTags=t;this.refresh()}0<v.length&&(g++,this.executeAnimations(v,m,c?1:p.steps,c?0:p.delay));0==g?l():f()}else this.stoppingCustomActions=this.executingCustomActions=
-!1,f(),null!=d&&d()});l()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,d){var c=this.getLinkForCell(d);null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(d,this.updateCustomLink(b,c));if(this.isHtmlLabel(d)){var g=document.createElement("div");g.innerHTML=this.sanitizeHtml(this.getLabel(d));for(var e=g.getElementsByTagName("a"),k=!1,f=0;f<e.length;f++)c=e[f].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(e[f].setAttribute("href",this.updateCustomLink(b,
-c)),k=!0);k&&this.labelChanged(d,g.innerHTML)}};Graph.prototype.updateCustomLink=function(b,d){if("data:action/json,"==d.substring(0,17))try{var c=JSON.parse(d.substring(17));null!=c.actions&&(this.updateCustomLinkActions(b,c.actions),d="data:action/json,"+JSON.stringify(c))}catch(W){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<d.length;c++){var g=d[c],e;for(e in g)this.updateCustomLinkAction(b,g[e],"cells"),this.updateCustomLinkAction(b,g[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=
-function(b,d,c){if(null!=d&&null!=d[c]){for(var g=[],e=0;e<d[c].length;e++)if("*"==d[c][e])g.push(d[c][e]);else{var k=b[d[c][e]];null!=k?""!=k&&g.push(k):g.push(d[c][e])}d[c]=g}};Graph.prototype.getCellsForAction=function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var g=[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&g.push(c[e]);c=g}return c};Graph.prototype.getCellsById=function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==
-b[c])var g=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=g},g));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var U=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return U.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>
-mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,g){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());for(var k=0,f={},m=0;m<b.length;m++)0<b[m].length&&(f[b[m]]=!0,k++);for(m=0;m<d.length;m++)if(c&&this.model.getParent(d[m])==this.model.root||this.model.isVertex(d[m])||this.model.isEdge(d[m])){var l=this.getTagsForCell(d[m]),p=!1;if(0<l.length&&(l=l.split(" "),l.length>=b.length)){for(var v=p=0;v<l.length&&p<k;v++)null!=
-f[l[v]]&&p++;p=p==k}p&&(1!=g||this.isCellVisible(d[m]))&&e.push(d[m])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var d=null,c=[],g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]),c=[];if(0<e.length){for(var e=e.split(" "),k={},f=0;f<e.length;f++)if(null==d||null!=d[e[f]])k[e[f]]=!0,c.push(e[f]);d=k}else return[]}return c};Graph.prototype.getTagsForCells=function(b){for(var d=
-[],c={},g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]);if(0<e.length)for(var e=e.split(" "),k=0;k<e.length;k++)null==c[e[k]]&&(c[e[k]]=!0,d.push(e[k]))}return d};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){for(var g=this.getTagsForCell(b[c]),e=g.split(" "),k=!1,f=0;f<d.length;f++){var m=mxUtils.trim(d[f]);""!=m&&0>mxUtils.indexOf(e,
-m)&&(g=0<g.length?g+" "+m:m,k=!0)}k&&this.setAttributeForCell(b[c],"tags",g)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var g=this.getTagsForCell(b[c]);if(0<g.length){for(var e=g.split(" "),k=!1,f=0;f<d.length;f++){var m=mxUtils.indexOf(e,d[f]);0<=m&&(e.splice(m,1),k=!0)}k&&this.setAttributeForCell(b[c],"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=
-function(b){this.model.beginUpdate();try{for(var d=0;d<b.length;d++)this.model.setVisible(b[d],!this.model.isVisible(b[d]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,d){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],d)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(b,d,c,g){for(var e=0;e<b.length;e++)this.highlightCell(b[e],d,c,g)};Graph.prototype.highlightCell=function(b,d,c,g){d=null!=d?d:mxConstants.DEFAULT_VALID_COLOR;
-c=null!=c?c:1E3;b=this.view.getState(b);if(null!=b){var e=Math.max(5,mxUtils.getValue(b.style,mxConstants.STYLE_STROKEWIDTH,1)+4),k=new mxCellHighlight(this,d,e,!1);null!=g&&(k.opacity=g);k.highlight(b);window.setTimeout(function(){null!=k.shape&&(mxUtils.setPrefixedStyle(k.shape.node.style,"transition","all 1200ms ease-in-out"),k.shape.node.style.opacity=0);window.setTimeout(function(){k.destroy()},1200)},c)}};Graph.prototype.addSvgShadow=function(b,d,c,g){c=null!=c?c:!1;g=null!=g?g:!0;var e=b.ownerDocument,
-k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");k.setAttribute("id",this.shadowId);var f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");f.setAttribute("in","SourceAlpha");f.setAttribute("stdDeviation",this.svgShadowBlur);f.setAttribute("result","blur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");f.setAttribute("in",
-"blur");f.setAttribute("dx",this.svgShadowSize);f.setAttribute("dy",this.svgShadowSize);f.setAttribute("result","offsetBlur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");f.setAttribute("flood-color",this.svgShadowColor);f.setAttribute("flood-opacity",this.svgShadowOpacity);f.setAttribute("result","offsetColor");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");
-f.setAttribute("in","offsetColor");f.setAttribute("in2","offsetBlur");f.setAttribute("operator","in");f.setAttribute("result","offsetBlur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");f.setAttribute("in","SourceGraphic");f.setAttribute("in2","offsetBlur");k.appendChild(f);f=b.getElementsByTagName("defs");0==f.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=b.firstChild?
-b.insertBefore(e,b.firstChild):b.appendChild(e)):e=f[0];e.appendChild(k);c||(d=null!=d?d:b.getElementsByTagName("g")[0],null!=d&&(d.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(b.getAttribute("width")))&&g&&(b.setAttribute("width",parseInt(b.getAttribute("width"))+6),b.setAttribute("height",parseInt(b.getAttribute("height"))+6),d=b.getAttribute("viewBox"),null!=d&&0<d.length&&(d=d.split(" "),3<d.length&&(w=parseFloat(d[2])+6,h=parseFloat(d[3])+6,b.setAttribute("viewBox",d[0]+" "+
-d[1]+" "+w+" "+h))))));return k};Graph.prototype.setShadowVisible=function(b,d){mxClient.IS_SVG&&!mxClient.IS_SF&&(d=null!=d?d:!0,(this.shadowVisible=b)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),d&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var b=this.model.getChildCount(this.model.root),d,c=0;do d=this.model.getChildAt(this.model.root,
-c);while(c++<b&&"1"==mxUtils.getValue(this.getCellStyle(d),"locked","0"));null!=d&&this.setDefaultParent(d)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.bpmn2=
-[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.c4=[SHAPES_PATH+"/mxC4.js"];mxStencilRegistry.libraries.cisco19=[SHAPES_PATH+"/mxCisco19.js",STENCIL_PATH+"/cisco19.xml"];mxStencilRegistry.libraries.cisco_safe=[SHAPES_PATH+"/mxCiscoSafe.js",STENCIL_PATH+"/cisco_safe/architecture.xml",STENCIL_PATH+"/cisco_safe/business_icons.xml",STENCIL_PATH+"/cisco_safe/capability.xml",STENCIL_PATH+"/cisco_safe/design.xml",STENCIL_PATH+"/cisco_safe/iot_things_icons.xml",
-STENCIL_PATH+"/cisco_safe/people_places_things_icons.xml",STENCIL_PATH+"/cisco_safe/security_icons.xml",STENCIL_PATH+"/cisco_safe/technology_icons.xml",STENCIL_PATH+"/cisco_safe/threat.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.kubernetes=[SHAPES_PATH+"/mxKubernetes.js",STENCIL_PATH+"/kubernetes.xml"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];
-mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"];mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];
-mxStencilRegistry.libraries.ios7ui=[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/miscellaneous"]=
-[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/miscellaneous.xml"];mxStencilRegistry.libraries["electrical/signal_sources"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/signal_sources.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];
-mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]=[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];
-mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]=[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+
-"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.ibm=[SHAPES_PATH+"/mxIBM.js",STENCIL_PATH+"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=
-[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=
-[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=
-[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var X=mxMarker.createMarker;mxMarker.createMarker=function(b,d,c,g,e,k,f,m,l,p){if(null!=c&&null==mxMarker.markers[c]){var v=this.getPackageForType(c);null!=v&&mxStencilRegistry.getStencil(v)}return X.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){u.value=Math.max(1,
-Math.min(m,Math.max(parseInt(u.value),parseInt(n.value))));n.value=Math.max(1,Math.min(m,Math.min(parseInt(u.value),parseInt(n.value))))}function g(d){function c(d,c,k){var f=d.useCssTransforms,m=d.currentTranslate,l=d.currentScale,p=d.view.translate,v=d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=1,d.view.translate=new mxPoint(0,0),d.view.scale=1);var t=d.getGraphBounds(),n=0,u=0,y=H.get(),z=1/d.pageScale,A=q.checked;if(A)var z=parseInt(L.value),
-K=parseInt(C.value),z=Math.min(y.height*K/(t.height/d.view.scale),y.width*z/(t.width/d.view.scale));else z=parseInt(x.value)/(100*d.pageScale),isNaN(z)&&(g=1/d.pageScale,x.value="100 %");y=mxRectangle.fromRectangle(y);y.width=Math.ceil(y.width*g);y.height=Math.ceil(y.height*g);z*=g;!A&&d.pageVisible?(t=d.getPageLayout(),n-=t.x*y.width,u-=t.y*y.height):A=!0;if(null==c){c=PrintDialog.createPrintPreview(d,z,y,0,n,u,A);c.pageSelector=!1;c.mathEnabled=!1;n=b.getCurrentFile();null!=n&&(c.title=n.getTitle());
-var G=c.writeHead;c.writeHead=function(c){G.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),c.writeln("@media print {"),c.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),c.writeln("}"),c.writeln("</style>"));null!=b.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(b.editor.fontCss),c.writeln("</style>"));for(var g=
-d.getCustomFonts(),e=0;e<g.length;e++){var k=g[e].name,f=g[e].url;Graph.isCssFontUrl(f)?c.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(f)+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(k)+'";\nsrc: url("'+mxUtils.htmlEntities(f)+'");\n}'),c.writeln("</style>"))}};if("undefined"!==typeof MathJax){var O=c.renderPage;c.renderPage=function(d,c,g,e,k,f){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&
-!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var l=O.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}n=null;u=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(n=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());c.open(null,null,k,!0);e.enableFlowAnimation=u;null!=n&&(e.stylesheet=n,e.refresh())}else{y=d.background;if(null==
-y||""==y||y==mxConstants.NONE)y="#ffffff";c.backgroundColor=y;c.autoOrigin=A;c.appendGraph(d,z,n,u,k,!0);k=d.getCustomFonts();if(null!=c.wnd)for(n=0;n<k.length;n++)u=k[n].name,A=k[n].url,Graph.isCssFontUrl(A)?c.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(A)+'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),c.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(u)+'";\nsrc: url("'+mxUtils.htmlEntities(A)+'");\n}'),
-c.wnd.document.writeln("</style>"))}f&&(d.useCssTransforms=f,d.currentTranslate=m,d.currentScale=l,d.view.translate=p,d.view.scale=v);return c}var g=parseInt(S.value)/100;isNaN(g)&&(g=1,S.value="100 %");var g=.75*g,k=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(k=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var f=n.value,m=u.value,p=!v.checked,t=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,v.checked,f,m,q.checked,L.value,C.value,parseInt(x.value)/100,parseInt(S.value)/
-100,H.get());else{p&&(p=f==l&&m==l);if(!p&&null!=b.pages&&b.pages.length){var y=0,p=b.pages.length-1;v.checked||(y=parseInt(f)-1,p=parseInt(m)-1);for(var z=y;z<=p;z++){var A=b.pages[z],f=A==b.currentPage?e:null;if(null==f){var f=b.createTemporaryGraph(e.stylesheet),m=!0,y=!1,K=null,G=null;null==A.viewState&&null==A.root&&b.updatePageRoot(A);null!=A.viewState&&(m=A.viewState.pageVisible,y=A.viewState.mathEnabled,K=A.viewState.background,G=A.viewState.backgroundImage,f.extFonts=A.viewState.extFonts);
-f.background=K;f.backgroundImage=null!=G?new mxImage(G.src,G.width,G.height):null;f.pageVisible=m;f.mathEnabled=y;var O=f.getGlobalVariable;f.getGlobalVariable=function(d){return"page"==d?A.getName():"pagenumber"==d?z+1:"pagecount"==d?null!=b.pages?b.pages.length:1:O.apply(this,arguments)};document.body.appendChild(f.container);b.updatePageRoot(A);f.model.setRoot(A.root)}t=c(f,t,z!=p);f!=e&&f.container.parentNode.removeChild(f.container)}}else t=c(e);null==t?b.handleError({message:mxResources.get("errorUpdatingPreview")}):
-(t.mathEnabled&&(p=t.wnd.document,d&&(t.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&d&&PrintDialog.printPreview(t));null!=k&&(e.stylesheet=k,e.refresh())}}var e=b.editor.graph,k=document.createElement("div"),f=document.createElement("h3");f.style.width="100%";f.style.textAlign="center";f.style.marginTop="0px";mxUtils.write(f,d||mxResources.get("print"));k.appendChild(f);var m=1,l=1,p=
-document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var v=document.createElement("input");v.style.cssText="margin-right:8px;margin-bottom:8px;";v.setAttribute("value","all");v.setAttribute("type","radio");v.setAttribute("name","pages-printdialog");p.appendChild(v);f=document.createElement("span");mxUtils.write(f,mxResources.get("printAllPages"));p.appendChild(f);mxUtils.br(p);var t=v.cloneNode(!0);v.setAttribute("checked","checked");
-t.setAttribute("value","range");p.appendChild(t);f=document.createElement("span");mxUtils.write(f,mxResources.get("pages")+":");p.appendChild(f);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","1");n.setAttribute("type","number");n.setAttribute("min","1");n.style.width="50px";p.appendChild(n);f=document.createElement("span");mxUtils.write(f,mxResources.get("to"));p.appendChild(f);var u=n.cloneNode(!0);p.appendChild(u);mxEvent.addListener(n,"focus",
-function(){t.checked=!0});mxEvent.addListener(u,"focus",function(){t.checked=!0});mxEvent.addListener(n,"change",c);mxEvent.addListener(u,"change",c);if(null!=b.pages&&(m=b.pages.length,null!=b.currentPage))for(f=0;f<b.pages.length;f++)if(b.currentPage==b.pages[f]){l=f+1;n.value=l;u.value=l;break}n.setAttribute("max",m);u.setAttribute("max",m);b.isPagesEnabled()?1<m&&(k.appendChild(p),t.checked=!0):t.checked=!0;var y=document.createElement("div");y.style.marginBottom="10px";var z=document.createElement("input");
-z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");y.appendChild(z);f=document.createElement("span");mxUtils.write(f,mxResources.get("adjustTo"));y.appendChild(f);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width="50px";y.appendChild(x);mxEvent.addListener(x,"focus",function(){z.checked=!0});k.appendChild(y);var p=p.cloneNode(!1),q=z.cloneNode(!0);q.setAttribute("value",
-"fit");z.setAttribute("checked","checked");f=document.createElement("div");f.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";f.appendChild(q);p.appendChild(f);y=document.createElement("table");y.style.display="inline-block";var A=document.createElement("tbody"),K=document.createElement("tr"),G=K.cloneNode(!0),O=document.createElement("td"),M=O.cloneNode(!0),I=O.cloneNode(!0),F=O.cloneNode(!0),E=O.cloneNode(!0),D=O.cloneNode(!0);O.style.textAlign="right";F.style.textAlign=
-"right";mxUtils.write(O,mxResources.get("fitTo"));var L=document.createElement("input");L.style.cssText="margin:0 8px 0 8px;";L.setAttribute("value","1");L.setAttribute("min","1");L.setAttribute("type","number");L.style.width="40px";M.appendChild(L);f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsAcross"));I.appendChild(f);mxUtils.write(F,mxResources.get("fitToBy"));var C=L.cloneNode(!0);E.appendChild(C);mxEvent.addListener(L,"focus",function(){q.checked=!0});mxEvent.addListener(C,
-"focus",function(){q.checked=!0});f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsDown"));D.appendChild(f);K.appendChild(O);K.appendChild(M);K.appendChild(I);G.appendChild(F);G.appendChild(E);G.appendChild(D);A.appendChild(K);A.appendChild(G);y.appendChild(A);p.appendChild(y);k.appendChild(p);p=document.createElement("div");f=document.createElement("div");f.style.fontWeight="bold";f.style.marginBottom="12px";mxUtils.write(f,mxResources.get("paperSize"));p.appendChild(f);
-f=document.createElement("div");f.style.marginBottom="12px";var H=PageSetupDialog.addPageFormatPanel(f,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(f);f=document.createElement("span");mxUtils.write(f,mxResources.get("pageScale"));p.appendChild(f);var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";S.setAttribute("value","100 %");S.style.width="60px";p.appendChild(S);k.appendChild(p);f=document.createElement("div");f.style.cssText=
-"text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";b.editor.cancelFirst&&f.appendChild(p);b.isOffline()||(y=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),y.className="geBtn",f.appendChild(y));PrintDialog.previewEnabled&&(y=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();g(!1)}),y.className="geBtn",f.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?
-"print":"ok"),function(){b.hideDialog();g(!0)});y.className="geBtn gePrimaryBtn";f.appendChild(y);b.editor.cancelFirst||f.appendChild(p);k.appendChild(f);this.container=k};var ma=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 b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&
-(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}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 ma.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 ba=document.createElement("canvas"),S=new Image;S.onload=function(){try{ba.getContext("2d").drawImage(S,0,0);var b=ba.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=b&&6<b.length}catch(C){}};S.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(x){}})();
+arguments)}}return b};var G=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){G.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,b.text,b.secondLabel,b.control]};var I=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){I.apply(this,arguments);this.enumerationState=0};var L=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=
+function(b){null!=b.shape&&this.redrawEnumerationState(b);return L.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(b){b=mxUtils.getValue(b.style,"enumerateValue","");""==b&&(b=++this.enumerationState);return'<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(b)+"</div>"};mxGraphView.prototype.redrawEnumerationState=function(b){var d="1"==mxUtils.getValue(b.style,"enumerate",0);d&&null==b.secondLabel?(b.secondLabel=
+new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),b.secondLabel.size=12,b.secondLabel.state=b,b.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,this.graph.cellRenderer.initializeLabel(b,b.secondLabel)):d||null==b.secondLabel||(b.secondLabel.destroy(),b.secondLabel=null);d=b.secondLabel;if(null!=d){var c=b.view.scale,g=this.createEnumerationValue(b);b=this.graph.model.isVertex(b.cell)?new mxRectangle(b.x+b.width-4*c,b.y+4*c,0,0):mxRectangle.fromPoint(b.view.getPoint(b));
+d.bounds.equals(b)&&d.value==g&&d.scale==c||(d.bounds=b,d.value=g,d.scale=c,d.redraw())}};var M=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){M.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||
+this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};
+var K=Graph.prototype.refresh;Graph.prototype.refresh=function(){K.apply(this,arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var O=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){O.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==
+b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var c=!1,g=0,e=0,k=mxUtils.bind(this,function(){c||
+(c=!0,this.model.beginUpdate())}),f=mxUtils.bind(this,function(){c&&(c=!1,this.model.endUpdate())}),m=mxUtils.bind(this,function(){0<g&&g--;0==g&&l()}),l=mxUtils.bind(this,function(){if(e<b.length){var c=this.stoppingCustomActions,p=b[e++],v=[];if(null!=p.open)if(f(),this.isCustomLink(p.open)){if(!this.customLinkClicked(p.open))return}else this.openLink(p.open);null==p.wait||c||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;m()}),
+g++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=p.wait?parseInt(p.wait):1E3),f());null!=p.opacity&&null!=p.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(p.opacity,!0)),p.opacity.value);null!=p.fadeIn&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeIn,!0)),0,1,m,c?0:p.fadeIn.delay));null!=p.fadeOut&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeOut,!0)),1,0,m,c?0:p.fadeOut.delay));
+null!=p.wipeIn&&(v=v.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeIn,!0),!0)));null!=p.wipeOut&&(v=v.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeOut,!0),!1)));null!=p.toggle&&(k(),this.toggleCells(this.getCellsForAction(p.toggle,!0)));if(null!=p.show){k();var n=this.getCellsForAction(p.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(n),1);this.setCellsVisible(n,!0)}null!=p.hide&&(k(),n=this.getCellsForAction(p.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(n),
+0),this.setCellsVisible(n,!1));null!=p.toggleStyle&&null!=p.toggleStyle.key&&(k(),this.toggleCellStyles(p.toggleStyle.key,null!=p.toggleStyle.defaultValue?p.toggleStyle.defaultValue:"0",this.getCellsForAction(p.toggleStyle,!0)));null!=p.style&&null!=p.style.key&&(k(),this.setCellStyles(p.style.key,p.style.value,this.getCellsForAction(p.style,!0)));n=[];null!=p.select&&this.isEnabled()&&(n=this.getCellsForAction(p.select),this.setSelectionCells(n));null!=p.highlight&&(n=this.getCellsForAction(p.highlight),
+this.highlightCells(n,p.highlight.color,p.highlight.duration,p.highlight.opacity));null!=p.scroll&&(n=this.getCellsForAction(p.scroll));null!=p.viewbox&&this.fitWindow(p.viewbox,p.viewbox.border);0<n.length&&this.scrollCellToVisible(n[0]);if(null!=p.tags){n=[];null!=p.tags.hidden&&(n=n.concat(p.tags.hidden));if(null!=p.tags.visible)for(var t=this.getAllTags(),u=0;u<t.length;u++)0>mxUtils.indexOf(p.tags.visible,t[u])&&0>mxUtils.indexOf(n,t[u])&&n.push(t[u]);this.hiddenTags=n;this.refresh()}0<v.length&&
+(g++,this.executeAnimations(v,m,c?1:p.steps,c?0:p.delay));0==g?l():f()}else this.stoppingCustomActions=this.executingCustomActions=!1,f(),null!=d&&d()});l()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,d){var c=this.getLinkForCell(d);null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(d,this.updateCustomLink(b,c));if(this.isHtmlLabel(d)){var g=document.createElement("div");g.innerHTML=this.sanitizeHtml(this.getLabel(d));for(var e=g.getElementsByTagName("a"),k=!1,f=0;f<
+e.length;f++)c=e[f].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(e[f].setAttribute("href",this.updateCustomLink(b,c)),k=!0);k&&this.labelChanged(d,g.innerHTML)}};Graph.prototype.updateCustomLink=function(b,d){if("data:action/json,"==d.substring(0,17))try{var c=JSON.parse(d.substring(17));null!=c.actions&&(this.updateCustomLinkActions(b,c.actions),d="data:action/json,"+JSON.stringify(c))}catch(W){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<
+d.length;c++){var g=d[c],e;for(e in g)this.updateCustomLinkAction(b,g[e],"cells"),this.updateCustomLinkAction(b,g[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,d,c){if(null!=d&&null!=d[c]){for(var g=[],e=0;e<d[c].length;e++)if("*"==d[c][e])g.push(d[c][e]);else{var k=b[d[c][e]];null!=k?""!=k&&g.push(k):g.push(d[c][e])}d[c]=g}};Graph.prototype.getCellsForAction=function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var g=
+[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&g.push(c[e]);c=g}return c};Graph.prototype.getCellsById=function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==b[c])var g=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=g},g));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var U=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return U.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};
+Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,g){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());for(var k=0,f={},m=0;m<b.length;m++)0<b[m].length&&(f[b[m]]=!0,k++);for(m=0;m<d.length;m++)if(c&&this.model.getParent(d[m])==
+this.model.root||this.model.isVertex(d[m])||this.model.isEdge(d[m])){var l=this.getTagsForCell(d[m]),p=!1;if(0<l.length&&(l=l.split(" "),l.length>=b.length)){for(var v=p=0;v<l.length&&p<k;v++)null!=f[l[v]]&&p++;p=p==k}p&&(1!=g||this.isCellVisible(d[m]))&&e.push(d[m])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var d=null,c=[],g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]),
+c=[];if(0<e.length){for(var e=e.split(" "),k={},f=0;f<e.length;f++)if(null==d||null!=d[e[f]])k[e[f]]=!0,c.push(e[f]);d=k}else return[]}return c};Graph.prototype.getTagsForCells=function(b){for(var d=[],c={},g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]);if(0<e.length)for(var e=e.split(" "),k=0;k<e.length;k++)null==c[e[k]]&&(c[e[k]]=!0,d.push(e[k]))}return d};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,d){if(0<
+b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){for(var g=this.getTagsForCell(b[c]),e=g.split(" "),k=!1,f=0;f<d.length;f++){var m=mxUtils.trim(d[f]);""!=m&&0>mxUtils.indexOf(e,m)&&(g=0<g.length?g+" "+m:m,k=!0)}k&&this.setAttributeForCell(b[c],"tags",g)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var g=this.getTagsForCell(b[c]);if(0<g.length){for(var e=
+g.split(" "),k=!1,f=0;f<d.length;f++){var m=mxUtils.indexOf(e,d[f]);0<=m&&(e.splice(m,1),k=!0)}k&&this.setAttributeForCell(b[c],"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=function(b){this.model.beginUpdate();try{for(var d=0;d<b.length;d++)this.model.setVisible(b[d],!this.model.isVisible(b[d]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,d){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],d)}finally{this.model.endUpdate()}};
+Graph.prototype.highlightCells=function(b,d,c,g){for(var e=0;e<b.length;e++)this.highlightCell(b[e],d,c,g)};Graph.prototype.highlightCell=function(b,d,c,g){d=null!=d?d:mxConstants.DEFAULT_VALID_COLOR;c=null!=c?c:1E3;b=this.view.getState(b);if(null!=b){var e=Math.max(5,mxUtils.getValue(b.style,mxConstants.STYLE_STROKEWIDTH,1)+4),k=new mxCellHighlight(this,d,e,!1);null!=g&&(k.opacity=g);k.highlight(b);window.setTimeout(function(){null!=k.shape&&(mxUtils.setPrefixedStyle(k.shape.node.style,"transition",
+"all 1200ms ease-in-out"),k.shape.node.style.opacity=0);window.setTimeout(function(){k.destroy()},1200)},c)}};Graph.prototype.addSvgShadow=function(b,d,c,g){c=null!=c?c:!1;g=null!=g?g:!0;var e=b.ownerDocument,k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");k.setAttribute("id",this.shadowId);var f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");f.setAttribute("in","SourceAlpha");f.setAttribute("stdDeviation",
+this.svgShadowBlur);f.setAttribute("result","blur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");f.setAttribute("in","blur");f.setAttribute("dx",this.svgShadowSize);f.setAttribute("dy",this.svgShadowSize);f.setAttribute("result","offsetBlur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");f.setAttribute("flood-color",this.svgShadowColor);f.setAttribute("flood-opacity",
+this.svgShadowOpacity);f.setAttribute("result","offsetColor");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");f.setAttribute("in","offsetColor");f.setAttribute("in2","offsetBlur");f.setAttribute("operator","in");f.setAttribute("result","offsetBlur");k.appendChild(f);f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");f.setAttribute("in","SourceGraphic");f.setAttribute("in2",
+"offsetBlur");k.appendChild(f);f=b.getElementsByTagName("defs");0==f.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=b.firstChild?b.insertBefore(e,b.firstChild):b.appendChild(e)):e=f[0];e.appendChild(k);c||(d=null!=d?d:b.getElementsByTagName("g")[0],null!=d&&(d.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(b.getAttribute("width")))&&g&&(b.setAttribute("width",parseInt(b.getAttribute("width"))+6),b.setAttribute("height",
+parseInt(b.getAttribute("height"))+6),d=b.getAttribute("viewBox"),null!=d&&0<d.length&&(d=d.split(" "),3<d.length&&(w=parseFloat(d[2])+6,h=parseFloat(d[3])+6,b.setAttribute("viewBox",d[0]+" "+d[1]+" "+w+" "+h))))));return k};Graph.prototype.setShadowVisible=function(b,d){mxClient.IS_SVG&&!mxClient.IS_SF&&(d=null!=d?d:!0,(this.shadowVisible=b)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),d&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};
+Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var b=this.model.getChildCount(this.model.root),d,c=0;do d=this.model.getChildAt(this.model.root,c);while(c++<b&&"1"==mxUtils.getValue(this.getCellStyle(d),"locked","0"));null!=d&&this.setDefaultParent(d)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+
+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.bpmn2=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.c4=[SHAPES_PATH+"/mxC4.js"];mxStencilRegistry.libraries.cisco19=[SHAPES_PATH+"/mxCisco19.js",STENCIL_PATH+"/cisco19.xml"];mxStencilRegistry.libraries.cisco_safe=[SHAPES_PATH+"/mxCiscoSafe.js",STENCIL_PATH+"/cisco_safe/architecture.xml",
+STENCIL_PATH+"/cisco_safe/business_icons.xml",STENCIL_PATH+"/cisco_safe/capability.xml",STENCIL_PATH+"/cisco_safe/design.xml",STENCIL_PATH+"/cisco_safe/iot_things_icons.xml",STENCIL_PATH+"/cisco_safe/people_places_things_icons.xml",STENCIL_PATH+"/cisco_safe/security_icons.xml",STENCIL_PATH+"/cisco_safe/technology_icons.xml",STENCIL_PATH+"/cisco_safe/threat.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.kubernetes=
+[SHAPES_PATH+"/mxKubernetes.js",STENCIL_PATH+"/kubernetes.xml"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"];
+mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui=[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]=
+[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/miscellaneous"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/miscellaneous.xml"];mxStencilRegistry.libraries["electrical/signal_sources"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/signal_sources.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries.infographic=
+[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]=[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];
+mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]=[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",SHAPES_PATH+
+"/mxBasic.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.ibm=[SHAPES_PATH+"/mxIBM.js",STENCIL_PATH+"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=
+[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",
+STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+
+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var X=mxMarker.createMarker;mxMarker.createMarker=function(b,d,c,g,e,k,f,m,l,p){if(null!=c&&null==mxMarker.markers[c]){var v=this.getPackageForType(c);null!=v&&
+mxStencilRegistry.getStencil(v)}return X.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){u.value=Math.max(1,Math.min(m,Math.max(parseInt(u.value),parseInt(t.value))));t.value=Math.max(1,Math.min(m,Math.min(parseInt(u.value),parseInt(t.value))))}function g(d){function c(d,c,k){var f=d.useCssTransforms,m=d.currentTranslate,l=d.currentScale,p=d.view.translate,v=d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=1,
+d.view.translate=new mxPoint(0,0),d.view.scale=1);var n=d.getGraphBounds(),t=0,u=0,y=H.get(),z=1/d.pageScale,A=q.checked;if(A)var z=parseInt(L.value),K=parseInt(C.value),z=Math.min(y.height*K/(n.height/d.view.scale),y.width*z/(n.width/d.view.scale));else z=parseInt(x.value)/(100*d.pageScale),isNaN(z)&&(g=1/d.pageScale,x.value="100 %");y=mxRectangle.fromRectangle(y);y.width=Math.ceil(y.width*g);y.height=Math.ceil(y.height*g);z*=g;!A&&d.pageVisible?(n=d.getPageLayout(),t-=n.x*y.width,u-=n.y*y.height):
+A=!0;if(null==c){c=PrintDialog.createPrintPreview(d,z,y,0,t,u,A);c.pageSelector=!1;c.mathEnabled=!1;t=b.getCurrentFile();null!=t&&(c.title=t.getTitle());var G=c.writeHead;c.writeHead=function(c){G.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),c.writeln("@media print {"),c.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),c.writeln("}"),
+c.writeln("</style>"));null!=b.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(b.editor.fontCss),c.writeln("</style>"));for(var g=d.getCustomFonts(),e=0;e<g.length;e++){var k=g[e].name,f=g[e].url;Graph.isCssFontUrl(f)?c.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(f)+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(k)+'";\nsrc: url("'+mxUtils.htmlEntities(f)+'");\n}'),c.writeln("</style>"))}};
+if("undefined"!==typeof MathJax){var O=c.renderPage;c.renderPage=function(d,c,g,e,k,f){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var l=O.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}t=null;u=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(t=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),
+e.refresh());c.open(null,null,k,!0);e.enableFlowAnimation=u;null!=t&&(e.stylesheet=t,e.refresh())}else{y=d.background;if(null==y||""==y||y==mxConstants.NONE)y="#ffffff";c.backgroundColor=y;c.autoOrigin=A;c.appendGraph(d,z,t,u,k,!0);k=d.getCustomFonts();if(null!=c.wnd)for(t=0;t<k.length;t++)u=k[t].name,A=k[t].url,Graph.isCssFontUrl(A)?c.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(A)+'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),
+c.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(u)+'";\nsrc: url("'+mxUtils.htmlEntities(A)+'");\n}'),c.wnd.document.writeln("</style>"))}f&&(d.useCssTransforms=f,d.currentTranslate=m,d.currentScale=l,d.view.translate=p,d.view.scale=v);return c}var g=parseInt(S.value)/100;isNaN(g)&&(g=1,S.value="100 %");var g=.75*g,k=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(k=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var f=t.value,m=u.value,p=!v.checked,
+n=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,v.checked,f,m,q.checked,L.value,C.value,parseInt(x.value)/100,parseInt(S.value)/100,H.get());else{p&&(p=f==l&&m==l);if(!p&&null!=b.pages&&b.pages.length){var y=0,p=b.pages.length-1;v.checked||(y=parseInt(f)-1,p=parseInt(m)-1);for(var z=y;z<=p;z++){var A=b.pages[z],f=A==b.currentPage?e:null;if(null==f){var f=b.createTemporaryGraph(e.stylesheet),m=!0,y=!1,K=null,G=null;null==A.viewState&&null==A.root&&b.updatePageRoot(A);null!=A.viewState&&
+(m=A.viewState.pageVisible,y=A.viewState.mathEnabled,K=A.viewState.background,G=A.viewState.backgroundImage,f.extFonts=A.viewState.extFonts);f.background=K;f.backgroundImage=null!=G?new mxImage(G.src,G.width,G.height):null;f.pageVisible=m;f.mathEnabled=y;var O=f.getGlobalVariable;f.getGlobalVariable=function(d){return"page"==d?A.getName():"pagenumber"==d?z+1:"pagecount"==d?null!=b.pages?b.pages.length:1:O.apply(this,arguments)};document.body.appendChild(f.container);b.updatePageRoot(A);f.model.setRoot(A.root)}n=
+c(f,n,z!=p);f!=e&&f.container.parentNode.removeChild(f.container)}}else n=c(e);null==n?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(n.mathEnabled&&(p=n.wnd.document,d&&(n.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),n.closeDocument(),!n.mathEnabled&&d&&PrintDialog.printPreview(n));null!=k&&(e.stylesheet=k,e.refresh())}}var e=b.editor.graph,k=document.createElement("div"),f=document.createElement("h3");
+f.style.width="100%";f.style.textAlign="center";f.style.marginTop="0px";mxUtils.write(f,d||mxResources.get("print"));k.appendChild(f);var m=1,l=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var v=document.createElement("input");v.style.cssText="margin-right:8px;margin-bottom:8px;";v.setAttribute("value","all");v.setAttribute("type","radio");v.setAttribute("name","pages-printdialog");p.appendChild(v);f=document.createElement("span");
+mxUtils.write(f,mxResources.get("printAllPages"));p.appendChild(f);mxUtils.br(p);var n=v.cloneNode(!0);v.setAttribute("checked","checked");n.setAttribute("value","range");p.appendChild(n);f=document.createElement("span");mxUtils.write(f,mxResources.get("pages")+":");p.appendChild(f);var t=document.createElement("input");t.style.cssText="margin:0 8px 0 8px;";t.setAttribute("value","1");t.setAttribute("type","number");t.setAttribute("min","1");t.style.width="50px";p.appendChild(t);f=document.createElement("span");
+mxUtils.write(f,mxResources.get("to"));p.appendChild(f);var u=t.cloneNode(!0);p.appendChild(u);mxEvent.addListener(t,"focus",function(){n.checked=!0});mxEvent.addListener(u,"focus",function(){n.checked=!0});mxEvent.addListener(t,"change",c);mxEvent.addListener(u,"change",c);if(null!=b.pages&&(m=b.pages.length,null!=b.currentPage))for(f=0;f<b.pages.length;f++)if(b.currentPage==b.pages[f]){l=f+1;t.value=l;u.value=l;break}t.setAttribute("max",m);u.setAttribute("max",m);b.isPagesEnabled()?1<m&&(k.appendChild(p),
+n.checked=!0):n.checked=!0;var y=document.createElement("div");y.style.marginBottom="10px";var z=document.createElement("input");z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");y.appendChild(z);f=document.createElement("span");mxUtils.write(f,mxResources.get("adjustTo"));y.appendChild(f);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width="50px";y.appendChild(x);
+mxEvent.addListener(x,"focus",function(){z.checked=!0});k.appendChild(y);var p=p.cloneNode(!1),q=z.cloneNode(!0);q.setAttribute("value","fit");z.setAttribute("checked","checked");f=document.createElement("div");f.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";f.appendChild(q);p.appendChild(f);y=document.createElement("table");y.style.display="inline-block";var A=document.createElement("tbody"),K=document.createElement("tr"),G=K.cloneNode(!0),O=document.createElement("td"),
+M=O.cloneNode(!0),I=O.cloneNode(!0),F=O.cloneNode(!0),E=O.cloneNode(!0),D=O.cloneNode(!0);O.style.textAlign="right";F.style.textAlign="right";mxUtils.write(O,mxResources.get("fitTo"));var L=document.createElement("input");L.style.cssText="margin:0 8px 0 8px;";L.setAttribute("value","1");L.setAttribute("min","1");L.setAttribute("type","number");L.style.width="40px";M.appendChild(L);f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsAcross"));I.appendChild(f);mxUtils.write(F,
+mxResources.get("fitToBy"));var C=L.cloneNode(!0);E.appendChild(C);mxEvent.addListener(L,"focus",function(){q.checked=!0});mxEvent.addListener(C,"focus",function(){q.checked=!0});f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsDown"));D.appendChild(f);K.appendChild(O);K.appendChild(M);K.appendChild(I);G.appendChild(F);G.appendChild(E);G.appendChild(D);A.appendChild(K);A.appendChild(G);y.appendChild(A);p.appendChild(y);k.appendChild(p);p=document.createElement("div");f=
+document.createElement("div");f.style.fontWeight="bold";f.style.marginBottom="12px";mxUtils.write(f,mxResources.get("paperSize"));p.appendChild(f);f=document.createElement("div");f.style.marginBottom="12px";var H=PageSetupDialog.addPageFormatPanel(f,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(f);f=document.createElement("span");mxUtils.write(f,mxResources.get("pageScale"));p.appendChild(f);var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";
+S.setAttribute("value","100 %");S.style.width="60px";p.appendChild(S);k.appendChild(p);f=document.createElement("div");f.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";b.editor.cancelFirst&&f.appendChild(p);b.isOffline()||(y=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),y.className="geBtn",f.appendChild(y));PrintDialog.previewEnabled&&(y=
+mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();g(!1)}),y.className="geBtn",f.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();g(!0)});y.className="geBtn gePrimaryBtn";f.appendChild(y);b.editor.cancelFirst||f.appendChild(p);k.appendChild(f);this.container=k};var na=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 b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}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 na.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 ca=document.createElement("canvas"),S=new Image;S.onload=function(){try{ca.getContext("2d").drawImage(S,0,0);var b=ca.toDataURL("image/png");Editor.prototype.useCanvasForExport=
+null!=b&&6<b.length}catch(C){}};S.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(x){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,e,f){f.ui=b.ui;return e};b.afterDecode=function(b,e,f){f.previousColor=f.color;f.previousImage=f.image;f.previousFormat=f.format;null!=f.foldingEnabled&&(f.foldingEnabled=!f.foldingEnabled);null!=f.mathEnabled&&(f.mathEnabled=!f.mathEnabled);null!=f.shadowVisible&&(f.shadowVisible=!f.shadowVisible);return f};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,e,f){f.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.2.7";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(b,e,f){f.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.3.0";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="1"==urlParams.dev?"/cache":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.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(b,c,g,e,f,l,n){l=null!=l?l:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -3445,19 +3451,19 @@ null!=p.viewState&&d.setBackgroundImage(p.viewState.backgroundImage);d.getGlobal
l){l=null!=l?l:!0;var d=null,k=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=c){var d=l?c.getGraphBounds():c.getBoundingBox(c.getSelectionCells()),m=c.view.scale;l=Math.floor(d.x/m-c.view.translate.x);m=Math.floor(d.y/m-c.view.translate.y);d=c.background;null==f&&(c=this.getBasenames().join(";"),0<c.length&&(k=EditorUi.drawHost+"/embed.js?s="+c));b.setAttribute("x0",l);b.setAttribute("y0",m)}null!=b&&(b.setAttribute("pan","1"),b.setAttribute("zoom","1"),b.setAttribute("resize","0"),b.setAttribute("fit",
"0"),b.setAttribute("border","20"),b.setAttribute("links","1"),null!=e&&b.setAttribute("edit",e));null!=f&&(f=f.replace(/&/g,"&amp;"));b=null!=b?Graph.zapGremlins(mxUtils.getXml(b)):"";e=Graph.compress(b);Graph.decompress(e)!=b&&(e=encodeURIComponent(b));return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=f?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==f?null!=g?"<title>"+mxUtils.htmlEntities(g)+
"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=f?'<meta http-equiv="refresh" content="0;URL=\''+f+"'\"/>\n":"")+"</head>\n<body"+(null==f&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+e+"</div>\n</div>\n"+(null==f?'<script type="text/javascript" src="'+k+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+
-f+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(b,c,e,f,m){c=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=m&&(m=m.replace(/&/g,"&amp;"));b={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(b),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(b.page=mxUtils.indexOf(this.pages,this.currentPage));
-return(null==m?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=m?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==m?null!=e?"<title>"+mxUtils.htmlEntities(e)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=m?'<meta http-equiv="refresh" content="0;URL=\''+m+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+
-mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==m?'<script type="text/javascript" src="'+c+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+m+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(b){b=this.validateFileData(b);this.pages=this.fileNode=this.currentPage=null;b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:
+f+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(b,c,g,e,f){c=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=f&&(f=f.replace(/&/g,"&amp;"));b={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(b),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(b.page=mxUtils.indexOf(this.pages,this.currentPage));
+return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=f?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==f?null!=g?"<title>"+mxUtils.htmlEntities(g)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=f?'<meta http-equiv="refresh" content="0;URL=\''+f+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+
+mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==f?'<script type="text/javascript" src="'+c+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+f+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(b){b=this.validateFileData(b);this.pages=this.fileNode=this.currentPage=null;b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:
null;var d=Editor.extractParserError(b,mxResources.get("invalidOrMissingFile"));if(d)throw Error(mxResources.get("notADiagramFile")+" ("+d+")");d=null!=b?this.editor.extractGraphModel(b,!0):null;null!=d&&(b=d);if(null!=b&&"mxfile"==b.nodeName&&(d=b.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){var c=null;this.fileNode=b;this.pages=[];for(var e=0;e<d.length;e++)null==d[e].getAttribute("id")&&d[e].setAttribute("id",e),b=new DiagramPage(d[e]),
null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[e+1])),this.pages.push(b),null!=urlParams["page-id"]&&b.getId()==urlParams["page-id"]&&(c=b);this.currentPage=null!=c?c:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];b=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=b&&(this.fileNode=b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",
[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(b);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");b={};for(e=0;e<f.length;e++)b[f[e]]=!0;for(var l=this.editor.graph.getModel(),n=l.getChildren(l.root),e=0;e<n.length;e++){var t=n[e];l.setVisible(t,b[t.id]||!1)}}catch(z){}};EditorUi.prototype.getBaseFilename=function(b){var d=this.getCurrentFile(),d=null!=d&&null!=d.getTitle()?d.getTitle():
-this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));/(\.drawio)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(b,c,e,f,m,l,n,t,z,y,q,D){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();
-var d=this.getBaseFilename("remoteSvg"==b?!1:!m),g=d+("xml"==b||"pdf"==b&&q?".drawio":"")+"."+b;if("xml"==b){var k=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,f,m,null,null,null,c);this.saveData(g,b,k,"text/xml")}else if("html"==b)k=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g,b,k,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export"))){var p,v;if("xmlpng"==b)g=d+".png";else if("jpeg"==b)g=d+".jpg";else if("remoteSvg"==
-b){g=d+".svg";b="svg";var u=parseInt(z);if(0<u){var F=this.editor.graph,M=F.getGraphBounds(),K=parseInt(t)/100;p=Math.ceil(M.width*K/F.view.scale+2*u);v=Math.ceil(M.height*K/F.view.scale+2*u)}}this.saveRequest(g,b,mxUtils.bind(this,function(d,c){try{var e=this.editor.graph.pageVisible;null!=l&&(this.editor.graph.pageVisible=l);var g=this.createDownloadRequest(d,b,f,c,n,m,t,z,y,q,D,p,v);this.editor.graph.pageVisible=e;return g}catch(J){this.handleError(J)}}))}else{var O=null,U=mxUtils.bind(this,function(b){b.length<=
-MAX_REQUEST_SIZE?this.saveData(g,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(O)}))});if("svg"==b){var X=this.editor.graph.background;if(n||X==mxConstants.NONE)X=null;var ma=this.editor.graph.getSvg(X,null,null,null,null,f);e&&this.editor.graph.addSvgShadow(ma);this.editor.convertImages(ma,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();U(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+
-"\n"+mxUtils.getXml(b))})))}else g=d+".svg",O=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();U(b)}),f)}}catch(ba){this.handleError(ba)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,f,m,l,n,t,z,y,q,D,E){var d=this.editor.graph,g=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==l?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var k="",p="";if(g.width*g.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};y=y?
-"1":"0";"pdf"==c&&(null!=q?p="&from="+q.from+"&to="+q.to:0==l&&(p="&allPages=1"));"xmlpng"==c&&(y="1",c="png");if(("xmlpng"==c||"svg"==c)&&null!=this.pages&&null!=this.currentPage)for(l=0;l<this.pages.length;l++)if(this.pages[l]==this.currentPage){k="&from="+l;break}l=d.background;"png"!=c&&"pdf"!=c&&"svg"!=c||!m?m||null!=l&&l!=mxConstants.NONE||(l="#ffffff"):l=mxConstants.NONE;m={globalVars:d.getExportVariables()};z&&(m.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});Graph.translateDiagram&&
-(m.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+k+p+"&bg="+(null!=l?l:mxConstants.NONE)+"&base64="+f+"&embedXml="+y+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(m))+(null!=n?"&scale="+n:"")+(null!=t?"&border="+t:"")+(D&&isFinite(D)?"&w="+D:"")+(E&&isFinite(E)?"&h="+E:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=
+this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));/(\.drawio)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(b,c,e,f,l,n,u,t,z,y,q,D){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();
+var d=this.getBaseFilename("remoteSvg"==b?!1:!l),g=d+("xml"==b||"pdf"==b&&q?".drawio":"")+"."+b;if("xml"==b){var k=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,f,l,null,null,null,c);this.saveData(g,b,k,"text/xml")}else if("html"==b)k=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g,b,k,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export"))){var m,p;if("xmlpng"==b)g=d+".png";else if("jpeg"==b)g=d+".jpg";else if("remoteSvg"==
+b){g=d+".svg";b="svg";var v=parseInt(z);if(0<v){var F=this.editor.graph,M=F.getGraphBounds(),K=parseInt(t)/100;m=Math.ceil(M.width*K/F.view.scale+2*v);p=Math.ceil(M.height*K/F.view.scale+2*v)}}this.saveRequest(g,b,mxUtils.bind(this,function(d,c){try{var e=this.editor.graph.pageVisible;null!=n&&(this.editor.graph.pageVisible=n);var g=this.createDownloadRequest(d,b,f,c,u,l,t,z,y,q,D,m,p);this.editor.graph.pageVisible=e;return g}catch(J){this.handleError(J)}}))}else{var O=null,U=mxUtils.bind(this,function(b){b.length<=
+MAX_REQUEST_SIZE?this.saveData(g,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(O)}))});if("svg"==b){var X=this.editor.graph.background;if(u||X==mxConstants.NONE)X=null;var na=this.editor.graph.getSvg(X,null,null,null,null,f);e&&this.editor.graph.addSvgShadow(na);this.editor.convertImages(na,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();U(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+
+"\n"+mxUtils.getXml(b))})))}else g=d+".svg",O=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();U(b)}),f)}}catch(ca){this.handleError(ca)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,f,l,n,u,t,z,y,q,D,E){var d=this.editor.graph,g=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==n?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var k="",m="";if(g.width*g.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};y=y?
+"1":"0";"pdf"==c&&(null!=q?m="&from="+q.from+"&to="+q.to:0==n&&(m="&allPages=1"));"xmlpng"==c&&(y="1",c="png");if(("xmlpng"==c||"svg"==c)&&null!=this.pages&&null!=this.currentPage)for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){k="&from="+n;break}n=d.background;"png"!=c&&"pdf"!=c&&"svg"!=c||!l?l||null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;l={globalVars:d.getExportVariables()};z&&(l.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});Graph.translateDiagram&&
+(l.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+k+m+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+f+"&embedXml="+y+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(l))+(null!=u?"&scale="+u:"")+(null!=t?"&border="+t:"")+(D&&isFinite(D)?"&w="+D:"")+(E&&isFinite(E)?"&h="+E:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=
window.location.hash,g=mxUtils.bind(this,function(e){var g=null!=b.data?b.data:"";null!=e&&0<e.length&&(0<g.length&&(g+="\n"),g+=e);e=new LocalFile(this,"csv"!=b.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);e.getHash=function(){return d};this.fileLoaded(e);"csv"==b.format&&this.importCsv(g,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var k=
null!=b.interval?parseInt(b.interval):6E4,f=null,l=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(b){d===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),m()):this.handleError({message:mxResources.get("error")+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),m=mxUtils.bind(this,function(){window.clearTimeout(f);
f=window.setTimeout(l,k)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){m();l()}));m();l()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){g(b)}),mxUtils.bind(this,function(b){null!=e&&e(b)})):g("")};EditorUi.prototype.updateDiagram=function(b){function d(b){var d=new mxCellOverlay(b.image||f.warningImage,b.tooltip,b.align,b.valign,b.offset);d.addListener(mxEvent.CLICK,function(d,c){e.alert(b.tooltip)});return d}var c=null,
@@ -3466,12 +3472,12 @@ q[D].nodeName,0<q[D].nodeValue.length?q[D].nodeValue:null)}}catch(M){null!=windo
t.id+": "+M)}try{var A=b.getAttribute("geometry");if(null!=A){var A=JSON.parse(A),G=f.getCellGeometry(t);if(null!=G){G=G.clone();for(key in A){var I=parseFloat(A[key]);"dx"==key?G.x+=I:"dy"==key?G.y+=I:"dw"==key?G.width+=I:"dh"==key?G.height+=I:G[key]=parseFloat(A[key])}f.model.setGeometry(t,G)}}}catch(M){null!=window.console&&console.log("Error in icon for "+t.id+": "+M)}}}else if("model"==b.nodeName){for(var L=b.firstChild;null!=L&&L.nodeType!=mxConstants.NODETYPE_ELEMENT;)L=L.nextSibling;null!=
L&&(new mxCodec(b.firstChild)).decode(L,l)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(f.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(n=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):1);b=b.nextSibling}}finally{l.endUpdate()}null!=n&&this.chromelessResize&&this.chromelessResize(!0,n)}return c};
EditorUi.prototype.getCopyFilename=function(b,c){var d=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,e="",k=d.lastIndexOf(".");0<=k&&(e=d.substring(k),d=d.substring(0,k));if(c)var f=new Date,k=f.getFullYear(),l=f.getMonth()+1,n=f.getDate(),z=f.getHours(),y=f.getMinutes(),f=f.getSeconds(),d=d+(" "+(k+"-"+l+"-"+n+"-"+z+"-"+y+"-"+f));return d=mxResources.get("copyOf",[d])+e};EditorUi.prototype.fileLoaded=function(b,c){var d=this.getCurrentFile();this.fileEditable=this.fileLoadedError=
-null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=d&&(EditorUi.debug("File.closed",[d]),d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var k=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&
+null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=d&&(EditorUi.debug("File.closed",[d]),d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var f=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&
(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();c||this.showSplash()});if(null!=b)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(b);b.addListener("descriptorChanged",this.descriptorChangedListener);b.addListener("contentChanged",this.descriptorChangedListener);b.open();
delete this.openingFile;this.setGraphEnabled(!0);this.setMode(b.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();b.isEditable()?b.isModified()?(b.addUnsavedStatus(),null!=b.backupPatch&&b.patch([b.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),
-this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));e=!0;if(!this.isOffline()&&null!=b.getMode()){var f="1"==urlParams.sketch?"sketch":uiTheme;if(null==f)f="default";else if("sketch"==f||"min"==f)f+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:b.getMode().toUpperCase()+"-OPEN-FILE-"+b.getHash(),
-action:"size_"+b.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+f})}EditorUi.debug("File.opened",[b]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));if(this.editor.editable&&this.mode==b.getMode()&&b.getMode()!=App.MODE_DEVICE&&null!=b.getMode())try{this.addRecent({id:b.getHash(),title:b.getTitle(),mode:b.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=
-u;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=b?b.getHash():"none"),action:"message_"+u.message,label:"stack_"+u.stack})}catch(t){}f=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):k()});c?f():this.handleError(u,mxResources.get("errorLoadingFile"),f,!0,null,null,!0)}else k();return e};EditorUi.prototype.getHashValueForPages=
+this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));e=!0;if(!this.isOffline()&&null!=b.getMode()){var k="1"==urlParams.sketch?"sketch":uiTheme;if(null==k)k="default";else if("sketch"==k||"min"==k)k+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:b.getMode().toUpperCase()+"-OPEN-FILE-"+b.getHash(),
+action:"size_"+b.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+k})}EditorUi.debug("File.opened",[b]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));if(this.editor.editable&&this.mode==b.getMode()&&b.getMode()!=App.MODE_DEVICE&&null!=b.getMode())try{this.addRecent({id:b.getHash(),title:b.getTitle(),mode:b.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=
+u;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=b?b.getHash():"none"),action:"message_"+u.message,label:"stack_"+u.stack})}catch(t){}k=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):f()});c?k():this.handleError(u,mxResources.get("errorLoadingFile"),k,!0,null,null,!0)}else f();return e};EditorUi.prototype.getHashValueForPages=
function(b,c){var d=0,e=new mxGraphModel,f=new mxCodec;null!=c&&(c.byteCount=0,c.attrCount=0,c.eltCount=0,c.nodeCount=0);for(var k=0;k<b.length;k++){this.updatePageRoot(b[k]);var l=b[k].node.cloneNode(!1);l.removeAttribute("name");e.root=b[k].root;var n=f.encode(e);this.editor.graph.saveViewState(b[k].viewState,n,!0);n.removeAttribute("pageWidth");n.removeAttribute("pageHeight");l.appendChild(n);null!=c&&(c.eltCount+=l.getElementsByTagName("*").length,c.nodeCount+=l.getElementsByTagName("mxCell").length);
d=(d<<5)-d+this.hashValue(l,function(b,d,c,e){return!e||"mxGeometry"!=b.nodeName&&"mxPoint"!=b.nodeName||"x"!=d&&"y"!=d&&"width"!=d&&"height"!=d?e&&"mxCell"==b.nodeName&&"previous"==d?null:c:Math.round(c)},c)<<0}return d};EditorUi.prototype.hashValue=function(b,c,e){var d=0;if(null!=b&&"object"===typeof b&&"number"===typeof b.nodeType&&"string"===typeof b.nodeName&&"function"===typeof b.getAttribute){null!=b.nodeName&&(d^=this.hashValue(b.nodeName,c,e));if(null!=b.attributes){null!=e&&(e.attrCount+=
b.attributes.length);for(var g=0;g<b.attributes.length;g++){var f=b.attributes[g].name,k=null!=c?c(b,f,b.attributes[g].value,!0):b.attributes[g].value;null!=k&&(d^=this.hashValue(f,c,e)+this.hashValue(k,c,e))}}if(null!=b.childNodes)for(g=0;g<b.childNodes.length;g++)d=(d<<5)-d+this.hashValue(b.childNodes[g],c,e)<<0}else if(null!=b&&"function"!==typeof b){b=String(b);c=0;null!=e&&(e.byteCount+=b.length);for(g=0;g<b.length;g++)c=(c<<5)-c+b.charCodeAt(g)<<0;d^=c}return d};EditorUi.prototype.descriptorChanged=
@@ -3490,100 +3496,100 @@ mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=E.getSele
"#f1f3f4",l.style.cursor="copy",E.panningManager.stop(),E.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){E.isMouseDown&&null!=E.panningManager&&null!=E.graphHandler&&(l.style.backgroundColor="",l.style.cursor="default",this.sidebar.showTooltips=!0,E.panningManager.stop(),E.graphHandler.reset(),E.isMouseDown=!1,E.autoScroll=!0,I(b),mxEvent.consume(b))}));mxEvent.addListener(l,"mouseleave",mxUtils.bind(this,function(b){E.isMouseDown&&null!=E.graphHandler.first&&(E.graphHandler.resume(),
null!=E.graphHandler.hint&&(E.graphHandler.hint.style.visibility="visible"),l.style.backgroundColor="",l.style.cursor="",E.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(l,"dragover",mxUtils.bind(this,function(b){l.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";l.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(l,"drop",mxUtils.bind(this,function(b){l.style.cursor="";l.style.backgroundColor="";0<b.dataTransfer.files.length&&
this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,e,f,m,p,n,v,t,u){if(null!=d&&"image/"==e.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,p,n),d)],d[0].vertex=!0,G(d,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:v.substring(0,v.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),
-g=null);else{var y=!1,z=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var f=Editor.extractGraphModelFromPdf(d);null!=f&&0<f.length&&(d=f)}if(null!=d)if(f=mxUtils.parseXml(d),"mxlibrary"==f.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(f.documentElement));k(m,l);c=c.concat(m);A(b);this.spinner.stop();y=!0}catch(na){}else if("mxfile"==f.documentElement.nodeName)try{for(var p=f.documentElement.getElementsByTagName("diagram"),m=0;m<p.length;m++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[m])),
-v=this.editor.graph.getBoundingBoxFromGeometry(n);G(n,new mxRectangle(0,0,v.width,v.height),b)}y=!0}catch(na){null!=window.console&&console.log("error in drop handler:",na)}y||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)});null!=u&&null!=v&&(/(\.v(dx|sdx?))($|\?)/i.test(v)||/(\.vs(x|sx?))($|\?)/i.test(v))?this.importVisio(u,function(b){z(b,"text/xml")},null,v):!this.isOffline()&&
+g=null);else{var y=!1,z=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var f=Editor.extractGraphModelFromPdf(d);null!=f&&0<f.length&&(d=f)}if(null!=d)if(f=mxUtils.parseXml(d),"mxlibrary"==f.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(f.documentElement));k(m,l);c=c.concat(m);A(b);this.spinner.stop();y=!0}catch(oa){}else if("mxfile"==f.documentElement.nodeName)try{for(var p=f.documentElement.getElementsByTagName("diagram"),m=0;m<p.length;m++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[m])),
+v=this.editor.graph.getBoundingBoxFromGeometry(n);G(n,new mxRectangle(0,0,v.width,v.height),b)}y=!0}catch(oa){null!=window.console&&console.log("error in drop handler:",oa)}y||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)});null!=u&&null!=v&&(/(\.v(dx|sdx?))($|\?)/i.test(v)||/(\.vs(x|sx?))($|\?)/i.test(v))?this.importVisio(u,function(b){z(b,"text/xml")},null,v):!this.isOffline()&&
(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,v)&&null!=u?this.parseFile(u,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?z(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):z(d,e)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(l,"dragleave",function(b){l.style.cursor="";l.style.backgroundColor="";b.stopPropagation();
b.preventDefault()}));q=q.cloneNode(!1);q.setAttribute("src",Editor.editImage);q.setAttribute("title",mxResources.get("edit"));n.insertBefore(q,n.firstChild);mxEvent.addListener(q,"click",N);mxEvent.addListener(l,"dblclick",function(b){mxEvent.getSource(b)==l&&N(b)});f=q.cloneNode(!1);f.setAttribute("src",Editor.plusImage);f.setAttribute("title",mxResources.get("add"));n.insertBefore(f,n.firstChild);mxEvent.addListener(f,"click",I);this.isOffline()||".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||
(f=document.createElement("span"),f.setAttribute("title",mxResources.get("help")),f.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(f,"?"),mxEvent.addGestureListeners(f,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),n.insertBefore(f,n.firstChild))}p.appendChild(n);p.style.paddingRight=18*n.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(b,c){for(var d=0;d<b.length;d++){var e=b[d],
f=e.data;if(null!=f){var f=this.convertDataUri(f),k="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==e.aspect&&(k+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(k+"image="+f,e.w,e.h,"",e.title||"",!1,null,!0))}else null!=e.xml&&(f=this.stringToCells(Graph.decompress(e.xml)),0<f.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(f,e.w,e.h,e.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(b){return null!=b?b[mxLanguage]||
b.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=
41,EditorUi.prototype.toolbarHeight=38):Editor.isDarkMode()&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor=Editor.darkColor,Format.inactiveTabBackgroundColor="black",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.shapeBackgroundColor=Editor.darkColor,Graph.prototype.shapeForegroundColor=Editor.lightColor,Graph.prototype.defaultPageBackgroundColor=Editor.darkColor,Graph.prototype.defaultPageBorderColor="#505759",BaseFormatPanel.prototype.buttonBackgroundColor=
-Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource="https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter";Editor.sketchFonts=[{fontFamily:Editor.sketchFontFamily,fontUrl:decodeURIComponent(Editor.sketchFontSource)},{fontFamily:"Rock Salt",fontUrl:"https://fonts.googleapis.com/css?family=Rock+Salt"},
-{fontFamily:"Permanent Marker",fontUrl:"https://fonts.googleapis.com/css?family=Permanent+Marker"}];"1"==urlParams.sketch&&("undefined"!==typeof Menus&&(Menus.prototype.defaultFonts=Menus.prototype.defaultFonts.concat(Editor.sketchFonts)),Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle={edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=
-".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(b,c,e,f,l,n,u){b=new ImageDialog(this,b,c,e,f,l,n,u);this.showDialog(b.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=
-function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,d){if(!d){var c=new ChangePageSetup(this,null,b);c.ignoreColor=!0;this.editor.graph.model.execute(c)}});var d=new BackgroundImageDialog(this,b,c);this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(b,c,e,f,l){b=new LibraryDialog(this,b,c,e,f,l);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};
-var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var d=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";
-c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var e=c.getElementsByTagName("span")[0];e.style.fontSize="18px";e.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};
-EditorUi.prototype.handleError=function(b,c,e,f,l,n,u){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{u?null!=window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(H){}if(null!=g||null!=c){u=mxUtils.htmlEntities(mxResources.get("unknownError"));var k=
-mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=g){null!=g.retry&&(k=mxResources.get("cancel"),m=function(){d();g.retry()});if(404==g.code||404==g.status||403==g.code){u=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=l?l:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var p=null!=
-l?null:null!=n?n:window.location.hash;if(null!=p&&("#G"==p.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==p.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==g.code||404==g.status)){p="#U"==p.substring(0,2)?p.substring(45,p.lastIndexOf("%26ex")):p.substring(2);this.showError(c,u,mxResources.get("openInNewWindow"),
-mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+p);this.handleError(b,c,e,f,l)}),m,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){g.innerHTML="";for(var b=0;b<d.length;b++){var c=document.createElement("option");mxUtils.write(c,d[b].displayName);c.value=b;g.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(c,"<"+d[b].email+">");c.setAttribute("disabled","disabled");g.appendChild(c)}c=
-document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=d.length;g.appendChild(c)}var d=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+": ");c.appendChild(e);var g=document.createElement("select");g.style.width="200px";b();mxEvent.addListener(g,"change",mxUtils.bind(this,function(){var c=g.value,e=d.length!=c;e&&this.drive.setUser(d[c]);this.drive.authorize(e,
-mxUtils.bind(this,function(){e||(d=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));c.appendChild(g);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=e&&e()}),480,150);return}}null!=g.message?u=""==g.message&&null!=g.name?mxUtils.htmlEntities(g.name):mxUtils.htmlEntities(g.message):
-null!=g.response&&null!=g.response.error?u=mxUtils.htmlEntities(g.response.error):"undefined"!==typeof window.App&&(g.code==App.ERROR_TIMEOUT?u=mxUtils.htmlEntities(mxResources.get("timeout")):g.code==App.ERROR_BUSY?u=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof g&&0<g.length&&(u=mxUtils.htmlEntities(g)))}var v=n=null;null!=g&&null!=g.helpLink?(n=mxResources.get("help"),v=mxUtils.bind(this,function(){return this.editor.graph.openLink(g.helpLink)})):null!=g&&null!=g.ownerEmail&&
-(n=mxResources.get("contactOwner"),u+=mxUtils.htmlEntities(" ("+n+": "+g.ownerEmail+")"),v=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(g.ownerEmail))}));this.showError(c,u,k,e,m,null,null,n,v,null,null,null,f?e:null)}else null!=e&&e()};EditorUi.prototype.alert=function(b,c,e){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,e||340,100,!0,!1);b.init()};EditorUi.prototype.confirm=function(b,c,e,f,l,n){var d=null!=this.spinner&&null!=
-this.spinner.pause?this.spinner.pause():function(){},g=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){d();null!=c&&c()},function(){d();null!=e&&e()},f,l,null,null,null,null,g);this.showDialog(b.container,340,46+g,!0,n);b.init()};EditorUi.prototype.showBanner=function(b,c,e,f){var d=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+b])){var g=document.createElement("div");g.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+
-mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(g.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(g.style,"transition","all 1s ease");g.className="geBtn gePrimaryBtn";d=document.createElement("img");d.setAttribute("src",IMAGE_PATH+"/logo.png");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";g.appendChild(d);
-d=document.createElement("img");d.setAttribute("src",Dialog.prototype.closeImage);d.setAttribute("title",mxResources.get(f?"doNotShowAgain":"close"));d.setAttribute("border","0");d.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";g.appendChild(d);mxUtils.write(g,c);document.body.appendChild(g);this.bannerShowing=!0;c=document.createElement("div");c.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var k=document.createElement("input");
-k.setAttribute("type","checkbox");k.setAttribute("id","geDoNotShowAgainCheckbox");k.style.marginRight="6px";if(!f){c.appendChild(k);var l=document.createElement("label");l.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(l,mxResources.get("doNotShowAgain"));c.appendChild(l);g.style.paddingBottom="30px";g.appendChild(c)}var p=mxUtils.bind(this,function(){null!=g.parentNode&&(g.parentNode.removeChild(g),this.bannerShowing=!1,k.checked||f)&&(this["hideBanner"+b]=!0,isLocalStorage&&null!=
-mxSettings.settings&&(mxSettings.settings["close"+b]=Date.now(),mxSettings.save()))});mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){mxEvent.consume(b);p()}));var n=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){p()}),1E3)});mxEvent.addListener(g,"click",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);d!=k&&d!=l?(null!=e&&e(),p(),mxEvent.consume(b)):n()}));window.setTimeout(mxUtils.bind(this,
-function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(n,3E4);d=!0}return d};EditorUi.prototype.setCurrentFile=function(b){null!=b&&(b.opened=new Date);this.currentFile=b};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(b,c,e,f){b=b.toDataURL("image/"+e);if(null!=b&&6<b.length)null!=c&&(b=Editor.writeGraphModelToPng(b,
-"tEXt","mxfile",encodeURIComponent(c))),0<f&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",f));else throw{message:mxResources.get("unknownError")};return b};EditorUi.prototype.saveCanvas=function(b,c,e,f,l){var d="jpeg"==e?"jpg":e;f=this.getBaseFilename(f)+(null!=c?".drawio":"")+"."+d;b=this.createImageDataUri(b,c,e,l);this.saveData(f,d,b.substring(b.lastIndexOf(",")+1),"image/"+e,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&
-"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var d=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));d.textarea.style.width="600px";d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,e,f,
-l,n){"text/xml"!=e||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=n?n:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=f?this.base64ToBlob(b,e):new Blob([b],{type:e}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)e=window.open("about:blank","_blank"),null==e?mxUtils.popup(b,!0):(e.document.write(b),e.document.close(),e.document.execCommand("SaveAs",!0,c),e.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||
-null==e||"image/"!=e.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,e,f);else{var d=document.createElement("a");n=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);n=65==(g?parseInt(g[2],10):!1)?!1:n}if(n||this.isOffline()){d.href=URL.createObjectURL(f?this.base64ToBlob(b,e):new Blob([b],{type:e}));n?d.download=c:d.setAttribute("target",
-"_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(z){}}else this.createEchoRequest(b,c,e,f,l).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,e,f,l,n){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,b+(null!=e?"&mime="+e:"")+(null!=l?"&format="+l:"")+(null!=n?"&base64="+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=
-function(b,c){c=c||"";for(var d=atob(b),e=d.length,f=Math.ceil(e/1024),k=Array(f),l=0;l<f;++l){for(var n=1024*l,q=Math.min(n+1024,e),y=Array(q-n),F=0;n<q;++F,++n)y[F]=d[n].charCodeAt(0);k[l]=new Uint8Array(y)}return new Blob(k,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,e,f,l,n,u,t){n=null!=n?n:!1;u=null!=u?u:"vsdx"!=l&&(!mxClient.IS_IOS||!navigator.standalone);l=this.getServiceCount(n);isLocalStorage&&l++;var d=4>=l?2:6<l?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(d,c){try{if("_blank"==
-c)if(null!=e&&"image/"==e.substring(0,6))this.openInNewWindow(b,e,f);else if(null!=e&&"text/html"==e.substring(0,9)){var g=new EmbedDialog(this,b);this.showDialog(g.container,450,240,!0,!0);g.init()}else{var k=window.open("about:blank");null==k?mxUtils.popup(b,!0):(k.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),k.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,f,null,t):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(g){try{this.exportFile(b,
-d,e,f,c,g)}catch(N){this.handleError(N)}}))}catch(H){this.handleError(H)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,u,null,1<l,d,b,e,f);n=this.isServices(l)?l>d?390:270:160;this.showDialog(c.container,420,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(b,c,e){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?d.document.write("<html>"+
-b+"</html>"):(b=e?b:btoa(unescape(encodeURIComponent(b))),d.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):d.document.write("<html><pre>"+mxUtils.htmlEntities(b,!1)+"</pre></html>"),d.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};
-EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var d=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",
-this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height="auto",this.tagsComponent.div.style.position="fixed",this.tagsComponent.div.style.fontFamily=Editor.defaultHtmlFont,mxClient.IS_IE||mxClient.IS_IE11?(this.tagsComponent.div.style.backgroundColor="#ffffff",this.tagsComponent.div.style.border="2px solid black",this.tagsComponent.div.style.color=
-"#000000"):(this.tagsComponent.div.style.backgroundColor="#000000",this.tagsComponent.div.style.color="#ffffff",mxUtils.setOpacity(this.tagsComponent.div,80)));if(null!=this.tagsDialog)this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null;else{this.tagsDialog=this.tagsComponent.div;mxEvent.addListener(this.tagsDialog,"mouseleave",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));var c=d.getBoundingClientRect();
-this.tagsDialog.style.left=c.left+"px";this.tagsDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=c.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(b)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,
-mxUtils.bind(this,function(){var b=this.editor.graph.getAllTags();d.style.display=0<b.length?"":"none"}))}f.apply(this,arguments);this.editor.addListener("tagsDialogShown",mxUtils.bind(this,function(){null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));this.editor.addListener("layersDialogShown",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));this.editor.addListener("pageSelected",
-mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));mxEvent.addListener(this.editor.graph.container,"click",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),
-this.layersDialog=null)}));if(this.isExportToCanvas()&&this.isChromelessImageExportEnabled()){this.exportDialog=null;var c=b(mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",d);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)d.apply(this);else{this.exportDialog=document.createElement("div");var e=c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,
-"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily=Editor.defaultHtmlFont;this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=e.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
-this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=e.zIndex;var g=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(b){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(b,
-null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));b.setAttribute("border","0");b.setAttribute("src",c);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,
-function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,e,f,l){this.isLocalFileSave()?this.saveLocalFile(e,b,f,l,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,d){return this.createEchoRequest(e,b,f,l,c,d)}),e,l,f)};EditorUi.prototype.saveRequest=
-function(b,c,e,f,l,n,u){u=null!=u?u:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);isLocalStorage&&d++;var g=4>=d?2:6<d?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){if("_blank"==d||null!=b&&0<b.length){var g=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":
-"image/"+c;if(null!=f)try{this.exportFile(f,b,n,!0,d,e)}catch(H){this.handleError(H)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),b,n,!0,d,e)}catch(H){this.handleError(H)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),
-mxResources.get("saveAs"),mxResources.get("download"),!1,!1,u,null,1<d,g,f,n,l);d=this.isServices(d)?4<d?390:270:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,f,l,n){};EditorUi.prototype.pickFolder=function(b,c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,f,l,n,u,t,q,y,F,D,E,H){if(this.spinner.spin(document.body,
-mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var g=c?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==c&&(g=F?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var k=this.editor.graph.getSvg(g,b,u,t,null,e,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,F,D);f&&this.editor.graph.addSvgShadow(k);var m=this.getBaseFilename()+(l?".drawio":"")+".svg";H=null!=H?H:mxUtils.bind(this,function(b){this.isLocalFileSave()||
-b.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var p=mxUtils.bind(this,function(b){this.spinner.stop();l&&b.setAttribute("content",this.getFileData(!0,null,null,null,e,q,null,null,null,!1));H(Graph.xmlDeclaration+"\n"+(l?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(k);
-var v=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,p,this.thumbImageCache)):p(b)});E?this.embedFonts(k,v):(this.editor.addFontCss(k),v(k))}catch(K){this.handleError(K)}};EditorUi.prototype.addRadiobox=function(b,c,e,f,l,n,u){return this.addCheckbox(b,e,f,l,n,u,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,e,f,l,n,u,t){n=null!=n?n:!0;var d=document.createElement("input");d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",
-u?"radio":"checkbox");u="geCheckbox-"+Editor.guid();d.id=u;null!=t&&d.setAttribute("name",t);e&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);f&&d.setAttribute("disabled","disabled");n&&(b.appendChild(d),e=document.createElement("label"),mxUtils.write(e,c),e.setAttribute("for",u),b.appendChild(e),l||mxUtils.br(b));return d};EditorUi.prototype.addEditButton=function(b,c){var d=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);d.style.marginLeft="24px";var e=this.getCurrentFile(),
-f="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var k=document.createElement("select");k.style.maxWidth="200px";k.style.width="auto";k.style.marginLeft="8px";k.style.marginRight="10px";k.className="geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("makeCopy"));k.appendChild(e);e=document.createElement("option");e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");
-k.appendChild(e);b.appendChild(k);mxEvent.addListener(k,"change",mxUtils.bind(this,function(){if("custom"==k.value){var b=new FilenameDialog(this,f,mxResources.get("ok"),function(b){null!=b?f=b:k.value="blank"},mxResources.get("url"),null,null,null,null,function(){k.value="blank"});this.showDialog(b.container,300,80,!0,!1);b.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==c||c.checked)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")}));
-mxUtils.br(b);return{getLink:function(){return d.checked?"blank"===k.value?"_blank":f:null},getEditInput:function(){return d},getEditSelect:function(){return k}}};EditorUi.prototype.addLinkSection=function(b,c){function d(){var b=document.createElement("div");b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=k&&k!=mxConstants.NONE?(b.style.border="1px solid black",b.style.backgroundColor=k):(b.style.backgroundPosition="center center",b.style.backgroundRepeat="no-repeat",
-b.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");l.innerHTML="";l.appendChild(b)}mxUtils.write(b,mxResources.get("links")+":");var e=document.createElement("select");e.style.width="100px";e.style.padding="0px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));e.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,
-mxResources.get("openInNewWindow"));e.appendChild(f);f=document.createElement("option");f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));e.appendChild(f);c&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),e.appendChild(f));b.appendChild(e);mxUtils.write(b,mxResources.get("borderColor")+":");var k="#0000ff",l=null,l=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(k||
-"none",function(b){k=b;d()});mxEvent.consume(b)}));d();l.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";l.style.marginLeft="4px";l.style.height="22px";l.style.width="22px";l.style.position="relative";l.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";l.className="geColorBtn";b.appendChild(l);mxUtils.br(b);return{getColor:function(){return k},getTarget:function(){return e.value},focus:function(){e.focus()}}};EditorUi.prototype.createUrlParameters=function(b,c,e,f,l,n,
-u){u=null!=u?u:[];f&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||u.push("lightbox=1"),"auto"!=b&&u.push("target="+b),null!=c&&c!=mxConstants.NONE&&u.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=l&&0<l.length&&u.push("edit="+encodeURIComponent(l)),n&&u.push("layers=1"),this.editor.graph.foldingEnabled&&u.push("nav=1"));e&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&u.push("page-id="+this.currentPage.getId());return u};EditorUi.prototype.createLink=
-function(b,c,e,f,l,n,u,t,q,y){q=this.createUrlParameters(b,c,e,f,l,n,q);b=this.getCurrentFile();c=!0;null!=u?e="#U"+encodeURIComponent(u):(b=this.getCurrentFile(),t||null==b||b.constructor!=window.DriveFile?e="#R"+encodeURIComponent(e?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(e="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=this.defaultFilename&&q.push("title="+encodeURIComponent(b.getTitle()));y&&
-1<e.length&&(q.push("open="+e.substring(1)),e="");return(f&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<q.length?"?"+q.join("&"):"")+e};EditorUi.prototype.createHtml=function(b,c,e,f,l,n,u,t,q,y,F,D){this.getBasenames();var d={};""!=l&&l!=mxConstants.NONE&&(d.highlight=l);"auto"!==f&&(d.target=f);y||(d.lightbox=!1);d.nav=this.editor.graph.foldingEnabled;
-e=parseInt(e);isNaN(e)||100==e||(d.zoom=e/100);e=[];u&&(e.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(e.push("zoom"),d.resize=!0);t&&e.push("layers");q&&e.push("tags");0<e.length&&(y&&e.push("lightbox"),d.toolbar=e.join(" "));null!=F&&0<F.length&&(d.edit=F);null!=b?d.url=b:d.xml=this.getFileData(!0,null,null,null,null,!u);c='<div class="mxgraph" style="'+(n?"max-width:100%;":"")+(""!=e?"border:1px solid transparent;":
-"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';b=null!=b?"&fetch="+encodeURIComponent(b):"";D(c,'<script type="text/javascript" src="'+(0<b.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,
-c,e,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value",
-"url");l.setAttribute("type","radio");l.setAttribute("name","type-embedhtmldialog");g=l.cloneNode(!0);g.setAttribute("value","copy");k.appendChild(g);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));k.appendChild(p);mxUtils.br(k);k.appendChild(l);p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));k.appendChild(p);var n=this.getCurrentFile();null==e&&null!=n&&n.constructor==window.DriveFile&&(p=document.createElement("a"),
-p.style.paddingLeft="12px",p.style.color="gray",p.style.cursor="pointer",mxUtils.write(p,mxResources.get("share")),k.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(n.getId())})));g.setAttribute("checked","checked");null==e&&l.setAttribute("disabled","disabled");d.appendChild(k);var q=this.addLinkSection(d),D=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var E=document.createElement("input");E.setAttribute("type",
-"text");E.style.marginRight="16px";E.style.width="60px";E.style.marginLeft="4px";E.style.marginRight="12px";E.value="100%";d.appendChild(E);var H=this.addCheckbox(d,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,N=N=this.addCheckbox(d,mxResources.get("allPages"),k,!k),A=this.addCheckbox(d,mxResources.get("layers"),!0),G=this.addCheckbox(d,mxResources.get("tags"),!0),I=this.addCheckbox(d,mxResources.get("lightbox"),!0),L=this.addEditButton(d,I),M=L.getEditInput();M.style.marginBottom=
-"16px";mxEvent.addListener(I,"change",function(){I.checked?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled");M.checked&&I.checked?L.getEditSelect().removeAttribute("disabled"):L.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){f(l.checked?e:null,D.checked,E.value,q.getTarget(),q.getColor(),H.checked,N.checked,A.checked,G.checked,I.checked,L.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=
-function(b,c,e,f,l,n,u,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,b||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var k=this.getCurrentFile();b=0;if(null==k||k.constructor!=window.DriveFile||c)u=null!=u?u:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;u=null!=u?u:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";
-g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));g.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(k.getId())}));m.style.marginTop="12px";m.className="geBtn";g.appendChild(m);d.appendChild(g);m=document.createElement("a");
-m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.style.cursor="pointer";mxUtils.write(m,mxResources.get("check"));g.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,
-300,80,!0,!1);b.init()}))}))}var p=null,v=null;if(null!=e||null!=f)b+=30,mxUtils.write(d,mxResources.get("width")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.marginRight="16px",p.style.width="50px",p.style.marginLeft="6px",p.style.marginRight="16px",p.style.marginBottom="10px",p.value="100%",d.appendChild(p),mxUtils.write(d,mxResources.get("height")+":"),v=document.createElement("input"),v.setAttribute("type","text"),v.style.width="50px",v.style.marginLeft="6px",v.style.marginBottom=
-"10px",v.value=f+"px",d.appendChild(v),mxUtils.br(d);var q=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var A=null;if(null==k||k.constructor!=window.DriveFile||c)A=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var G=this.addCheckbox(d,mxResources.get("lightbox"),!0,null,null,!n),I=this.addEditButton(d,G),L=I.getEditInput();n&&(L.style.marginLeft=G.style.marginLeft,G.style.display="none",b-=20);var M=this.addCheckbox(d,mxResources.get("layers"),!0);M.style.marginLeft=L.style.marginLeft;
-M.style.marginTop="8px";var K=this.addCheckbox(d,mxResources.get("tags"),!0);K.style.marginLeft=L.style.marginLeft;K.style.marginBottom="16px";K.style.marginTop="16px";mxEvent.addListener(G,"change",function(){G.checked?(M.removeAttribute("disabled"),L.removeAttribute("disabled")):(M.setAttribute("disabled","disabled"),L.setAttribute("disabled","disabled"));L.checked&&G.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,
-d,mxUtils.bind(this,function(){l(q.getTarget(),q.getColor(),null==A?!0:A.checked,G.checked,I.getLink(),M.checked,null!=p?p.value:null,null!=v?v.value:null,K.checked)}),null,mxResources.get("create"),u,t);this.showDialog(c.container,340,300+b,!0,!0);null!=p?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)):q.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace=
-"nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(l?"10":"4")+"px";d.appendChild(g);if(l){mxUtils.write(d,mxResources.get("zoom")+":");var k=document.createElement("input");k.setAttribute("type","text");k.style.marginRight="16px";k.style.width="60px";k.style.marginLeft="4px";k.style.marginRight="12px";k.value=this.lastExportZoom||"100%";d.appendChild(k);mxUtils.write(d,mxResources.get("borderWidth")+
-":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.value=this.lastExportBorder||"0";d.appendChild(m);mxUtils.br(d)}var p=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=f?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),g=this.editor.graph,q=f?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==
-mxConstants.NONE||null==g.background);null!=q&&(q.style.marginBottom="16px");b=new CustomDialog(this,d,mxUtils.bind(this,function(){var b=parseInt(k.value)/100||1,d=parseInt(m.value)||0;e(!p.checked,null!=n?n.checked:!1,null!=q?q.checked:!1,b,d)}),null,b,c);this.showDialog(b.container,300,(l?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,e,f,l,n,u,t,q){u=null!=u?u:Editor.defaultIncludeDiagram;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph,
-k="jpeg"==t?220:300,m=document.createElement("h3");mxUtils.write(m,b);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(m);mxUtils.write(d,mxResources.get("zoom")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="12px";p.value=this.lastExportZoom||"100%";d.appendChild(p);mxUtils.write(d,mxResources.get("borderWidth")+":");var v=document.createElement("input");
-v.setAttribute("type","text");v.style.marginRight="16px";v.style.width="60px";v.style.marginLeft="4px";v.value=this.lastExportBorder||"0";d.appendChild(v);mxUtils.br(d);var A=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),z=document.createElement("input");z.style.marginTop="16px";z.style.marginRight="8px";z.style.marginLeft="24px";z.setAttribute("disabled","disabled");z.setAttribute("type","checkbox");var I=document.createElement("select");I.style.marginTop="16px";I.style.marginLeft=
-"8px";b=["selectionOnly","diagram","page"];for(var L={},m=0;m<b.length;m++)if(!g.isSelectionEmpty()||"selectionOnly"!=b[m]){var M=document.createElement("option");mxUtils.write(M,mxResources.get(b[m]));M.setAttribute("value",b[m]);I.appendChild(M);L[b[m]]=M}q?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(I),mxUtils.br(d),k+=26,mxEvent.addListener(I,"change",function(){"selectionOnly"==I.value&&(A.checked=!0)})):n&&(d.appendChild(z),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),
-k+=30,mxEvent.addListener(A,"change",function(){A.checked?z.removeAttribute("disabled"):z.setAttribute("disabled","disabled")}));g.isSelectionEmpty()?q&&(A.style.display="none",A.nextSibling.style.display="none",A.nextSibling.nextSibling.style.display="none",k-=30):(I.value="diagram",z.setAttribute("checked","checked"),z.defaultChecked=!0,mxEvent.addListener(A,"change",function(){I.value=A.checked?"selectionOnly":"diagram"}));var K=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,
-null,"jpeg"!=t),O=null;Editor.isDarkMode()&&(O=this.addCheckbox(d,mxResources.get("dark"),!0),k+=26);var U=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),X=null;if("png"==t||"jpeg"==t)X=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),k+=30;var ma=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),u,null,null,"jpeg"!=t);ma.style.marginBottom="16px";var ba=document.createElement("input");ba.style.marginBottom="16px";ba.style.marginRight=
-"8px";ba.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ba.setAttribute("disabled","disabled");var S=document.createElement("select");S.style.maxWidth="260px";S.style.marginLeft="8px";S.style.marginRight="10px";S.style.marginBottom="16px";S.className="geBtn";n=document.createElement("option");n.setAttribute("value","none");mxUtils.write(n,mxResources.get("noChange"));S.appendChild(n);n=document.createElement("option");n.setAttribute("value","embedFonts");mxUtils.write(n,
-mxResources.get("embedFonts"));S.appendChild(n);n=document.createElement("option");n.setAttribute("value","lblToSvg");mxUtils.write(n,mxResources.get("lblToSvg"));S.appendChild(n);this.isOffline()&&n.setAttribute("disabled","disabled");mxEvent.addListener(S,"change",mxUtils.bind(this,function(){"lblToSvg"==S.value?(ba.checked=!0,ba.setAttribute("disabled","disabled"),L.page.style.display="none","page"==I.value&&(I.value="diagram"),U.checked=!1,U.setAttribute("disabled","disabled"),C.style.display=
-"inline-block",x.style.display="none"):"disabled"==ba.getAttribute("disabled")&&(ba.checked=!1,ba.removeAttribute("disabled"),U.removeAttribute("disabled"),L.page.style.display="",C.style.display="none",x.style.display="")}));c&&(d.appendChild(ba),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),mxUtils.write(d,mxResources.get("txtSettings")+":"),d.appendChild(S),mxUtils.br(d),k+=60);var x=document.createElement("select");x.style.maxWidth="260px";x.style.marginLeft="8px";x.style.marginRight=
-"10px";x.className="geBtn";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));x.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));x.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));x.appendChild(c);var C=document.createElement("div");mxUtils.write(C,mxResources.get("LinksLost"));
-C.style.margin="7px";C.style.display="none";"svg"==t&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(x),d.appendChild(C),mxUtils.br(d),mxUtils.br(d),k+=50);e=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=v.value;this.lastExportZoom=p.value;l(p.value,K.checked,!A.checked,U.checked,ma.checked,ba.checked,v.value,z.checked,!1,x.value,null!=X?X.checked:null,null!=O?O.checked:null,I.value,"embedFonts"==S.value,"lblToSvg"==S.value)}),null,e,f);this.showDialog(e.container,
-340,k,!0,!0,null,null,null,null,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=c){var k=document.createElement("h3");mxUtils.write(k,c);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(k)}var m=this.addCheckbox(d,mxResources.get("fit"),
-!0),p=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),n=this.addCheckbox(d,e),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),E=this.addEditButton(d,q),H=E.getEditInput(),N=1<g.model.getChildCount(g.model.getRoot()),A=this.addCheckbox(d,mxResources.get("layers"),N,!N);A.style.marginLeft=H.style.marginLeft;A.style.marginBottom="12px";A.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(N&&A.removeAttribute("disabled"),H.removeAttribute("disabled")):
-(A.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"));H.checked&&q.checked?E.getEditSelect().removeAttribute("disabled"):E.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){b(m.checked,p.checked,n.checked,q.checked,E.getLink(),A.checked)}),null,mxResources.get("embed"),l);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,f,l,n,u,t){function d(d){var c=" ",m="";f&&(c=" 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('"+
+Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource=encodeURIComponent(STYLE_PATH+"/fonts/ArchitectsDaughter-Regular.ttf");Editor.sketchFonts=[{fontFamily:Editor.sketchFontFamily,fontUrl:decodeURIComponent(Editor.sketchFontSource)}];"1"==urlParams.sketch&&("undefined"!==typeof Menus&&(Menus.prototype.defaultFonts=Menus.prototype.defaultFonts.concat(Editor.sketchFonts)),
+Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle={edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=
+new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(b,c,e,f,l,n,u){b=new ImageDialog(this,b,c,e,f,l,n,u);this.showDialog(b.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,d){if(!d){var c=new ChangePageSetup(this,null,b);c.ignoreColor=!0;this.editor.graph.model.execute(c)}});var d=new BackgroundImageDialog(this,b,c);this.showDialog(d.container,
+360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(b,c,e,f,l){b=new LibraryDialog(this,b,c,e,f,l);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var d=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&
+d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var e=c.getElementsByTagName("span")[0];e.style.fontSize="18px";e.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+
+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,e,f,l,n,u){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{u?null!=
+window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(H){}if(null!=g||null!=c){u=mxUtils.htmlEntities(mxResources.get("unknownError"));var k=mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=g){null!=g.retry&&(k=mxResources.get("cancel"),m=function(){d();g.retry()});if(404==g.code||404==g.status||403==g.code){u=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):
+mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=l?l:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var p=null!=l?null:null!=n?n:window.location.hash;if(null!=p&&("#G"==p.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==p.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||
+null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==g.code||404==g.status)){p="#U"==p.substring(0,2)?p.substring(45,p.lastIndexOf("%26ex")):p.substring(2);this.showError(c,u,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+p);this.handleError(b,c,e,f,l)}),m,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){g.innerHTML="";for(var b=0;b<d.length;b++){var c=document.createElement("option");
+mxUtils.write(c,d[b].displayName);c.value=b;g.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(c,"<"+d[b].email+">");c.setAttribute("disabled","disabled");g.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=d.length;g.appendChild(c)}var d=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+
+": ");c.appendChild(e);var g=document.createElement("select");g.style.width="200px";b();mxEvent.addListener(g,"change",mxUtils.bind(this,function(){var c=g.value,e=d.length!=c;e&&this.drive.setUser(d[c]);this.drive.authorize(e,mxUtils.bind(this,function(){e||(d=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));c.appendChild(g);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,
+300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=e&&e()}),480,150);return}}null!=g.message?u=""==g.message&&null!=g.name?mxUtils.htmlEntities(g.name):mxUtils.htmlEntities(g.message):null!=g.response&&null!=g.response.error?u=mxUtils.htmlEntities(g.response.error):"undefined"!==typeof window.App&&(g.code==App.ERROR_TIMEOUT?u=mxUtils.htmlEntities(mxResources.get("timeout")):g.code==App.ERROR_BUSY?u=mxUtils.htmlEntities(mxResources.get("busy")):"string"===
+typeof g&&0<g.length&&(u=mxUtils.htmlEntities(g)))}var v=n=null;null!=g&&null!=g.helpLink?(n=mxResources.get("help"),v=mxUtils.bind(this,function(){return this.editor.graph.openLink(g.helpLink)})):null!=g&&null!=g.ownerEmail&&(n=mxResources.get("contactOwner"),u+=mxUtils.htmlEntities(" ("+n+": "+g.ownerEmail+")"),v=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(g.ownerEmail))}));this.showError(c,u,k,e,m,null,null,n,v,null,null,null,f?e:null)}else null!=e&&e()};EditorUi.prototype.alert=
+function(b,c,e){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,e||340,100,!0,!1);b.init()};EditorUi.prototype.confirm=function(b,c,e,f,l,n){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){d();null!=c&&c()},function(){d();null!=e&&e()},f,l,null,null,null,null,g);this.showDialog(b.container,340,46+g,!0,n);b.init()};EditorUi.prototype.showBanner=function(b,
+c,e,f){var d=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+b])){var g=document.createElement("div");g.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(g.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(g.style,"transform",
+"translate(-50%,120%)");mxUtils.setPrefixedStyle(g.style,"transition","all 1s ease");g.className="geBtn gePrimaryBtn";d=document.createElement("img");d.setAttribute("src",IMAGE_PATH+"/logo.png");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";g.appendChild(d);d=document.createElement("img");d.setAttribute("src",Dialog.prototype.closeImage);d.setAttribute("title",mxResources.get(f?"doNotShowAgain":
+"close"));d.setAttribute("border","0");d.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";g.appendChild(d);mxUtils.write(g,c);document.body.appendChild(g);this.bannerShowing=!0;c=document.createElement("div");c.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var k=document.createElement("input");k.setAttribute("type","checkbox");k.setAttribute("id","geDoNotShowAgainCheckbox");k.style.marginRight="6px";if(!f){c.appendChild(k);
+var l=document.createElement("label");l.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(l,mxResources.get("doNotShowAgain"));c.appendChild(l);g.style.paddingBottom="30px";g.appendChild(c)}var p=mxUtils.bind(this,function(){null!=g.parentNode&&(g.parentNode.removeChild(g),this.bannerShowing=!1,k.checked||f)&&(this["hideBanner"+b]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+b]=Date.now(),mxSettings.save()))});mxEvent.addListener(d,"click",mxUtils.bind(this,
+function(b){mxEvent.consume(b);p()}));var n=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){p()}),1E3)});mxEvent.addListener(g,"click",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);d!=k&&d!=l?(null!=e&&e(),p(),mxEvent.consume(b)):n()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(n,3E4);d=!0}return d};
+EditorUi.prototype.setCurrentFile=function(b){null!=b&&(b.opened=new Date);this.currentFile=b};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(b,c,e,f){b=b.toDataURL("image/"+e);if(null!=b&&6<b.length)null!=c&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(c))),0<f&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",f));else throw{message:mxResources.get("unknownError")};
+return b};EditorUi.prototype.saveCanvas=function(b,c,e,f,l){var d="jpeg"==e?"jpg":e;f=this.getBaseFilename(f)+(null!=c?".drawio":"")+"."+d;b=this.createImageDataUri(b,c,e,l);this.saveData(f,d,b.substring(b.lastIndexOf(",")+1),"image/"+e,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||
+mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var d=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,e,f,l,n){"text/xml"!=e||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=n?n:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=f?this.base64ToBlob(b,
+e):new Blob([b],{type:e}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)e=window.open("about:blank","_blank"),null==e?mxUtils.popup(b,!0):(e.document.write(b),e.document.close(),e.document.execCommand("SaveAs",!0,c),e.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==e||"image/"!=e.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,e,f);else{var d=document.createElement("a");n=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&
+"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);n=65==(g?parseInt(g[2],10):!1)?!1:n}if(n||this.isOffline()){d.href=URL.createObjectURL(f?this.base64ToBlob(b,e):new Blob([b],{type:e}));n?d.download=c:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(z){}}else this.createEchoRequest(b,c,e,
+f,l).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,e,f,l,n){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,b+(null!=e?"&mime="+e:"")+(null!=l?"&format="+l:"")+(null!=n?"&base64="+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var d=atob(b),e=d.length,f=Math.ceil(e/1024),k=Array(f),l=0;l<f;++l){for(var n=1024*l,q=Math.min(n+1024,e),y=Array(q-n),F=0;n<q;++F,++n)y[F]=
+d[n].charCodeAt(0);k[l]=new Uint8Array(y)}return new Blob(k,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,e,f,l,n,u,t){n=null!=n?n:!1;u=null!=u?u:"vsdx"!=l&&(!mxClient.IS_IOS||!navigator.standalone);l=this.getServiceCount(n);isLocalStorage&&l++;var d=4>=l?2:6<l?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(d,c){try{if("_blank"==c)if(null!=e&&"image/"==e.substring(0,6))this.openInNewWindow(b,e,f);else if(null!=e&&"text/html"==e.substring(0,9)){var g=new EmbedDialog(this,b);this.showDialog(g.container,
+450,240,!0,!0);g.init()}else{var k=window.open("about:blank");null==k?mxUtils.popup(b,!0):(k.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),k.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,f,null,t):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(g){try{this.exportFile(b,d,e,f,c,g)}catch(N){this.handleError(N)}}))}catch(H){this.handleError(H)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
+!1,n,u,null,1<l,d,b,e,f);n=this.isServices(l)?l>d?390:280:160;this.showDialog(c.container,420,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(b,c,e){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?d.document.write("<html>"+b+"</html>"):(b=e?b:btoa(unescape(encodeURIComponent(b))),d.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):d.document.write("<html><pre>"+
+mxUtils.htmlEntities(b,!1)+"</pre></html>"),d.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var d=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&
+(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height=
+"auto",this.tagsComponent.div.style.position="fixed",this.tagsComponent.div.style.fontFamily=Editor.defaultHtmlFont,mxClient.IS_IE||mxClient.IS_IE11?(this.tagsComponent.div.style.backgroundColor="#ffffff",this.tagsComponent.div.style.border="2px solid black",this.tagsComponent.div.style.color="#000000"):(this.tagsComponent.div.style.backgroundColor="#000000",this.tagsComponent.div.style.color="#ffffff",mxUtils.setOpacity(this.tagsComponent.div,80)));if(null!=this.tagsDialog)this.tagsDialog.parentNode.removeChild(this.tagsDialog),
+this.tagsDialog=null;else{this.tagsDialog=this.tagsComponent.div;mxEvent.addListener(this.tagsDialog,"mouseleave",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));var c=d.getBoundingClientRect();this.tagsDialog.style.left=c.left+"px";this.tagsDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=
+c.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(b)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var b=this.editor.graph.getAllTags();d.style.display=0<b.length?"":"none"}))}f.apply(this,arguments);this.editor.addListener("tagsDialogShown",mxUtils.bind(this,function(){null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),
+this.layersDialog=null)}));this.editor.addListener("layersDialogShown",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));this.editor.addListener("pageSelected",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));mxEvent.addListener(this.editor.graph.container,
+"click",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));if(this.isExportToCanvas()&&this.isChromelessImageExportEnabled()){this.exportDialog=null;var c=b(mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",d);null!=this.exportDialog&&
+(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)d.apply(this);else{this.exportDialog=document.createElement("div");var e=c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily=Editor.defaultHtmlFont;this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width=
+"50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=e.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=e.zIndex;var g=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",
+speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(b){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(b,null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));
+b.setAttribute("border","0");b.setAttribute("src",c);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),
+Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,e,f,l){this.isLocalFileSave()?this.saveLocalFile(e,b,f,l,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,d){return this.createEchoRequest(e,b,f,l,c,d)}),e,l,f)};EditorUi.prototype.saveRequest=function(b,c,e,f,l,n,u){u=null!=u?u:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);isLocalStorage&&d++;var g=4>=d?2:6<d?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){if("_blank"==
+d||null!=b&&0<b.length){var g=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=f)try{this.exportFile(f,b,n,!0,d,e)}catch(H){this.handleError(H)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=
+g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),b,n,!0,d,e)}catch(H){this.handleError(H)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,u,null,1<d,g,f,n,l);d=this.isServices(d)?4<d?390:280:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=
+b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,f,l,n){};EditorUi.prototype.pickFolder=function(b,c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,f,l,n,u,t,q,y,F,D,E,H){if(this.spinner.spin(document.body,mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var g=c?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==c&&(g=F?this.editor.graph.defaultPageBackgroundColor:
+"#ffffff");var k=this.editor.graph.getSvg(g,b,u,t,null,e,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,F,D);f&&this.editor.graph.addSvgShadow(k);var m=this.getBaseFilename()+(l?".drawio":"")+".svg";H=null!=H?H:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var p=mxUtils.bind(this,
+function(b){this.spinner.stop();l&&b.setAttribute("content",this.getFileData(!0,null,null,null,e,q,null,null,null,!1));H(Graph.xmlDeclaration+"\n"+(l?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(k);var v=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,p,this.thumbImageCache)):p(b)});E?this.embedFonts(k,v):(this.editor.addFontCss(k),v(k))}catch(K){this.handleError(K)}};
+EditorUi.prototype.addRadiobox=function(b,c,e,f,l,n,u){return this.addCheckbox(b,e,f,l,n,u,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,e,f,l,n,u,t){n=null!=n?n:!0;var d=document.createElement("input");d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",u?"radio":"checkbox");u="geCheckbox-"+Editor.guid();d.id=u;null!=t&&d.setAttribute("name",t);e&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);f&&d.setAttribute("disabled","disabled");n&&(b.appendChild(d),e=document.createElement("label"),
+mxUtils.write(e,c),e.setAttribute("for",u),b.appendChild(e),l||mxUtils.br(b));return d};EditorUi.prototype.addEditButton=function(b,c){var d=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);d.style.marginLeft="24px";var e=this.getCurrentFile(),f="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var k=document.createElement("select");k.style.maxWidth="200px";k.style.width="auto";k.style.marginLeft="8px";k.style.marginRight="10px";k.className=
+"geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("makeCopy"));k.appendChild(e);e=document.createElement("option");e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");k.appendChild(e);b.appendChild(k);mxEvent.addListener(k,"change",mxUtils.bind(this,function(){if("custom"==k.value){var b=new FilenameDialog(this,f,mxResources.get("ok"),function(b){null!=b?f=b:k.value="blank"},mxResources.get("url"),null,null,null,
+null,function(){k.value="blank"});this.showDialog(b.container,300,80,!0,!1);b.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==c||c.checked)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")}));mxUtils.br(b);return{getLink:function(){return d.checked?"blank"===k.value?"_blank":f:null},getEditInput:function(){return d},getEditSelect:function(){return k}}};EditorUi.prototype.addLinkSection=function(b,c){function d(){var b=document.createElement("div");
+b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=k&&k!=mxConstants.NONE?(b.style.border="1px solid black",b.style.backgroundColor=k):(b.style.backgroundPosition="center center",b.style.backgroundRepeat="no-repeat",b.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");l.innerHTML="";l.appendChild(b)}mxUtils.write(b,mxResources.get("links")+":");var e=document.createElement("select");e.style.width="100px";e.style.padding="0px";e.style.marginLeft="8px";e.style.marginRight=
+"10px";e.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));e.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));e.appendChild(f);f=document.createElement("option");f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));e.appendChild(f);c&&(f=document.createElement("option"),f.setAttribute("value","frame"),
+mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),e.appendChild(f));b.appendChild(e);mxUtils.write(b,mxResources.get("borderColor")+":");var k="#0000ff",l=null,l=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(k||"none",function(b){k=b;d()});mxEvent.consume(b)}));d();l.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";l.style.marginLeft="4px";l.style.height="22px";l.style.width="22px";l.style.position="relative";l.style.top=mxClient.IS_IE||mxClient.IS_IE11||
+mxClient.IS_EDGE?"6px":"1px";l.className="geColorBtn";b.appendChild(l);mxUtils.br(b);return{getColor:function(){return k},getTarget:function(){return e.value},focus:function(){e.focus()}}};EditorUi.prototype.createUrlParameters=function(b,c,e,f,l,n,u){u=null!=u?u:[];f&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||u.push("lightbox=1"),"auto"!=b&&u.push("target="+b),null!=c&&c!=mxConstants.NONE&&u.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=l&&0<l.length&&
+u.push("edit="+encodeURIComponent(l)),n&&u.push("layers=1"),this.editor.graph.foldingEnabled&&u.push("nav=1"));e&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&u.push("page-id="+this.currentPage.getId());return u};EditorUi.prototype.createLink=function(b,c,e,f,l,n,u,t,q,y){q=this.createUrlParameters(b,c,e,f,l,n,q);b=this.getCurrentFile();c=!0;null!=u?e="#U"+encodeURIComponent(u):(b=this.getCurrentFile(),t||null==b||b.constructor!=window.DriveFile?e="#R"+encodeURIComponent(e?
+this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(e="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=this.defaultFilename&&q.push("title="+encodeURIComponent(b.getTitle()));y&&1<e.length&&(q.push("open="+e.substring(1)),e="");return(f&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+
+"/"+(0<q.length?"?"+q.join("&"):"")+e};EditorUi.prototype.createHtml=function(b,c,e,f,l,n,u,t,q,y,F,D){this.getBasenames();var d={};""!=l&&l!=mxConstants.NONE&&(d.highlight=l);"auto"!==f&&(d.target=f);y||(d.lightbox=!1);d.nav=this.editor.graph.foldingEnabled;e=parseInt(e);isNaN(e)||100==e||(d.zoom=e/100);e=[];u&&(e.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(e.push("zoom"),d.resize=!0);t&&e.push("layers");q&&e.push("tags");
+0<e.length&&(y&&e.push("lightbox"),d.toolbar=e.join(" "));null!=F&&0<F.length&&(d.edit=F);null!=b?d.url=b:d.xml=this.getFileData(!0,null,null,null,null,!u);c='<div class="mxgraph" style="'+(n?"max-width:100%;":"")+(""!=e?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';b=null!=b?"&fetch="+encodeURIComponent(b):"";D(c,'<script type="text/javascript" src="'+(0<b.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+
+"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,c,e,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var k=document.createElement("div");
+k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name","type-embedhtmldialog");g=l.cloneNode(!0);g.setAttribute("value","copy");k.appendChild(g);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));k.appendChild(p);mxUtils.br(k);k.appendChild(l);
+p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));k.appendChild(p);var n=this.getCurrentFile();null==e&&null!=n&&n.constructor==window.DriveFile&&(p=document.createElement("a"),p.style.paddingLeft="12px",p.style.color="gray",p.style.cursor="pointer",mxUtils.write(p,mxResources.get("share")),k.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(n.getId())})));g.setAttribute("checked","checked");null==
+e&&l.setAttribute("disabled","disabled");d.appendChild(k);var q=this.addLinkSection(d),D=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var E=document.createElement("input");E.setAttribute("type","text");E.style.marginRight="16px";E.style.width="60px";E.style.marginLeft="4px";E.style.marginRight="12px";E.value="100%";d.appendChild(E);var H=this.addCheckbox(d,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,N=N=this.addCheckbox(d,mxResources.get("allPages"),
+k,!k),A=this.addCheckbox(d,mxResources.get("layers"),!0),G=this.addCheckbox(d,mxResources.get("tags"),!0),I=this.addCheckbox(d,mxResources.get("lightbox"),!0),L=this.addEditButton(d,I),M=L.getEditInput();M.style.marginBottom="16px";mxEvent.addListener(I,"change",function(){I.checked?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled");M.checked&&I.checked?L.getEditSelect().removeAttribute("disabled"):L.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,
+mxUtils.bind(this,function(){f(l.checked?e:null,D.checked,E.value,q.getTarget(),q.getColor(),H.checked,N.checked,A.checked,G.checked,I.checked,L.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,e,f,l,n,u,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,b||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
+d.appendChild(g);var k=this.getCurrentFile();b=0;if(null==k||k.constructor!=window.DriveFile||c)u=null!=u?u:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;u=null!=u?u:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));
+g.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(k.getId())}));m.style.marginTop="12px";m.className="geBtn";g.appendChild(m);d.appendChild(g);m=document.createElement("a");m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.style.cursor="pointer";mxUtils.write(m,mxResources.get("check"));g.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&
+this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,300,80,!0,!1);b.init()}))}))}var p=null,v=null;if(null!=e||null!=f)b+=30,mxUtils.write(d,mxResources.get("width")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.marginRight="16px",p.style.width="50px",p.style.marginLeft="6px",p.style.marginRight=
+"16px",p.style.marginBottom="10px",p.value="100%",d.appendChild(p),mxUtils.write(d,mxResources.get("height")+":"),v=document.createElement("input"),v.setAttribute("type","text"),v.style.width="50px",v.style.marginLeft="6px",v.style.marginBottom="10px",v.value=f+"px",d.appendChild(v),mxUtils.br(d);var q=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var A=null;if(null==k||k.constructor!=window.DriveFile||c)A=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var G=this.addCheckbox(d,
+mxResources.get("lightbox"),!0,null,null,!n),I=this.addEditButton(d,G),L=I.getEditInput();n&&(L.style.marginLeft=G.style.marginLeft,G.style.display="none",b-=20);var M=this.addCheckbox(d,mxResources.get("layers"),!0);M.style.marginLeft=L.style.marginLeft;M.style.marginTop="8px";var K=this.addCheckbox(d,mxResources.get("tags"),!0);K.style.marginLeft=L.style.marginLeft;K.style.marginBottom="16px";K.style.marginTop="16px";mxEvent.addListener(G,"change",function(){G.checked?(M.removeAttribute("disabled"),
+L.removeAttribute("disabled")):(M.setAttribute("disabled","disabled"),L.setAttribute("disabled","disabled"));L.checked&&G.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){l(q.getTarget(),q.getColor(),null==A?!0:A.checked,G.checked,I.getLink(),M.checked,null!=p?p.value:null,null!=v?v.value:null,K.checked)}),null,mxResources.get("create"),u,t);this.showDialog(c.container,340,300+b,!0,
+!0);null!=p?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)):q.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(l?"10":"4")+"px";d.appendChild(g);if(l){mxUtils.write(d,mxResources.get("zoom")+
+":");var k=document.createElement("input");k.setAttribute("type","text");k.style.marginRight="16px";k.style.width="60px";k.style.marginLeft="4px";k.style.marginRight="12px";k.value=this.lastExportZoom||"100%";d.appendChild(k);mxUtils.write(d,mxResources.get("borderWidth")+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.value=this.lastExportBorder||"0";d.appendChild(m);mxUtils.br(d)}var p=this.addCheckbox(d,
+mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=f?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),g=this.editor.graph,q=f?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==mxConstants.NONE||null==g.background);null!=q&&(q.style.marginBottom="16px");b=new CustomDialog(this,d,mxUtils.bind(this,function(){var b=parseInt(k.value)/100||1,d=parseInt(m.value)||0;e(!p.checked,null!=n?n.checked:!1,null!=
+q?q.checked:!1,b,d)}),null,b,c);this.showDialog(b.container,300,(l?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,e,f,l,n,u,t,q){u=null!=u?u:Editor.defaultIncludeDiagram;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph,k="jpeg"==t?220:300,m=document.createElement("h3");mxUtils.write(m,b);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(m);mxUtils.write(d,mxResources.get("zoom")+":");var p=
+document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="12px";p.value=this.lastExportZoom||"100%";d.appendChild(p);mxUtils.write(d,mxResources.get("borderWidth")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.marginRight="16px";v.style.width="60px";v.style.marginLeft="4px";v.value=this.lastExportBorder||"0";d.appendChild(v);mxUtils.br(d);var A=this.addCheckbox(d,mxResources.get("selectionOnly"),
+!1,g.isSelectionEmpty()),z=document.createElement("input");z.style.marginTop="16px";z.style.marginRight="8px";z.style.marginLeft="24px";z.setAttribute("disabled","disabled");z.setAttribute("type","checkbox");var I=document.createElement("select");I.style.marginTop="16px";I.style.marginLeft="8px";b=["selectionOnly","diagram","page"];for(var L={},m=0;m<b.length;m++)if(!g.isSelectionEmpty()||"selectionOnly"!=b[m]){var M=document.createElement("option");mxUtils.write(M,mxResources.get(b[m]));M.setAttribute("value",
+b[m]);I.appendChild(M);L[b[m]]=M}q?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(I),mxUtils.br(d),k+=26,mxEvent.addListener(I,"change",function(){"selectionOnly"==I.value&&(A.checked=!0)})):n&&(d.appendChild(z),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),k+=30,mxEvent.addListener(A,"change",function(){A.checked?z.removeAttribute("disabled"):z.setAttribute("disabled","disabled")}));g.isSelectionEmpty()?q&&(A.style.display="none",A.nextSibling.style.display="none",A.nextSibling.nextSibling.style.display=
+"none",k-=30):(I.value="diagram",z.setAttribute("checked","checked"),z.defaultChecked=!0,mxEvent.addListener(A,"change",function(){I.value=A.checked?"selectionOnly":"diagram"}));var K=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=t),O=null;Editor.isDarkMode()&&(O=this.addCheckbox(d,mxResources.get("dark"),!0),k+=26);var U=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),X=null;if("png"==t||"jpeg"==t)X=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||
+!this.canvasSupported,!1,!0),k+=30;var na=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),u,null,null,"jpeg"!=t);na.style.marginBottom="16px";var ca=document.createElement("input");ca.style.marginBottom="16px";ca.style.marginRight="8px";ca.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ca.setAttribute("disabled","disabled");var S=document.createElement("select");S.style.maxWidth="260px";S.style.marginLeft="8px";S.style.marginRight="10px";S.style.marginBottom=
+"16px";S.className="geBtn";n=document.createElement("option");n.setAttribute("value","none");mxUtils.write(n,mxResources.get("noChange"));S.appendChild(n);n=document.createElement("option");n.setAttribute("value","embedFonts");mxUtils.write(n,mxResources.get("embedFonts"));S.appendChild(n);n=document.createElement("option");n.setAttribute("value","lblToSvg");mxUtils.write(n,mxResources.get("lblToSvg"));S.appendChild(n);this.isOffline()&&n.setAttribute("disabled","disabled");mxEvent.addListener(S,
+"change",mxUtils.bind(this,function(){"lblToSvg"==S.value?(ca.checked=!0,ca.setAttribute("disabled","disabled"),L.page.style.display="none","page"==I.value&&(I.value="diagram"),U.checked=!1,U.setAttribute("disabled","disabled"),C.style.display="inline-block",x.style.display="none"):"disabled"==ca.getAttribute("disabled")&&(ca.checked=!1,ca.removeAttribute("disabled"),U.removeAttribute("disabled"),L.page.style.display="",C.style.display="none",x.style.display="")}));c&&(d.appendChild(ca),mxUtils.write(d,
+mxResources.get("embedImages")),mxUtils.br(d),mxUtils.write(d,mxResources.get("txtSettings")+":"),d.appendChild(S),mxUtils.br(d),k+=60);var x=document.createElement("select");x.style.maxWidth="260px";x.style.marginLeft="8px";x.style.marginRight="10px";x.className="geBtn";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));x.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));
+x.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));x.appendChild(c);var C=document.createElement("div");mxUtils.write(C,mxResources.get("LinksLost"));C.style.margin="7px";C.style.display="none";"svg"==t&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(x),d.appendChild(C),mxUtils.br(d),mxUtils.br(d),k+=50);e=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=v.value;this.lastExportZoom=
+p.value;l(p.value,K.checked,!A.checked,U.checked,na.checked,ca.checked,v.value,z.checked,!1,x.value,null!=X?X.checked:null,null!=O?O.checked:null,I.value,"embedFonts"==S.value,"lblToSvg"==S.value)}),null,e,f);this.showDialog(e.container,340,k,!0,!0,null,null,null,null,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace=
+"nowrap";var g=this.editor.graph;if(null!=c){var k=document.createElement("h3");mxUtils.write(k,c);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(k)}var m=this.addCheckbox(d,mxResources.get("fit"),!0),p=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),n=this.addCheckbox(d,e),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),E=this.addEditButton(d,q),H=E.getEditInput(),N=1<g.model.getChildCount(g.model.getRoot()),A=this.addCheckbox(d,
+mxResources.get("layers"),N,!N);A.style.marginLeft=H.style.marginLeft;A.style.marginBottom="12px";A.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(N&&A.removeAttribute("disabled"),H.removeAttribute("disabled")):(A.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"));H.checked&&q.checked?E.getEditSelect().removeAttribute("disabled"):E.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){b(m.checked,
+p.checked,n.checked,q.checked,E.getLink(),A.checked)}),null,mxResources.get("embed"),l);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,f,l,n,u,t){function d(d){var c=" ",m="";f&&(c=" 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('"+
EditorUi.lightboxHost+"/?client=1"+(null!=k?"&page="+k:"")+(l?"&edit=_blank":"")+(n?"&layers=1":"")+"');}})(this);\"",m+="cursor:pointer;");b&&(m+="max-width:100%;");var p="";e&&(p=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');u('<img src="'+d+'"'+p+(""!=m?' style="'+m+'"':"")+c+"/>")}var g=this.editor.graph.getGraphBounds(),k=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=f?this.getFileData(!0):null;b=
this.createImageDataUri(b,c,"png");d(b)}),null,null,null,mxUtils.bind(this,function(b){t({message:mxResources.get("unknownError")})}),null,!0,e?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),g.width*g.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var m="";e&&(m="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var p=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+m+"&xml="+encodeURIComponent(c));p.send(mxUtils.bind(this,function(){200<=p.getStatus()&&
299>=p.getStatus()?d("data:image/png;base64,"+p.getText()):t({message:mxResources.get("unknownError")})}))}else t({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,e,f,l,n,u){var d=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!e),g=d.getElementsByTagName("a");if(null!=g)for(var k=0;k<g.length;k++){var m=g[k].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==g[k].getAttribute("target")&&g[k].removeAttribute("target")}f&&
@@ -3634,15 +3640,15 @@ EditorUi.prototype.importZipFile=function(b,c,e){var d=this,g=mxUtils.bind(this,
null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,q)):d=this.importXml(b,e,f,y,null,null!=D?mxEvent.isControlDown(D):null);null!=t&&t(d)});"image"==c.substring(0,5)?(z=!1,"image/png"==c.substring(0,9)&&(c=F?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(g=this.importXml(c,e,f,y,null,null!=D?mxEvent.isControlDown(D):null),z=!0)),z||(c=this.editor.graph,z=b.indexOf(";"),0<z&&(b=b.substring(0,z)+b.substring(b.indexOf(",",z+1))),y&&c.isGridEnabled()&&(e=c.snap(e),
f=c.snap(f)),g=[c.insertVertex(null,null,"",e,f,l,n,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b+";")])):/(\.*<graphml )/.test(b)?(d=!0,this.importGraphML(b,k)):null!=z&&null!=q&&(/(\.v(dx|sdx?))($|\?)/i.test(q)||/(\.vs(x|sx?))($|\?)/i.test(q))?(d=!0,this.importVisio(z,k)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,q)?(d=!0,l=mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&
299>=b.status?k(b.responseText):null!=t&&t(null))}),null!=b?this.parseFileData(b,l,q):this.parseFile(z,l,q)):0==b.indexOf("PK")&&null!=z?(d=!0,this.importZipFile(z,k,mxUtils.bind(this,function(){g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,y);t(g)}))):/(\.v(sd|dx))($|\?)/i.test(q)||/(\.vs(s|x))($|\?)/i.test(q)||(g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,y,null,null!=D?mxEvent.isControlDown(D):null));d||null==t||t(g);return g};EditorUi.prototype.importFiles=function(b,c,
-e,f,l,n,q,t,z,y,F,D,E){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var d=null!=c&&null!=e,g=!0;c=null!=c?c:0;e=null!=e?e:0;var k=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=F||this.resampleThreshold,p=0;p<b.length;p++)if("image/"==b[p].type.substring(0,6)&&b[p].size>m){k=!0;break}var v=mxUtils.bind(this,function(){var k=this.editor.graph,m=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(b,c,e,g,f,k,l,m,p){try{return null!=b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),
-this.loadLibrary(new LocalLibrary(this,b,l)),null):this.importFile(b,c,e,g,f,k,l,m,p,d,D,E)}catch(ua){return this.handleError(ua),null}});n=null!=n?n:mxUtils.bind(this,function(b){k.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=b.length,v=p,u=[],A=mxUtils.bind(this,function(b,d){u[b]=d;if(0==--v){this.spinner.stop();if(null!=t)t(u);else{var c=[];k.getModel().beginUpdate();try{for(var e=0;e<u.length;e++){var g=u[e]();null!=g&&(c=c.concat(g))}}finally{k.getModel().endUpdate()}}n(c)}}),
-z=0;z<p;z++)mxUtils.bind(this,function(d){var p=b[d];if(null!=p){var n=new FileReader;n.onload=mxUtils.bind(this,function(b){if(null==q||q(p))if("image/"==p.type.substring(0,6))if("image/svg"==p.type.substring(0,9)){var n=Graph.clipSvgDataUri(b.target.result),t=n.indexOf(","),v=decodeURIComponent(escape(atob(n.substring(t+1)))),u=mxUtils.parseXml(v),v=u.getElementsByTagName("svg");if(0<v.length){var v=v[0],x=D?null:v.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?
-atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?A(d,mxUtils.bind(this,function(){try{if(n.substring(0,t+1),null!=u){var b=u.getElementsByTagName("svg");if(0<b.length){var g=b[0],q=g.getAttribute("width"),v=g.getAttribute("height"),q=null!=q&&"%"!=q.charAt(q.length-1)?parseFloat(q):NaN,v=null!=v&&"%"!=v.charAt(v.length-1)?parseFloat(v):NaN,x=g.getAttribute("viewBox");if(null==x||0==x.length)g.setAttribute("viewBox",
-"0 0 "+q+" "+v);else if(isNaN(q)||isNaN(v)){var y=x.split(" ");3<y.length&&(q=parseFloat(y[2]),v=parseFloat(y[3]))}n=Editor.createSvgDataUri(mxUtils.getXml(g));var A=Math.min(1,Math.min(f/Math.max(1,q)),f/Math.max(1,v)),z=l(n,p.type,c+d*m,e+d*m,Math.max(1,Math.round(q*A)),Math.max(1,Math.round(v*A)),p.name);if(isNaN(q)||isNaN(v)){var K=new Image;K.onload=mxUtils.bind(this,function(){q=Math.max(1,K.width);v=Math.max(1,K.height);z[0].geometry.width=q;z[0].geometry.height=v;g.setAttribute("viewBox",
-"0 0 "+q+" "+v);n=Editor.createSvgDataUri(mxUtils.getXml(g));var b=n.indexOf(";");0<b&&(n=n.substring(0,b)+n.substring(n.indexOf(",",b+1)));k.setCellStyles("image",n,[z[0]])});K.src=Editor.createSvgDataUri(mxUtils.getXml(g))}return z}}}catch(qa){}return null})):A(d,mxUtils.bind(this,function(){return l(x,"text/xml",c+d*m,e+d*m,0,0,p.name)}))}else A(d,mxUtils.bind(this,function(){return null}))}else{v=!1;if("image/png"==p.type){var z=D?null:this.extractGraphModelFromPng(b.target.result);if(null!=z&&
-0<z.length){var K=new Image;K.src=b.target.result;A(d,mxUtils.bind(this,function(){return l(z,"text/xml",c+d*m,e+d*m,K.width,K.height,p.name)}));v=!0}}v||(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(b.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,
-b.target.result,mxUtils.bind(this,function(b,k,n){A(d,mxUtils.bind(this,function(){if(null!=b&&b.length<y){var t=g&&this.isResampleImageSize(p.size,F)?Math.min(1,Math.min(f/k,f/n)):1;return l(b,p.type,c+d*m,e+d*m,Math.round(k*t),Math.round(n*t),p.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,f,F,p.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else n=b.target.result,l(n,p.type,c+d*m,e+d*m,240,160,p.name,
-function(b){A(d,function(){return b})},p)});/(\.v(dx|sdx?))($|\?)/i.test(p.name)||/(\.vs(x|sx?))($|\?)/i.test(p.name)?l(null,p.type,c+d*m,e+d*m,240,160,p.name,function(b){A(d,function(){return b})},p):"image"==p.type.substring(0,5)||"application/pdf"==p.type?n.readAsDataURL(p):n.readAsText(p)}})(z)});if(k){k=[];for(p=0;p<b.length;p++)k.push(b[p]);b=k;this.confirmImageResize(function(b){g=b;v()},z)}else v()};EditorUi.prototype.confirmImageResize=function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&
+e,f,l,n,q,t,z,y,F,D,E){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var d=null!=c&&null!=e,g=!0;c=null!=c?c:0;e=null!=e?e:0;var k=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=F||this.resampleThreshold,p=0;p<b.length;p++)if("image/"==b[p].type.substring(0,6)&&b[p].size>m){k=!0;break}var v=mxUtils.bind(this,function(){var k=this.editor.graph,m=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(b,c,e,g,f,k,l,m,n){try{return null!=b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),
+this.loadLibrary(new LocalLibrary(this,b,l)),null):this.importFile(b,c,e,g,f,k,l,m,n,d,D,E)}catch(ua){return this.handleError(ua),null}});n=null!=n?n:mxUtils.bind(this,function(b){k.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=b.length,v=p,u=[],A=mxUtils.bind(this,function(b,d){u[b]=d;if(0==--v){this.spinner.stop();if(null!=t)t(u);else{var c=[];k.getModel().beginUpdate();try{for(var e=0;e<u.length;e++){var g=u[e]();null!=g&&(c=c.concat(g))}}finally{k.getModel().endUpdate()}}n(c)}}),
+z=0;z<p;z++)mxUtils.bind(this,function(d){var n=b[d];if(null!=n){var p=new FileReader;p.onload=mxUtils.bind(this,function(b){if(null==q||q(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var p=Graph.clipSvgDataUri(b.target.result),t=p.indexOf(","),v=decodeURIComponent(escape(atob(p.substring(t+1)))),u=mxUtils.parseXml(v),v=u.getElementsByTagName("svg");if(0<v.length){var v=v[0],x=D?null:v.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?
+atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?A(d,mxUtils.bind(this,function(){try{if(p.substring(0,t+1),null!=u){var b=u.getElementsByTagName("svg");if(0<b.length){var g=b[0],q=g.getAttribute("width"),v=g.getAttribute("height"),q=null!=q&&"%"!=q.charAt(q.length-1)?parseFloat(q):NaN,v=null!=v&&"%"!=v.charAt(v.length-1)?parseFloat(v):NaN,y=g.getAttribute("viewBox");if(null==y||0==y.length)g.setAttribute("viewBox",
+"0 0 "+q+" "+v);else if(isNaN(q)||isNaN(v)){var x=y.split(" ");3<x.length&&(q=parseFloat(x[2]),v=parseFloat(x[3]))}p=Editor.createSvgDataUri(mxUtils.getXml(g));var A=Math.min(1,Math.min(f/Math.max(1,q)),f/Math.max(1,v)),z=l(p,n.type,c+d*m,e+d*m,Math.max(1,Math.round(q*A)),Math.max(1,Math.round(v*A)),n.name);if(isNaN(q)||isNaN(v)){var K=new Image;K.onload=mxUtils.bind(this,function(){q=Math.max(1,K.width);v=Math.max(1,K.height);z[0].geometry.width=q;z[0].geometry.height=v;g.setAttribute("viewBox",
+"0 0 "+q+" "+v);p=Editor.createSvgDataUri(mxUtils.getXml(g));var b=p.indexOf(";");0<b&&(p=p.substring(0,b)+p.substring(p.indexOf(",",b+1)));k.setCellStyles("image",p,[z[0]])});K.src=Editor.createSvgDataUri(mxUtils.getXml(g))}return z}}}catch(qa){}return null})):A(d,mxUtils.bind(this,function(){return l(x,"text/xml",c+d*m,e+d*m,0,0,n.name)}))}else A(d,mxUtils.bind(this,function(){return null}))}else{v=!1;if("image/png"==n.type){var z=D?null:this.extractGraphModelFromPng(b.target.result);if(null!=z&&
+0<z.length){var K=new Image;K.src=b.target.result;A(d,mxUtils.bind(this,function(){return l(z,"text/xml",c+d*m,e+d*m,K.width,K.height,n.name)}));v=!0}}v||(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(b.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,
+b.target.result,mxUtils.bind(this,function(b,k,p){A(d,mxUtils.bind(this,function(){if(null!=b&&b.length<y){var q=g&&this.isResampleImageSize(n.size,F)?Math.min(1,Math.min(f/k,f/p)):1;return l(b,n.type,c+d*m,e+d*m,Math.round(k*q),Math.round(p*q),n.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,f,F,n.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else p=b.target.result,l(p,n.type,c+d*m,e+d*m,240,160,n.name,
+function(b){A(d,function(){return b})},n)});/(\.v(dx|sdx?))($|\?)/i.test(n.name)||/(\.vs(x|sx?))($|\?)/i.test(n.name)?l(null,n.type,c+d*m,e+d*m,240,160,n.name,function(b){A(d,function(){return b})},n):"image"==n.type.substring(0,5)||"application/pdf"==n.type?p.readAsDataURL(n):p.readAsText(n)}})(z)});if(k){k=[];for(p=0;p<b.length;p++)k.push(b[p]);b=k;this.confirmImageResize(function(b){g=b;v()},z)}else v()};EditorUi.prototype.confirmImageResize=function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&
null!=this.spinner.pause?this.spinner.pause():function(){},e=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,f=function(e,g){if(e||c)mxSettings.setResizeImages(e?g:null),mxSettings.save();d();b(g)};null==e||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){f(b,!0)},function(b){f(b,!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):f(!1,e)};EditorUi.prototype.parseFile=function(b,c,e){e=null!=e?e:b.name;var d=new FileReader;d.onload=mxUtils.bind(this,function(){this.parseFileData(d.result,c,e)});d.readAsText(b)};EditorUi.prototype.parseFileData=function(b,c,e){var d=new XMLHttpRequest;d.open("POST",OPEN_URL);d.setRequestHeader("Content-Type","application/x-www-form-urlencoded");d.onreadystatechange=
function(){c(d)};d.send("format=xml&filename="+encodeURIComponent(e)+"&data="+encodeURIComponent(b));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(m){}};EditorUi.prototype.isResampleImageSize=function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,e,f,l,n,q){l=null!=l?l:this.maxImageSize;var d=Math.max(1,b.width),g=Math.max(1,b.height);if(f&&this.isResampleImageSize(null!=q?q:c.length,n))try{var k=Math.max(d/
@@ -3671,8 +3677,8 @@ mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHT
"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var N=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:N.apply(this,arguments)}}H=document.getElementById("geInfo");null!=H&&H.parentNode.removeChild(H);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var A=null;mxEvent.addListener(c.container,"dragleave",function(b){c.isEnabled()&&(null!=A&&(A.parentNode.removeChild(A),
A=null),b.stopPropagation(),b.preventDefault())});mxEvent.addListener(c.container,"dragover",mxUtils.bind(this,function(b){null==A&&(!mxClient.IS_IE||10<document.documentMode)&&(A=this.highlightElement(c.container));null!=this.sidebar&&this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(b){null!=A&&(A.parentNode.removeChild(A),A=null);if(c.isEnabled()){var d=mxUtils.convertPoint(c.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),
e=c.view.translate,g=c.view.scale,f=d.x/g-e.x,k=d.y/g-e.y;if(0<b.dataTransfer.files.length)mxEvent.isShiftDown(b)?this.openFiles(b.dataTransfer.files,!0):(mxEvent.isAltDown(b)&&(k=f=null),this.importFiles(b.dataTransfer.files,f,k,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(b),null,null,mxEvent.isShiftDown(b),b));else{mxEvent.isAltDown(b)&&(k=f=0);var l=0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(b,
-null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,f,k,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var p=null,e=d.getElementsByTagName("img");null!=e&&1==e.length?(m=e[0].getAttribute("src"),null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(p=!0)):(e=d.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):
-(d=d.getElementsByTagName("pre"),null!=d&&1==d.length&&(m=mxUtils.getTextContent(d[0]))));var n=!0,q=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,f,k,!0,p,null,n,mxEvent.isControlDown(b)))});p&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(b){n=b;q()},mxEvent.isControlDown(b)):q()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this,function(b){var d=Math.max(1,b.width);b=Math.max(1,b.height);
+null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,f,k,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var n=null,e=d.getElementsByTagName("img");null!=e&&1==e.length?(m=e[0].getAttribute("src"),null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(n=!0)):(e=d.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):
+(d=d.getElementsByTagName("pre"),null!=d&&1==d.length&&(m=mxUtils.getTextContent(d[0]))));var p=!0,q=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,f,k,!0,n,null,p,mxEvent.isControlDown(b)))});n&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(b){p=b;q()},mxEvent.isControlDown(b)):q()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this,function(b){var d=Math.max(1,b.width);b=Math.max(1,b.height);
var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,d)),e/Math.max(1,b));c.setSelectionCell(c.insertVertex(null,null,"",f,k,d*e,b*e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(b){c.setSelectionCells(this.insertTextAt(l,f,k,!0))})):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&c.setSelectionCells(this.insertTextAt(b.dataTransfer.getData("text/plain"),f,k,!0))}}b.stopPropagation();
b.preventDefault()}),!1)}c.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var b=this.editor.graph;b.container.addEventListener("paste",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d))try{for(var c=d.clipboardData||d.originalEvent.clipboardData,e=!1,f=0;f<c.types.length;f++)if("text/"===c.types[f].substring(0,5)){e=!0;break}if(!e){var k=c.items;for(index in k){var l=
k[index];if("file"===l.kind){if(b.isEditing())this.importFiles([l.getAsFile()],0,0,this.maxImageSize,function(d,c,e,g,f,k){b.insertImage(d,f,k)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()});else{var n=this.editor.graph.getInsertPoint();this.importFiles([l.getAsFile()],n.x,n.y,this.maxImageSize);mxEvent.consume(d)}break}}}}catch(z){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function b(){window.setTimeout(function(){e.innerHTML=
@@ -3697,10 +3703,10 @@ g,f,mxUtils.bind(this,function(b){this.handleError(b)}))}catch(z){this.handleErr
"text/html":new Blob(['<img src="'+b+'" width="'+c+'" height="'+e+'">'],{type:"text/html"})});navigator.clipboard.write([b])["catch"](f)};EditorUi.prototype.copyCells=function(b,c){var d=this.editor.graph;if(d.isSelectionEmpty())b.innerHTML="";else{var e=mxUtils.sortCells(d.model.getTopmostCells(d.getSelectionCells())),f=mxUtils.getXml(d.encodeCells(e));mxUtils.setTextContent(b,encodeURIComponent(f));c?(d.removeCells(e,!1),d.lastPasteXml=null):(d.lastPasteXml=f,d.pasteCounter=0);b.focus();document.execCommand("selectAll",
!1,null)}};EditorUi.prototype.copyXml=function(){var b=null;if(Editor.enableNativeCipboard){var c=this.editor.graph;c.isSelectionEmpty()||(b=mxUtils.sortCells(c.getExportableCells(c.model.getTopmostCells(c.getSelectionCells()))),c=mxUtils.getXml(c.encodeCells(b)),navigator.clipboard.writeText(c))}return b};EditorUi.prototype.pasteXml=function(b,c,e,f){var d=this.editor.graph,g=null;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var k=d.pasteCounter*d.gridSize;if(e||this.isCompatibleString(b))g=
this.importXml(b,k,k),d.setSelectionCells(g);else if(c&&1==d.getSelectionCount()){k=d.getStartEditingCell(d.getSelectionCell(),f);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b)&&"image"==d.getCurrentCellStyle(k)[mxConstants.STYLE_SHAPE])d.setCellStyles(mxConstants.STYLE_IMAGE,b,[k]);else{d.model.beginUpdate();try{d.labelChanged(k,b),Graph.isLink(b)&&d.setLinkForCell(k,b)}finally{d.model.endUpdate()}}d.setSelectionCell(k)}else g=d.getInsertPoint(),d.isMouseInsertPoint()&&(k=0,d.lastPasteXml==b&&0<d.pasteCounter&&
-d.pasteCounter--),g=this.insertTextAt(b,g.x+k,g.y+k,!0),d.setSelectionCells(g);d.isSelectionEmpty()||(d.scrollCellToVisible(d.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell())));return g};EditorUi.prototype.pasteCells=function(b,c,e,f){if(!mxEvent.isConsumed(b)){var d=c,g=!1;if(e&&null!=b.clipboardData&&b.clipboardData.getData){var k=b.clipboardData.getData("text/plain"),l=!1;if(null!=k&&0<k.length&&"%3CmxGraphModel%3E"==k.substring(0,18)){var p=
-decodeURIComponent(k);this.isCompatibleString(p)&&(l=!0,k=p)}l=l?null:b.clipboardData.getData("text/html");null!=l&&0<l.length?(d=this.parseHtmlData(l),g="text/plain"!=d.getAttribute("data-type")):null!=k&&0<k.length&&(d=document.createElement("div"),mxUtils.setTextContent(d,l))}k=d.getElementsByTagName("span");if(null!=k&&0<k.length&&"application/vnd.lucid.chart.objects"===k[0].getAttribute("data-lucid-type"))e=k[0].getAttribute("data-lucid-content"),null!=e&&0<e.length&&(this.convertLucidChart(e,
-mxUtils.bind(this,function(b){var d=this.editor.graph;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var c=d.pasteCounter*d.gridSize;d.setSelectionCells(this.importXml(b,c,c));d.scrollCellToVisible(d.getSelectionCell())}),mxUtils.bind(this,function(b){this.handleError(b)})),mxEvent.consume(b));else{g=g?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);l=!1;try{var n=g.lastIndexOf("%3E");0<=n&&n<g.length-3&&(g=g.substring(0,n+3))}catch(D){}try{k=
-d.getElementsByTagName("span"),p=null!=k&&0<k.length?mxUtils.trim(decodeURIComponent(k[0].textContent)):decodeURIComponent(g),this.isCompatibleString(p)&&(l=!0,g=p)}catch(D){}try{if(null!=g&&0<g.length){this.pasteXml(g,f,l,b);try{mxEvent.consume(b)}catch(D){}}else if(!e){var q=this.editor.graph;q.lastPasteXml=null;q.pasteCounter=0}}catch(D){this.handleError(D)}}}c.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(b){if(Graph.fileSupport)for(var d=null,c=0;c<b.length;c++)mxEvent.addListener(b[c],
+d.pasteCounter--),g=this.insertTextAt(b,g.x+k,g.y+k,!0),d.setSelectionCells(g);d.isSelectionEmpty()||(d.scrollCellToVisible(d.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell())));return g};EditorUi.prototype.pasteCells=function(b,c,e,f){if(!mxEvent.isConsumed(b)){var d=c,g=!1;if(e&&null!=b.clipboardData&&b.clipboardData.getData){var k=b.clipboardData.getData("text/plain"),l=!1;if(null!=k&&0<k.length&&"%3CmxGraphModel%3E"==k.substring(0,18)){var n=
+decodeURIComponent(k);this.isCompatibleString(n)&&(l=!0,k=n)}l=l?null:b.clipboardData.getData("text/html");null!=l&&0<l.length?(d=this.parseHtmlData(l),g="text/plain"!=d.getAttribute("data-type")):null!=k&&0<k.length&&(d=document.createElement("div"),mxUtils.setTextContent(d,l))}k=d.getElementsByTagName("span");if(null!=k&&0<k.length&&"application/vnd.lucid.chart.objects"===k[0].getAttribute("data-lucid-type"))e=k[0].getAttribute("data-lucid-content"),null!=e&&0<e.length&&(this.convertLucidChart(e,
+mxUtils.bind(this,function(b){var d=this.editor.graph;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var c=d.pasteCounter*d.gridSize;d.setSelectionCells(this.importXml(b,c,c));d.scrollCellToVisible(d.getSelectionCell())}),mxUtils.bind(this,function(b){this.handleError(b)})),mxEvent.consume(b));else{g=g?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);l=!1;try{var p=g.lastIndexOf("%3E");0<=p&&p<g.length-3&&(g=g.substring(0,p+3))}catch(D){}try{k=
+d.getElementsByTagName("span"),n=null!=k&&0<k.length?mxUtils.trim(decodeURIComponent(k[0].textContent)):decodeURIComponent(g),this.isCompatibleString(n)&&(l=!0,g=n)}catch(D){}try{if(null!=g&&0<g.length){this.pasteXml(g,f,l,b);try{mxEvent.consume(b)}catch(D){}}else if(!e){var q=this.editor.graph;q.lastPasteXml=null;q.pasteCounter=0}}catch(D){this.handleError(D)}}}c.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(b){if(Graph.fileSupport)for(var d=null,c=0;c<b.length;c++)mxEvent.addListener(b[c],
"dragleave",function(b){null!=d&&(d.parentNode.removeChild(d),d=null);b.stopPropagation();b.preventDefault()}),mxEvent.addListener(b[c],"dragover",mxUtils.bind(this,function(b){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==d&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(d=this.highlightElement());b.stopPropagation();b.preventDefault()})),mxEvent.addListener(b[c],"drop",mxUtils.bind(this,function(b){null!=d&&(d.parentNode.removeChild(d),d=null);if(this.editor.graph.isEnabled()||
"1"!=urlParams.embed)if(0<b.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(b)&&!mxEvent.isShiftDown(b)):this.openFiles(b.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(b);if(null==c){var e=null!=b.dataTransfer?b.dataTransfer:b.clipboardData;null!=e&&(10==document.documentMode||11==document.documentMode?c=e.getData("Text"):(c=null,c=0<=mxUtils.indexOf(e.types,
"text/uri-list")?b.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(e.types,"text/html")?e.getData("text/html"):null,null!=c&&0<c.length?(e=document.createElement("div"),e.innerHTML=this.editor.graph.sanitizeHtml(c),e=e.getElementsByTagName("img"),0<e.length&&(c=e[0].getAttribute("src"))):0<=mxUtils.indexOf(e.types,"text/plain")&&(c=e.getData("text/plain"))),null!=c&&(Editor.isPngDataUrl(c)?(c=Editor.extractGraphModelFromPng(c),null!=c&&0<c.length&&this.openLocalFile(c,null,!0)):!this.isOffline()&&
@@ -3725,53 +3731,53 @@ function(b){var c=this.editor.graph;return{event:b,pageVisible:c.pageVisible,tra
this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),c,null,!0,mxUtils.bind(this,function(c){d.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=b?!b:!0,data:Editor.createSvgDataUri(c)}),"*")}),null,null,!0,e,1,this.embedExportBorder)}else b||d.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");b||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,c.model.clear(),this.editor.undoManager.clear(),
this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(b){var c=null,d=!1,e=!1,f=null,l=mxUtils.bind(this,function(b,c){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE,l);mxEvent.addListener(window,"message",mxUtils.bind(this,
function(g){if(g.source==(window.opener||window.parent)){var k=g.data,l=null,m=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):"data:image/svg+xml;utf8,"==b.substring(0,24)&&(b=b.substring(24)),null!=b&&("%"==b.charAt(0)?b=decodeURIComponent(b):"<"!=b.charAt(0)&&(b=Graph.decompress(b)))}catch(ta){}return b});if("json"==urlParams.proto){var p=
-!1;try{k=JSON.parse(k)}catch(da){k=null}try{if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("layout"==k.action){this.executeLayoutList(k.layouts);return}if("prompt"==k.action){this.spinner.stop();var q=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):
+!1;try{k=JSON.parse(k)}catch(ea){k=null}try{if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("layout"==k.action){this.executeLayoutList(k.layouts);return}if("prompt"==k.action){this.spinner.stop();var q=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):
k.ok,function(b){null!=b?n.postMessage(JSON.stringify({event:"prompt",value:b,message:k}),"*"):n.postMessage(JSON.stringify({event:"prompt-cancel",message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(q.container,300,80,!0,!1);q.init();return}if("draft"==k.action){var t=m(k.xml);this.spinner.stop();q=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),t,mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",
result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(q.container,640,480,!0,!1,mxUtils.bind(this,function(b){b&&this.actions.get("exit").funct()}));
-try{q.init()}catch(da){n.postMessage(JSON.stringify({event:"draft",error:da.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var v=1==k.enableRecent,u=1==k.enableSearch,z=1==k.enableCustomTemp;if("1"==urlParams.newTempDlg&&!k.templatesOnly&&null!=k.callback){var L=this.getCurrentUser(),M=new TemplatesDialog(this,function(b,c,d){b=b||this.emptyDiagramXml;n.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,tempUrl:d.url,libs:d.libs,
+try{q.init()}catch(ea){n.postMessage(JSON.stringify({event:"draft",error:ea.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var v=1==k.enableRecent,u=1==k.enableSearch,z=1==k.enableCustomTemp;if("1"==urlParams.newTempDlg&&!k.templatesOnly&&null!=k.callback){var L=this.getCurrentUser(),M=new TemplatesDialog(this,function(b,c,d){b=b||this.emptyDiagramXml;n.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,tempUrl:d.url,libs:d.libs,
builtIn:null!=d.info&&null!=d.info.custContentId,message:k}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=L?L.id:null,v?mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getRecentDiagrams",[d],null,b,c)}):null,u?mxUtils.bind(this,function(b,c,d,e){this.remoteInvoke("searchDiagrams",[b,e],null,c,d)}):null,mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getFileContent",[b.url],null,c,d)}),null,z?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",
null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(M.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,k.templatesOnly?!1:null!=k.callback,mxUtils.bind(this,function(c,d,e,f){c=c||this.emptyDiagramXml;null!=k.callback?n.postMessage(JSON.stringify({event:"template",xml:c,blank:c==this.emptyDiagramXml,name:d,tempUrl:e,libs:f,builtIn:!0,message:k}),"*"):(b(c,g,c!=this.emptyDiagramXml,k.toSketch),this.editor.modified||this.editor.setStatus(""))}),
null,null,null,null,null,null,null,v?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,u?mxUtils.bind(this,function(b,c){this.remoteInvoke("searchDiagrams",[b,null],null,c,function(){c(null,"Network Error!")})}):null,mxUtils.bind(this,function(b,c,d){n.postMessage(JSON.stringify({event:"template",docUrl:b,info:c,name:d}),"*")}),null,null,z?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},
0)})}):null,1==k.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==k.action){var K=this.getDiagramTextContent();n.postMessage(JSON.stringify({event:"textContent",data:K,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));
null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var O=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,O):this.spinner.stop();return}if("exit"==k.action){this.actions.get("exit").funct();return}if("viewport"==k.action){null!=k.viewport&&(this.embedViewport=k.viewport);return}if("snapshot"==k.action){this.sendEmbeddedSvgExport(!0);return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==
-k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var U=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var X=this.editor.graph,ma=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var c=this.createLoadMessage("export");c.format=k.format;c.message=k;c.data=b;c.xml=U;n.postMessage(JSON.stringify(c),"*")}),ba=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&
-(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(U)));X!=this.editor.graph&&X.container.parentNode.removeChild(X.container);ma(b)}),S=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var x=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=S){var b=X.getGlobalVariable;X=this.createTemporaryGraph(X.getStylesheet());for(var c,d=0;d<this.pages.length;d++)if(this.pages[d].getId()==S){c=
-this.updatePageRoot(this.pages[d]);break}null==c&&(c=this.currentPage);X.getGlobalVariable=function(d){return"page"==d?c.getName():"pagenumber"==d?1:b.apply(this,arguments)};document.body.appendChild(X.container);X.model.setRoot(c.root)}if(null!=k.layerIds){for(var e=X.model,g=e.getChildCells(e.getRoot()),f={},d=0;d<k.layerIds.length;d++)f[k.layerIds[d]]=!0;for(d=0;d<g.length;d++)e.setVisible(g[d],f[g[d].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){ba(b.toDataURL("image/png"))}),
-k.width,null,k.background,mxUtils.bind(this,function(){ba(null)}),null,null,k.scale,k.transparent,k.shadow,null,X,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(d=!0,this.setFileData(U),d=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},0):x()):x()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=S?"&pageId="+S:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):
-"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(U))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?ma("data:image/png;base64,"+b.getText()):ba(null)}),mxUtils.bind(this,function(){ba(null)}))}}else x=mxUtils.bind(this,function(){var b=this.createLoadMessage("export");b.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var c=this.getXmlFileData();b.xml=mxUtils.getXml(c);b.data=this.getFileData(null,
+k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var U=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var X=this.editor.graph,na=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var c=this.createLoadMessage("export");c.format=k.format;c.message=k;c.data=b;c.xml=U;n.postMessage(JSON.stringify(c),"*")}),ca=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&
+(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(U)));X!=this.editor.graph&&X.container.parentNode.removeChild(X.container);na(b)}),S=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var x=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=S){var b=X.getGlobalVariable;X=this.createTemporaryGraph(X.getStylesheet());for(var c,d=0;d<this.pages.length;d++)if(this.pages[d].getId()==S){c=
+this.updatePageRoot(this.pages[d]);break}null==c&&(c=this.currentPage);X.getGlobalVariable=function(d){return"page"==d?c.getName():"pagenumber"==d?1:b.apply(this,arguments)};document.body.appendChild(X.container);X.model.setRoot(c.root)}if(null!=k.layerIds){for(var e=X.model,g=e.getChildCells(e.getRoot()),f={},d=0;d<k.layerIds.length;d++)f[k.layerIds[d]]=!0;for(d=0;d<g.length;d++)e.setVisible(g[d],f[g[d].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){ca(b.toDataURL("image/png"))}),
+k.width,null,k.background,mxUtils.bind(this,function(){ca(null)}),null,null,k.scale,k.transparent,k.shadow,null,X,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(d=!0,this.setFileData(U),d=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},0):x()):x()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=S?"&pageId="+S:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):
+"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(U))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?na("data:image/png;base64,"+b.getText()):ca(null)}),mxUtils.bind(this,function(){ca(null)}))}}else x=mxUtils.bind(this,function(){var b=this.createLoadMessage("export");b.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var c=this.getXmlFileData();b.xml=mxUtils.getXml(c);b.data=this.getFileData(null,
null,!0,null,null,null,c);b.format=k.format}else if("html"==k.format)c=this.editor.getGraphXml(),b.data=this.getHtml(c,this.editor.graph),b.xml=mxUtils.getXml(c),b.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;c=null!=k.background?k.background:this.editor.graph.background;c==mxConstants.NONE&&(c=null);b.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);b.format="svg";var d=mxUtils.bind(this,function(c){this.editor.graph.setEnabled(!0);this.spinner.stop();b.data=Editor.createSvgDataUri(c);
n.postMessage(JSON.stringify(b),"*")});if("xmlsvg"==k.format)(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))&&this.getEmbeddedSvg(b.xml,this.editor.graph,null,!0,d,null,null,k.embedImages,c,k.scale,k.border,k.shadow,k.keepTheme);else if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))this.editor.graph.setEnabled(!1),c=this.editor.graph.getSvg(c,k.scale,k.border,null,
null,null,null,null,null,this.editor.graph.shadowVisible||k.shadow,null,k.keepTheme),(this.editor.graph.shadowVisible||k.shadow)&&this.editor.graph.addSvgShadow(c),this.embedFonts(c,mxUtils.bind(this,function(b){k.embedImages||null==k.embedImages?this.editor.convertImages(b,mxUtils.bind(this,function(b){d(mxUtils.getXml(b))})):d(mxUtils.getXml(b))}));return}n.postMessage(JSON.stringify(b),"*")}),null!=k.xml&&0<k.xml.length?(d=!0,this.setFileData(k.xml),d=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},
0):x()):x();return}if("load"==k.action){p=k.toSketch;e=1==k.autosave;this.hideDialog();null!=k.modified&&null==urlParams.modified&&(urlParams.modified=k.modified);null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=k.saveAndExit);null!=k.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=k.noSaveBtn);if(null!=k.rough){var C=Editor.sketchMode;this.doSetSketchMode(k.rough);C!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=k.dark&&(C=Editor.darkMode,
this.doSetDarkMode(k.dark),C!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=k.border&&(this.embedExportBorder=k.border);null!=k.background&&(this.embedExportBackground=k.background);null!=k.viewport&&(this.embedViewport=k.viewport);this.embedExitPoint=null;if(null!=k.rect){var J=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=k.rect.top+"px";this.diagramContainer.style.left=k.rect.left+"px";this.diagramContainer.style.height=
k.rect.height+"px";this.diagramContainer.style.width=k.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";l=mxUtils.bind(this,function(){var b=this.editor.graph,c=b.maxFitScale;b.maxFitScale=k.maxFitScale;b.fit(2*J);b.maxFitScale=c;b.container.scrollTop-=2*J;b.container.scrollLeft-=2*J;this.fireEvent(new mxEventObject("editInlineStart","data",[k]))})}null!=k.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=k.noExitBtn);null!=k.title&&null!=this.buttonContainer&&
-(t=document.createElement("span"),mxUtils.write(t,k.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=t);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(da){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var W=this.getCurrentFile();null!=W&&(t=m(k.xml),null!=t&&""!=t&&W.mergeFile(new LocalFile(this,t),function(){n.postMessage(JSON.stringify({event:"merge",
-message:k}),"*")},function(b){n.postMessage(JSON.stringify({event:"merge",message:k,error:b}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(n):"remoteInvoke"==k.action?this.handleRemoteInvoke(k,g.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):n.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(da){this.handleError(da)}}var ca=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&
-1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),aa=mxUtils.bind(this,function(g,k){d=!0;try{b(g,k,null,p)}catch(ga){this.handleError(ga)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");f=ca();e&&null==c&&(c=mxUtils.bind(this,function(b,c){var e=ca();if(e!=f&&!d){var g=this.createLoadMessage("autosave");g.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}f=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,c),this.editor.graph.addListener("gridSizeChanged",
+(t=document.createElement("span"),mxUtils.write(t,k.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=t);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(ea){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var W=this.getCurrentFile();null!=W&&(t=m(k.xml),null!=t&&""!=t&&W.mergeFile(new LocalFile(this,t),function(){n.postMessage(JSON.stringify({event:"merge",
+message:k}),"*")},function(b){n.postMessage(JSON.stringify({event:"merge",message:k,error:b}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(n):"remoteInvoke"==k.action?this.handleRemoteInvoke(k,g.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):n.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(ea){this.handleError(ea)}}var da=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&
+1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),aa=mxUtils.bind(this,function(g,k){d=!0;try{b(g,k,null,p)}catch(ha){this.handleError(ha)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");f=da();e&&null==c&&(c=mxUtils.bind(this,function(b,c){var e=da();if(e!=f&&!d){var g=this.createLoadMessage("autosave");g.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}f=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,c),this.editor.graph.addListener("gridSizeChanged",
c),this.editor.graph.addListener("shadowVisibleChanged",c),this.addListener("pageFormatChanged",c),this.addListener("pageScaleChanged",c),this.addListener("backgroundColorChanged",c),this.addListener("backgroundImageChanged",c),this.addListener("foldingEnabledChanged",c),this.addListener("mathEnabledChanged",c),this.addListener("gridEnabledChanged",c),this.addListener("guidesEnabledChanged",c),this.addListener("pageViewChanged",c));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var m=this.createLoadMessage("load");
m.xml=g;n.postMessage(JSON.stringify(m),"*")}null!=l&&l()});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(m="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(b){aa(b,g)},mxUtils.bind(this,function(b){this.handleError(b)}),m)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFileData(k,mxUtils.bind(this,
-function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&aa(b.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){aa(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),aa(k,g)):this.loadDescriptor(k,mxUtils.bind(this,function(b){aa(ca(),g)}),mxUtils.bind(this,function(b){this.handleError(b,
+function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&aa(b.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){aa(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),aa(k,g)):this.loadDescriptor(k,mxUtils.bind(this,function(b){aa(da(),g)}),mxUtils.bind(this,function(b){this.handleError(b,
mxResources.get("errorLoadingFile"))}))}}));var n=window.opener||window.parent,l="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";n.postMessage(l,"*");if("json"==urlParams.proto){var q=this.editor.graph.openLink;this.editor.graph.openLink=function(b,c,d){q.apply(this,arguments);n.postMessage(JSON.stringify({event:"openLink",href:b,target:c,allowOpener:d}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var b=document.createElement("div");
b.style.display="inline-block";b.style.position="absolute";b.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";b.style.paddingLeft="8px";b.style.paddingBottom="2px";var c=document.createElement("button");c.className="geBigButton";var e=c;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var f="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,f);c.setAttribute("title",f);mxEvent.addListener(c,"click",mxUtils.bind(this,
function(){this.actions.get("saveAndExit").funct()}));b.appendChild(c)}}else mxUtils.write(c,mxResources.get("save")),c.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),b.appendChild(c),"1"==urlParams.saveAndExit&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("saveAndExit")),c.setAttribute("title",mxResources.get("saveAndExit")),c.className="geBigButton geBigStandardButton",
c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),b.appendChild(c),e=c);"1"!=urlParams.noExitBtn&&(c=document.createElement("a"),e="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(c,e),c.setAttribute("title",e),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),b.appendChild(c),
e=c);e.style.marginRight="20px";this.toolbar.container.appendChild(b);this.toolbar.staticElements.push(b);b.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(b){this.importCsv(b)}),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.executeLayoutList=function(b,c){for(var d=this.editor.graph,e=d.getSelectionCells(),f=0;f<b.length;f++){var k=new window[b[f].layout](d);if(null!=b[f].config)for(var l in b[f].config)k[l]=b[f].config[l];this.executeLayout(function(){k.execute(d.getDefaultParent(),0==e.length?null:e)},f==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),
-e=[],f=[],k=[],l={};if(0<d.length){for(var n={},q=this.editor.graph,y=null,F=null,D=null,E=null,H=null,N=null,A="whiteSpace=wrap;html=1;",G=null,I=null,L="",M="auto",K="auto",O=null,U=null,X=40,ma=40,ba=100,S=0,x=function(){null!=c?c(Z):(q.setSelectionCells(Z),q.scrollCellToVisible(q.getSelectionCell()))},C=q.getFreeInsertPoint(),J=C.x,W=C.y,C=W,ca=null,aa="auto",I=null,da=[],ta=null,ua=null,ga=0;ga<d.length&&"#"==d[ga].charAt(0);){b=d[ga];for(ga++;ga<d.length&&"\\"==b.charAt(b.length-1)&&"#"==d[ga].charAt(0);)b=
-b.substring(0,b.length-1)+mxUtils.trim(d[ga].substring(1)),ga++;if("#"!=b.charAt(1)){var na=b.indexOf(":");if(0<na){var Y=mxUtils.trim(b.substring(1,na)),Q=mxUtils.trim(b.substring(na+1));"label"==Y?ca=q.sanitizeHtml(Q):"labelname"==Y&&0<Q.length&&"-"!=Q?H=Q:"labels"==Y&&0<Q.length&&"-"!=Q?N=JSON.parse(Q):"style"==Y?F=Q:"parentstyle"==Y?A=Q:"stylename"==Y&&0<Q.length&&"-"!=Q?E=Q:"styles"==Y&&0<Q.length&&"-"!=Q?D=JSON.parse(Q):"vars"==Y&&0<Q.length&&"-"!=Q?y=JSON.parse(Q):"identity"==Y&&0<Q.length&&
-"-"!=Q?G=Q:"parent"==Y&&0<Q.length&&"-"!=Q?I=Q:"namespace"==Y&&0<Q.length&&"-"!=Q?L=Q:"width"==Y?M=Q:"height"==Y?K=Q:"left"==Y&&0<Q.length?O=Q:"top"==Y&&0<Q.length?U=Q:"ignore"==Y?ua=Q.split(","):"connect"==Y?da.push(JSON.parse(Q)):"link"==Y?ta=Q:"padding"==Y?S=parseFloat(Q):"edgespacing"==Y?X=parseFloat(Q):"nodespacing"==Y?ma=parseFloat(Q):"levelspacing"==Y?ba=parseFloat(Q):"layout"==Y&&(aa=Q)}}}if(null==d[ga])throw Error(mxResources.get("invalidOrMissingFile"));for(var ea=this.editor.csvToArray(d[ga]),
-Y=na=null,Q=[],T=0;T<ea.length;T++)G==ea[T]&&(na=T),I==ea[T]&&(Y=T),Q.push(mxUtils.trim(ea[T]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==ca&&(ca="%"+Q[0]+"%");if(null!=da)for(var la=0;la<da.length;la++)null==n[da[la].to]&&(n[da[la].to]={});G=[];for(T=ga+1;T<d.length;T++){var oa=this.editor.csvToArray(d[T]);if(null==oa){var ra=40<d[T].length?d[T].substring(0,40)+"...":d[T];throw Error(ra+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));}0<oa.length&&G.push(oa)}q.model.beginUpdate();
-try{for(T=0;T<G.length;T++){var oa=G[T],R=null,qa=null!=na?L+oa[na]:null;null!=qa&&(R=q.model.getCell(qa));var d=null!=R,ia=new mxCell(ca,new mxGeometry(J,C,0,0),F||"whiteSpace=wrap;html=1;");ia.vertex=!0;ia.id=qa;for(var fa=0;fa<oa.length;fa++)q.setAttributeForCell(ia,Q[fa],oa[fa]);if(null!=H&&null!=N){var ha=N[ia.getAttribute(H)];null!=ha&&q.labelChanged(ia,ha)}if(null!=E&&null!=D){var pa=D[ia.getAttribute(E)];null!=pa&&(ia.style=pa)}q.setAttributeForCell(ia,"placeholders","1");ia.style=q.replacePlaceholders(ia,
-ia.style,y);d?(0>mxUtils.indexOf(k,R)&&k.push(R),q.fireEvent(new mxEventObject("cellsInserted","cells",[R]))):q.fireEvent(new mxEventObject("cellsInserted","cells",[ia]));R=ia;if(!d)for(la=0;la<da.length;la++)n[da[la].to][R.getAttribute(da[la].to)]=R;null!=ta&&"link"!=ta&&(q.setLinkForCell(R,R.getAttribute(ta)),q.setAttributeForCell(R,ta,null));var Aa=this.editor.graph.getPreferredSizeForCell(R),I=null!=Y?q.model.getCell(L+oa[Y]):null;if(R.vertex){ra=null!=I?0:J;ga=null!=I?0:W;null!=O&&null!=R.getAttribute(O)&&
-(R.geometry.x=ra+parseFloat(R.getAttribute(O)));null!=U&&null!=R.getAttribute(U)&&(R.geometry.y=ga+parseFloat(R.getAttribute(U)));var xa="@"==M.charAt(0)?R.getAttribute(M.substring(1)):null;R.geometry.width=null!=xa&&"auto"!=xa?parseFloat(R.getAttribute(M.substring(1))):"auto"==M||"auto"==xa?Aa.width+S:parseFloat(M);var sa="@"==K.charAt(0)?R.getAttribute(K.substring(1)):null;R.geometry.height=null!=sa&&"auto"!=sa?parseFloat(sa):"auto"==K||"auto"==sa?Aa.height+S:parseFloat(K);C+=R.geometry.height+
-ma}d?(null==l[qa]&&(l[qa]=[]),l[qa].push(R)):(e.push(R),null!=I?(I.style=q.replacePlaceholders(I,A,y),q.addCell(R,I),f.push(I)):k.push(q.addCell(R)))}for(T=0;T<f.length;T++)xa="@"==M.charAt(0)?f[T].getAttribute(M.substring(1)):null,sa="@"==K.charAt(0)?f[T].getAttribute(K.substring(1)):null,"auto"!=M&&"auto"!=xa||"auto"!=K&&"auto"!=sa||q.updateGroupBounds([f[T]],S,!0);for(var ja=k.slice(),Z=k.slice(),la=0;la<da.length;la++)for(var P=da[la],T=0;T<e.length;T++){var R=e[T],Ga=mxUtils.bind(this,function(b,
+e=[],f=[],k=[],l={};if(0<d.length){for(var n={},q=this.editor.graph,y=null,F=null,D=null,E=null,H=null,N=null,A="whiteSpace=wrap;html=1;",G=null,I=null,L="",M="auto",K="auto",O=null,U=null,X=40,na=40,ca=100,S=0,x=function(){null!=c?c(Z):(q.setSelectionCells(Z),q.scrollCellToVisible(q.getSelectionCell()))},C=q.getFreeInsertPoint(),J=C.x,W=C.y,C=W,da=null,aa="auto",I=null,ea=[],ta=null,ua=null,ha=0;ha<d.length&&"#"==d[ha].charAt(0);){b=d[ha];for(ha++;ha<d.length&&"\\"==b.charAt(b.length-1)&&"#"==d[ha].charAt(0);)b=
+b.substring(0,b.length-1)+mxUtils.trim(d[ha].substring(1)),ha++;if("#"!=b.charAt(1)){var oa=b.indexOf(":");if(0<oa){var Y=mxUtils.trim(b.substring(1,oa)),Q=mxUtils.trim(b.substring(oa+1));"label"==Y?da=q.sanitizeHtml(Q):"labelname"==Y&&0<Q.length&&"-"!=Q?H=Q:"labels"==Y&&0<Q.length&&"-"!=Q?N=JSON.parse(Q):"style"==Y?F=Q:"parentstyle"==Y?A=Q:"stylename"==Y&&0<Q.length&&"-"!=Q?E=Q:"styles"==Y&&0<Q.length&&"-"!=Q?D=JSON.parse(Q):"vars"==Y&&0<Q.length&&"-"!=Q?y=JSON.parse(Q):"identity"==Y&&0<Q.length&&
+"-"!=Q?G=Q:"parent"==Y&&0<Q.length&&"-"!=Q?I=Q:"namespace"==Y&&0<Q.length&&"-"!=Q?L=Q:"width"==Y?M=Q:"height"==Y?K=Q:"left"==Y&&0<Q.length?O=Q:"top"==Y&&0<Q.length?U=Q:"ignore"==Y?ua=Q.split(","):"connect"==Y?ea.push(JSON.parse(Q)):"link"==Y?ta=Q:"padding"==Y?S=parseFloat(Q):"edgespacing"==Y?X=parseFloat(Q):"nodespacing"==Y?na=parseFloat(Q):"levelspacing"==Y?ca=parseFloat(Q):"layout"==Y&&(aa=Q)}}}if(null==d[ha])throw Error(mxResources.get("invalidOrMissingFile"));for(var fa=this.editor.csvToArray(d[ha]),
+Y=oa=null,Q=[],T=0;T<fa.length;T++)G==fa[T]&&(oa=T),I==fa[T]&&(Y=T),Q.push(mxUtils.trim(fa[T]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==da&&(da="%"+Q[0]+"%");if(null!=ea)for(var la=0;la<ea.length;la++)null==n[ea[la].to]&&(n[ea[la].to]={});G=[];for(T=ha+1;T<d.length;T++){var pa=this.editor.csvToArray(d[T]);if(null==pa){var ra=40<d[T].length?d[T].substring(0,40)+"...":d[T];throw Error(ra+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));}0<pa.length&&G.push(pa)}q.model.beginUpdate();
+try{for(T=0;T<G.length;T++){var pa=G[T],R=null,qa=null!=oa?L+pa[oa]:null;null!=qa&&(R=q.model.getCell(qa));var d=null!=R,ia=new mxCell(da,new mxGeometry(J,C,0,0),F||"whiteSpace=wrap;html=1;");ia.vertex=!0;ia.id=qa;for(var ga=0;ga<pa.length;ga++)q.setAttributeForCell(ia,Q[ga],pa[ga]);if(null!=H&&null!=N){var ba=N[ia.getAttribute(H)];null!=ba&&q.labelChanged(ia,ba)}if(null!=E&&null!=D){var ma=D[ia.getAttribute(E)];null!=ma&&(ia.style=ma)}q.setAttributeForCell(ia,"placeholders","1");ia.style=q.replacePlaceholders(ia,
+ia.style,y);d?(0>mxUtils.indexOf(k,R)&&k.push(R),q.fireEvent(new mxEventObject("cellsInserted","cells",[R]))):q.fireEvent(new mxEventObject("cellsInserted","cells",[ia]));R=ia;if(!d)for(la=0;la<ea.length;la++)n[ea[la].to][R.getAttribute(ea[la].to)]=R;null!=ta&&"link"!=ta&&(q.setLinkForCell(R,R.getAttribute(ta)),q.setAttributeForCell(R,ta,null));var Aa=this.editor.graph.getPreferredSizeForCell(R),I=null!=Y?q.model.getCell(L+pa[Y]):null;if(R.vertex){ra=null!=I?0:J;ha=null!=I?0:W;null!=O&&null!=R.getAttribute(O)&&
+(R.geometry.x=ra+parseFloat(R.getAttribute(O)));null!=U&&null!=R.getAttribute(U)&&(R.geometry.y=ha+parseFloat(R.getAttribute(U)));var xa="@"==M.charAt(0)?R.getAttribute(M.substring(1)):null;R.geometry.width=null!=xa&&"auto"!=xa?parseFloat(R.getAttribute(M.substring(1))):"auto"==M||"auto"==xa?Aa.width+S:parseFloat(M);var sa="@"==K.charAt(0)?R.getAttribute(K.substring(1)):null;R.geometry.height=null!=sa&&"auto"!=sa?parseFloat(sa):"auto"==K||"auto"==sa?Aa.height+S:parseFloat(K);C+=R.geometry.height+
+na}d?(null==l[qa]&&(l[qa]=[]),l[qa].push(R)):(e.push(R),null!=I?(I.style=q.replacePlaceholders(I,A,y),q.addCell(R,I),f.push(I)):k.push(q.addCell(R)))}for(T=0;T<f.length;T++)xa="@"==M.charAt(0)?f[T].getAttribute(M.substring(1)):null,sa="@"==K.charAt(0)?f[T].getAttribute(K.substring(1)):null,"auto"!=M&&"auto"!=xa||"auto"!=K&&"auto"!=sa||q.updateGroupBounds([f[T]],S,!0);for(var ja=k.slice(),Z=k.slice(),la=0;la<ea.length;la++)for(var P=ea[la],T=0;T<e.length;T++){var R=e[T],Ga=mxUtils.bind(this,function(b,
c,d){var e=c.getAttribute(d.from);if(null!=e&&""!=e)for(var e=e.split(","),g=0;g<e.length;g++){var f=n[d.to][e[g]];if(null==f){f=new mxCell(e[g],new mxGeometry(J,W,0,0),F||"whiteSpace=wrap;html=1;");f.style=q.replacePlaceholders(c,f.style,y);var l=this.editor.graph.getPreferredSizeForCell(f);f.geometry.width=l.width+S;f.geometry.height=l.height+S;n[d.to][e[g]]=f;f.vertex=!0;f.id=e[g];k.push(q.addCell(f))}l=d.label;null!=d.fromlabel&&(l=(c.getAttribute(d.fromlabel)||"")+(l||""));null!=d.sourcelabel&&
(l=q.replacePlaceholders(c,d.sourcelabel,y)+(l||""));null!=d.tolabel&&(l=(l||"")+(f.getAttribute(d.tolabel)||""));null!=d.targetlabel&&(l=(l||"")+q.replacePlaceholders(f,d.targetlabel,y));var m="target"==d.placeholders==!d.invert?f:b,m=null!=d.style?q.replacePlaceholders(m,d.style,y):q.createCurrentEdgeStyle(),l=q.insertEdge(null,null,l||"",d.invert?f:b,d.invert?b:f,m);if(null!=d.labels)for(m=0;m<d.labels.length;m++){var p=d.labels[m],t=new mxCell(p.label||m,new mxGeometry(null!=p.x?p.x:0,null!=p.y?
-p.y:0,0,0),"resizable=0;html=1;");t.vertex=!0;t.connectable=!1;t.geometry.relative=!0;null!=p.placeholders&&(t.value=q.replacePlaceholders("target"==p.placeholders==!d.invert?f:b,t.value,y));if(null!=p.dx||null!=p.dy)t.geometry.offset=new mxPoint(null!=p.dx?p.dx:0,null!=p.dy?p.dy:0);l.insert(t)}Z.push(l);mxUtils.remove(d.invert?b:f,ja)}});Ga(R,R,P);if(null!=l[R.id])for(fa=0;fa<l[R.id].length;fa++)Ga(R,l[R.id][fa],P)}if(null!=ua)for(T=0;T<e.length;T++)for(R=e[T],fa=0;fa<ua.length;fa++)q.setAttributeForCell(R,
-mxUtils.trim(ua[fa]),null);if(0<k.length){var Da=new mxParallelEdgeLayout(q);Da.spacing=X;Da.checkOverlap=!0;var ya=function(){0<Da.spacing&&Da.execute(q.getDefaultParent());for(var b=0;b<k.length;b++){var c=q.getCellGeometry(k[b]);c.x=Math.round(q.snap(c.x));c.y=Math.round(q.snap(c.y));"auto"==M&&(c.width=Math.round(q.snap(c.width)));"auto"==K&&(c.height=Math.round(q.snap(c.height)))}};if("["==aa.charAt(0)){var Ea=x;q.view.validate();this.executeLayoutList(JSON.parse(aa),function(){ya();Ea()});x=
-null}else if("circle"==aa){var va=new mxCircleLayout(q);va.disableEdgeStyle=!1;va.resetEdges=!1;var Ha=va.isVertexIgnored;va.isVertexIgnored=function(b){return Ha.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){va.execute(q.getDefaultParent());ya()},!0,x);x=null}else if("horizontaltree"==aa||"verticaltree"==aa||"auto"==aa&&Z.length==2*k.length-1&&1==ja.length){q.view.validate();var Ca=new mxCompactTreeLayout(q,"horizontaltree"==aa);Ca.levelDistance=ma;Ca.edgeRouting=!1;
-Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(q.getDefaultParent(),0<ja.length?ja[0]:null)},!0,x);x=null}else if("horizontalflow"==aa||"verticalflow"==aa||"auto"==aa&&1==ja.length){q.view.validate();var za=new mxHierarchicalLayout(q,"horizontalflow"==aa?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);za.intraCellSpacing=ma;za.parallelEdgeSpacing=X;za.interRankCellSpacing=ba;za.disableEdgeStyle=!1;this.executeLayout(function(){za.execute(q.getDefaultParent(),Z);q.moveCells(Z,J,
-W)},!0,x);x=null}else if("organic"==aa||"auto"==aa&&Z.length>k.length){q.view.validate();var Ba=new mxFastOrganicLayout(q);Ba.forceConstant=3*ma;Ba.disableEdgeStyle=!1;Ba.resetEdges=!1;var V=Ba.isVertexIgnored;Ba.isVertexIgnored=function(b){return V.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){Ba.execute(q.getDefaultParent());ya()},!0,x);x=null}}this.hideDialog()}finally{q.model.endUpdate()}null!=x&&x()}}catch(Fa){this.handleError(Fa)}};EditorUi.prototype.getSearch=
+p.y:0,0,0),"resizable=0;html=1;");t.vertex=!0;t.connectable=!1;t.geometry.relative=!0;null!=p.placeholders&&(t.value=q.replacePlaceholders("target"==p.placeholders==!d.invert?f:b,t.value,y));if(null!=p.dx||null!=p.dy)t.geometry.offset=new mxPoint(null!=p.dx?p.dx:0,null!=p.dy?p.dy:0);l.insert(t)}Z.push(l);mxUtils.remove(d.invert?b:f,ja)}});Ga(R,R,P);if(null!=l[R.id])for(ga=0;ga<l[R.id].length;ga++)Ga(R,l[R.id][ga],P)}if(null!=ua)for(T=0;T<e.length;T++)for(R=e[T],ga=0;ga<ua.length;ga++)q.setAttributeForCell(R,
+mxUtils.trim(ua[ga]),null);if(0<k.length){var Da=new mxParallelEdgeLayout(q);Da.spacing=X;Da.checkOverlap=!0;var ya=function(){0<Da.spacing&&Da.execute(q.getDefaultParent());for(var b=0;b<k.length;b++){var c=q.getCellGeometry(k[b]);c.x=Math.round(q.snap(c.x));c.y=Math.round(q.snap(c.y));"auto"==M&&(c.width=Math.round(q.snap(c.width)));"auto"==K&&(c.height=Math.round(q.snap(c.height)))}};if("["==aa.charAt(0)){var Ea=x;q.view.validate();this.executeLayoutList(JSON.parse(aa),function(){ya();Ea()});x=
+null}else if("circle"==aa){var va=new mxCircleLayout(q);va.disableEdgeStyle=!1;va.resetEdges=!1;var Ha=va.isVertexIgnored;va.isVertexIgnored=function(b){return Ha.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){va.execute(q.getDefaultParent());ya()},!0,x);x=null}else if("horizontaltree"==aa||"verticaltree"==aa||"auto"==aa&&Z.length==2*k.length-1&&1==ja.length){q.view.validate();var Ca=new mxCompactTreeLayout(q,"horizontaltree"==aa);Ca.levelDistance=na;Ca.edgeRouting=!1;
+Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(q.getDefaultParent(),0<ja.length?ja[0]:null)},!0,x);x=null}else if("horizontalflow"==aa||"verticalflow"==aa||"auto"==aa&&1==ja.length){q.view.validate();var za=new mxHierarchicalLayout(q,"horizontalflow"==aa?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);za.intraCellSpacing=na;za.parallelEdgeSpacing=X;za.interRankCellSpacing=ca;za.disableEdgeStyle=!1;this.executeLayout(function(){za.execute(q.getDefaultParent(),Z);q.moveCells(Z,J,
+W)},!0,x);x=null}else if("organic"==aa||"auto"==aa&&Z.length>k.length){q.view.validate();var Ba=new mxFastOrganicLayout(q);Ba.forceConstant=3*na;Ba.disableEdgeStyle=!1;Ba.resetEdges=!1;var V=Ba.isVertexIgnored;Ba.isVertexIgnored=function(b){return V.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){Ba.execute(q.getDefaultParent());ya()},!0,x);x=null}}this.hideDialog()}finally{q.model.endUpdate()}null!=x&&x()}}catch(Fa){this.handleError(Fa)}};EditorUi.prototype.getSearch=
function(b){var c="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var d="?",e;for(e in urlParams)0>mxUtils.indexOf(b,e)&&null!=urlParams[e]&&(c+=d+e+"="+urlParams[e],d="&")}else c=window.location.search;return c};EditorUi.prototype.getUrl=function(b){b=null!=b?b:window.location.pathname;var c=0<b.indexOf("?")?1:0;if("1"==urlParams.offline)b+=window.location.search;else{var d="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),
e;for(e in urlParams)0>mxUtils.indexOf(d,e)&&(b=0==c?b+"?":b+"&",null!=urlParams[e]&&(b+=e+"="+urlParams[e],c++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,e,f,l){b=new LinkDialog(this,b,c,e,!0,f,l);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=function(b){var c=1;null==this.drive&&"function"!==typeof window.DriveClient||c++;null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||
c++;null!=this.gitHub&&c++;null!=this.gitLab&&c++;null!=this.notion&&c++;b&&isLocalStorage&&"1"==urlParams.browser&&c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var b=this.getCurrentFile(),c=null!=b||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(c);this.menus.get("viewZoom").setEnabled(c);var e=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==b||b.isRestricted());this.actions.get("makeCopy").setEnabled(!e);
@@ -3925,12 +3931,12 @@ c==mxConstants.DIRECTION_WEST?-1:1,0<=e&&e<=f.length-1&&t.setSelectionCell(f[e].
var F=t.removeCells;t.removeCells=function(c,d){d=null!=d?d:!0;null==c&&(c=this.getDeletableCells(this.getSelectionCells()));d&&(c=this.getDeletableCells(this.addAllEdges(c)));for(var f=[],g=0;g<c.length;g++){var k=c[g];z.isEdge(k)&&e(k)&&(f.push(k),k=z.getTerminal(k,!1));if(b(k)){var l=[];t.traverse(k,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});0<l.length&&(f=f.concat(l),k=t.getIncomingTreeEdges(c[g]),c=c.concat(k))}else null!=k&&f.push(c[g])}c=
f;return F.apply(this,arguments)};u.hoverIcons.getStateAt=function(c,d,e){return b(c.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,e))};var D=t.duplicateCells;t.duplicateCells=function(c,d){c=null!=c?c:this.getSelectionCells();for(var e=c.slice(0),f=0;f<e.length;f++){var g=t.view.getState(e[f]);if(null!=g&&b(g.cell))for(var k=t.getIncomingTreeEdges(g.cell),g=0;g<k.length;g++)mxUtils.remove(k[g],c)}this.model.beginUpdate();try{var l=D.call(this,c,d);if(l.length==c.length)for(f=0;f<c.length;f++)if(b(c[f])){var m=
t.getIncomingTreeEdges(l[f]),k=t.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,t.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var E=t.moveCells;t.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var n=g,p=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||t.model.isEdge(c[q])&&null==t.model.getTerminal(c[q],
-!0)){g=t.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var u=t.getIncomingTreeEdges(c[0]);if(0<u.length){var x=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=x){var v=t.view.getState(n);null!=v&&(d=(v.getCenterX()-x.getCenterX())/t.view.scale,e=(v.getCenterY()-x.getCenterY())/t.view.scale)}}}}m=E.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
+!0)){g=t.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var u=t.getIncomingTreeEdges(c[0]);if(0<u.length){var v=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=v){var A=t.view.getState(n);null!=A&&(d=(A.getCenterX()-v.getCenterX())/t.view.scale,e=(A.getCenterY()-v.getCenterY())/t.view.scale)}}}}m=E.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
!0))&&this.model.setTerminal(m[q],n,!0);else if(b(c[q])&&(u=t.getIncomingTreeEdges(c[q]),0<u.length))if(!f)b(n)&&0>mxUtils.indexOf(c,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],n,!0);else if(0==t.getIncomingTreeEdges(m[q]).length){p=n;if(null==p||p==t.model.getParent(c[q]))p=t.model.getTerminal(u[0],!0);f=this.cloneCell(u[0]);this.addEdge(f,t.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=u.sidebar){var H=u.sidebar.dropAndConnect;u.sidebar.dropAndConnect=
function(c,d,e,f){var g=t.model,k=null;g.beginUpdate();try{if(k=H.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=t.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var N={88:u.actions.get("selectChildren"),84:u.actions.get("selectSubtree"),80:u.actions.get("selectParent"),83:u.actions.get("selectSiblings")},A=u.onKeyDown;u.onKeyDown=function(c){try{if(t.isEnabled()&&
!t.isEditing()&&b(t.getSelectionCell())&&1==t.getSelectionCount()){var d=null;0<t.getIncomingTreeEdges(t.getSelectionCell()).length&&(9==c.which?d=mxEvent.isShiftDown(c)?g(t.getSelectionCell()):p(t.getSelectionCell()):13==c.which&&(d=k(t.getSelectionCell(),!mxEvent.isShiftDown(c))));if(null!=d&&0<d.length)1==d.length&&t.model.isEdge(d[0])?t.setSelectionCell(t.model.getTerminal(d[0],!1)):t.setSelectionCell(d[d.length-1]),null!=u.hoverIcons&&u.hoverIcons.update(t.view.getState(t.getSelectionCell())),
t.startEditingAtCell(t.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=N[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(v(t.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(v(t.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(v(t.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(v(t.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(c))}}catch(ma){u.handleError(ma)}mxEvent.isConsumed(c)||A.apply(this,arguments)};var G=t.connectVertex;t.connectVertex=function(c,e,f,l,m,n,q){var u=t.getIncomingTreeEdges(c);if(b(c)){var x=d(c),v=x==mxConstants.DIRECTION_EAST||x==mxConstants.DIRECTION_WEST,A=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return x==e||0==u.length?p(c,e):v==A?g(c):k(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return G.apply(this,arguments)};t.getSubtree=function(d){var e=
+mxEvent.consume(c))}}catch(na){u.handleError(na)}mxEvent.isConsumed(c)||A.apply(this,arguments)};var G=t.connectVertex;t.connectVertex=function(c,e,f,l,m,n,q){var u=t.getIncomingTreeEdges(c);if(b(c)){var v=d(c),A=v==mxConstants.DIRECTION_EAST||v==mxConstants.DIRECTION_WEST,x=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return v==e||0==u.length?p(c,e):A==x?g(c):k(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return G.apply(this,arguments)};t.getSubtree=function(d){var e=
[d];!c(d)&&!b(d)||q(d)||t.traverse(d,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&0>mxUtils.indexOf(e,c)&&e.push(c);(null==c||d)&&0>mxUtils.indexOf(e,b)&&e.push(b);return null==c||d});return e};var I=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){I.apply(this,arguments);(c(this.state.cell)||b(this.state.cell))&&!q(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(b){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(b);
this.graph.isMouseDown=!0;u.hoverIcons.reset();mxEvent.consume(b)})))};var L=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){L.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 M=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){M.apply(this,
@@ -4025,7 +4031,7 @@ k.style.width="34px"):mxUtils.write(k,b);mxEvent.addListener(k,mxClient.IS_POINT
f.addListener("stateChanged",b),n.addListener("enabledChanged",b),b());return k}function g(b,c,d){d=document.createElement("div");d.className="geMenuItem";d.style.display="inline-block";d.style.verticalAlign="top";d.style.marginRight="6px";d.style.padding="0 4px 0 4px";d.style.height="30px";d.style.position="relative";d.style.top="0px";"1"==urlParams.sketch&&(d.style.boxShadow="none");for(var e=0;e<b.length;e++)null!=b[e]&&("1"==urlParams.sketch&&(b[e].style.padding="10px 8px",b[e].style.width="30px"),
b[e].style.margin="0px",b[e].style.boxShadow="none",d.appendChild(b[e]));null!=c&&mxUtils.setOpacity(d,c);null!=m.statusContainer&&"1"!=urlParams.sketch?p.insertBefore(d,m.statusContainer):p.appendChild(d);return d}function k(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(H.style.left=58>F.offsetTop-F.offsetHeight/2?"70px":"10px");else{for(var b=p.firstChild;null!=b;){var e=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=e}q=p.firstChild;f=window.innerWidth||
document.documentElement.clientWidth||document.body.clientWidth;var b=1E3>f||"1"==urlParams.sketch,k=null;b||(k=c("diagram"));e=b?c("diagram",null,Editor.drawLogoImage):null;null!=e&&(k=e);g([k,d(mxResources.get("shapes"),m.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),m.actions.get("image"),b?Editor.shapesImage:null),d(mxResources.get("format"),m.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+m.actions.get("formatPanel").shortcut+")",m.actions.get("image"),
-b?Editor.formatImage:null)],b?60:null);e=c("insert",!0,b?E:null);g([e,d(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=f&&(g([ha,pa],60),520<=f&&g([Ga,640<=f?d("",ra.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",ra,Editor.zoomInImage):null,640<=f?d("",R.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",R,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
+b?Editor.formatImage:null)],b?60:null);e=c("insert",!0,b?E:null);g([e,d(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=f&&(g([ba,ma],60),520<=f&&g([Ga,640<=f?d("",ra.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",ra,Editor.zoomInImage):null,640<=f?d("",R.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",R,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
mxEvent.addGestureListeners(k,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&m.appIconClicked(b)}),null,null));e=m.menus.get("language");null!=e&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f&&"1"!=urlParams.sketch?(null==ya&&(e=t.addMenu("",e.funct),e.setAttribute("title",mxResources.get("language")),e.className="geToolbarButton",e.style.backgroundImage="url("+Editor.globeImage+")",
e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.position="absolute",e.style.height="24px",e.style.width="24px",e.style.zIndex="1",e.style.right="8px",e.style.cursor="pointer",e.style.top="1"==urlParams.embed?"12px":"11px",p.appendChild(e),ya=e),m.buttonContainer.style.paddingRight="34px"):(m.buttonContainer.style.paddingRight="4px",null!=ya&&(ya.parentNode.removeChild(ya),ya=null))}N.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 l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";l.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(l);"1"==urlParams.sketch&&
@@ -4043,29 +4049,29 @@ rect:m.diagramContainer.getBoundingClientRect()}),"*");m.refresh()}H.style.left=
m.bottomResizer.offsetWidth)/2+"px";m.bottomResizer.style.top=m.diagramContainer.offsetTop+m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight/2-1+"px";m.rightResizer.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-m.rightResizer.offsetWidth/2-1+"px";m.rightResizer.style.top=m.diagramContainer.offsetTop+(m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight)/2+"px"}m.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";m.rightResizer.style.visibility=
m.bottomResizer.style.visibility;p.style.display="none";H.style.visibility="";D.style.visibility=""}),ua=mxUtils.bind(this,function(){Aa.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";ta()}),z=mxUtils.bind(this,function(){ua();b(m,!0);m.initFormatWindow();var c=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(c.x+
c.width+4,c.y)});m.addListener("inlineFullscreenChanged",ua);m.addListener("editInlineStart",z);"1"==urlParams.embedInline&&m.addListener("darkModeChanged",z);m.addListener("editInlineStop",mxUtils.bind(this,function(b){m.diagramContainer.style.width="10px";m.diagramContainer.style.height="10px";m.diagramContainer.style.border="";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";H.style.visibility="hidden";D.style.visibility="hidden";F.style.display="none"}));if(null!=
-m.hoverIcons){var ga=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||ga.apply(this,arguments)}}if(null!=n.freehand){var na=n.freehand.createStyle;n.freehand.createStyle=function(b){return na.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){F.className="geToolbarContainer";D.className="geToolbarContainer";H.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=F;var Y=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
+m.hoverIcons){var ha=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||ha.apply(this,arguments)}}if(null!=n.freehand){var oa=n.freehand.createStyle;n.freehand.createStyle=function(b){return oa.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){F.className="geToolbarContainer";D.className="geToolbarContainer";H.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=F;var Y=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
"inline-block"});mxEvent.addListener(p,"mouseleave",function(){Y||(m.statusContainer.style.display="none")});var Q=mxUtils.bind(this,function(b){null!=m.notificationBtn&&(null!=b?m.notificationBtn.setAttribute("title",b):m.notificationBtn.removeAttribute("title"))});"1"!=urlParams.embed?(p.style.visibility=14>p.clientWidth?"hidden":"",m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus());if(0==m.statusContainer.children.length||1==m.statusContainer.children.length&&
"function"===typeof m.statusContainer.firstChild.getAttribute&&null==m.statusContainer.firstChild.getAttribute("class")){var b=null!=m.statusContainer.firstChild&&"function"===typeof m.statusContainer.firstChild.getAttribute?m.statusContainer.firstChild.getAttribute("title"):m.editor.getStatus();Q(b);var c=m.getCurrentFile(),c=null!=c?c.savingStatusKey:DrawioFile.prototype.savingStatusKey;b==mxResources.get(c)+"..."?(m.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(c))+
'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",Y=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",Y=!1)}else m.statusContainer.style.display="inline-block",Q(null),Y=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));P=c("diagram",null,Editor.menuImage);P.style.boxShadow="none";P.style.padding="6px";P.style.margin="0px";
H.appendChild(P);mxEvent.disableContextMenu(P);mxEvent.addGestureListeners(P,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(f-240,280)+"px";m.statusContainer.style.display=
-"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.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 T=!1,la=mxUtils.bind(this,function(){F.innerHTML="";if(!T){var b=function(b,c,f){b=d("",b.funct,null,c,b,f);b.style.width="40px";b.style.opacity="0.7";return e(b,null,"pointer")},e=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";F.appendChild(b);mxUtils.br(F);return b};e(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
+"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var fa=document.createElement("a");fa.style.padding="0px";fa.style.boxShadow="none";fa.className="geMenuItem";fa.style.display="inline-block";fa.style.width="40px";fa.style.height="12px";fa.style.marginBottom="-2px";fa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";fa.style.backgroundPosition=
+"top center";fa.style.backgroundRepeat="no-repeat";fa.setAttribute("title","Minimize");var T=!1,la=mxUtils.bind(this,function(){F.innerHTML="";if(!T){var b=function(b,c,f){b=d("",b.funct,null,c,b,f);b.style.width="40px";b.style.opacity="0.7";return e(b,null,"pointer")},e=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";F.appendChild(b);mxUtils.br(F);return b};e(m.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)");e(m.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"));e(m.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");e(m.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var b=new mxCell("",new mxGeometry(0,0,n.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,0),!1);
b.geometry.points=[];b.geometry.relative=!0;b.edge=!0;e(m.sidebar.createEdgeTemplateFromCells([b],b.geometry.width,b.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));b=b.clone();b.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";b.geometry.width=n.defaultEdgeLength+20;b.geometry.setTerminalPoint(new mxPoint(0,20),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,20),!1);b=e(m.sidebar.createEdgeTemplateFromCells([b],
b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var f=m.actions.get("toggleShapes");b(f,mxResources.get("shapes")+" ("+f.shortcut+")",E);P=c("table",null,Editor.calendarImage);P.style.boxShadow="none";P.style.opacity="0.7";P.style.padding="6px";
-P.style.margin="0px";P.style.width="37px";e(P,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.addImage)}"1"!=urlParams.embedInline&&F.appendChild(ea)});mxEvent.addListener(ea,"click",mxUtils.bind(this,function(){T?(mxUtils.setPrefixedStyle(F.style,"transform","translate(0, -50%)"),F.style.padding="8px 6px 4px",F.style.top="50%",F.style.bottom="",F.style.height="",ea.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",ea.style.width="40px",ea.style.height=
-"12px",ea.setAttribute("title","Minimize"),T=!1,la()):(F.innerHTML="",F.appendChild(ea),mxUtils.setPrefixedStyle(F.style,"transform","translate(0, 0)"),F.style.top="",F.style.bottom="12px",F.style.padding="0px",F.style.height="24px",ea.style.height="24px",ea.style.backgroundImage="url("+Editor.plusImage+")",ea.setAttribute("title",mxResources.get("insert")),ea.style.width="24px",T=!0)}));la();m.addListener("darkModeChanged",la);m.addListener("sketchModeChanged",la)}else m.editor.addListener("statusChanged",
-mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=y){var oa=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},ra=m.actions.get("zoomIn"),R=m.actions.get("zoomOut"),qa=m.actions.get("resetView"),z=m.actions.get("fullscreen"),ia=m.actions.get("undo"),fa=m.actions.get("redo"),ha=d("",ia.funct,null,mxResources.get("undo")+" ("+ia.shortcut+")",ia,Editor.undoImage),pa=
-d("",fa.funct,null,mxResources.get("redo")+" ("+fa.shortcut+")",fa,Editor.redoImage),Aa=d("",z.funct,null,mxResources.get("fullscreen"),z,Editor.fullscreenImage);if(null!=D){y=function(){Z.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};qa=function(){Z.innerHTML="";null!=m.currentPage&&mxUtils.write(Z,m.currentPage.getName())};Aa.parentNode.removeChild(Aa);var xa=m.actions.get("delete"),sa=d("",xa.funct,null,mxResources.get("delete"),
-xa,Editor.trashImage);sa.style.opacity="0.1";H.appendChild(sa);xa.addListener("stateChanged",function(){sa.style.opacity=xa.enabled?"":"0.1"});var ja=function(){ha.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";pa.style.display=ha.style.display;ha.style.opacity=ia.enabled?"":"0.1";pa.style.opacity=fa.enabled?"":"0.1"};H.appendChild(ha);H.appendChild(pa);ia.addListener("stateChanged",ja);fa.addListener("stateChanged",ja);ja();null!=urlParams.layers&&(ja=m.actions.get("layers"),
+P.style.margin="0px";P.style.width="37px";e(P,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.addImage)}"1"!=urlParams.embedInline&&F.appendChild(fa)});mxEvent.addListener(fa,"click",mxUtils.bind(this,function(){T?(mxUtils.setPrefixedStyle(F.style,"transform","translate(0, -50%)"),F.style.padding="8px 6px 4px",F.style.top="50%",F.style.bottom="",F.style.height="",fa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",fa.style.width="40px",fa.style.height=
+"12px",fa.setAttribute("title","Minimize"),T=!1,la()):(F.innerHTML="",F.appendChild(fa),mxUtils.setPrefixedStyle(F.style,"transform","translate(0, 0)"),F.style.top="",F.style.bottom="12px",F.style.padding="0px",F.style.height="24px",fa.style.height="24px",fa.style.backgroundImage="url("+Editor.plusImage+")",fa.setAttribute("title",mxResources.get("insert")),fa.style.width="24px",T=!0)}));la();m.addListener("darkModeChanged",la);m.addListener("sketchModeChanged",la)}else m.editor.addListener("statusChanged",
+mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=y){var pa=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},ra=m.actions.get("zoomIn"),R=m.actions.get("zoomOut"),qa=m.actions.get("resetView"),z=m.actions.get("fullscreen"),ia=m.actions.get("undo"),ga=m.actions.get("redo"),ba=d("",ia.funct,null,mxResources.get("undo")+" ("+ia.shortcut+")",ia,Editor.undoImage),ma=
+d("",ga.funct,null,mxResources.get("redo")+" ("+ga.shortcut+")",ga,Editor.redoImage),Aa=d("",z.funct,null,mxResources.get("fullscreen"),z,Editor.fullscreenImage);if(null!=D){y=function(){Z.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};qa=function(){Z.innerHTML="";null!=m.currentPage&&mxUtils.write(Z,m.currentPage.getName())};Aa.parentNode.removeChild(Aa);var xa=m.actions.get("delete"),sa=d("",xa.funct,null,mxResources.get("delete"),
+xa,Editor.trashImage);sa.style.opacity="0.1";H.appendChild(sa);xa.addListener("stateChanged",function(){sa.style.opacity=xa.enabled?"":"0.1"});var ja=function(){ba.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";ma.style.display=ba.style.display;ba.style.opacity=ia.enabled?"":"0.1";ma.style.opacity=ga.enabled?"":"0.1"};H.appendChild(ba);H.appendChild(ma);ia.addListener("stateChanged",ja);ga.addListener("stateChanged",ja);ja();null!=urlParams.layers&&(ja=m.actions.get("layers"),
ja=d("",ja.funct,null,mxResources.get("layers"),ja,Editor.layersImage),ja.style.opacity="0.4",D.appendChild(ja));null!=urlParams.tags&&(ja=m.actions.get("tags"),ja=d("",ja.funct,null,mxResources.get("tags"),ja,Editor.tagsImage),ja.style.opacity="0.4",D.appendChild(ja));var Z=this.createPageMenuTab(!1,!0);Z.style.display="none";Z.style.position="";Z.style.marginLeft="";Z.style.top="";Z.style.left="";Z.style.height="100%";Z.style.lineHeight="";Z.style.borderStyle="none";Z.style.padding="3px 0";Z.style.margin=
"0px";Z.style.background="";Z.style.border="";Z.style.boxShadow="none";Z.style.verticalAlign="top";Z.style.width="auto";Z.style.maxWidth="160px";Z.style.position="relative";Z.style.padding="6px";Z.style.textOverflow="ellipsis";Z.style.opacity="0.8";m.editor.addListener("pageSelected",qa);m.editor.addListener("pageRenamed",qa);m.editor.addListener("fileLoaded",qa);qa();null!=m.currentPage&&(mxUtils.write(P,m.currentPage.getName()),console.log("initial page not emptry"));D.appendChild(Z);m.addListener("fileDescriptorChanged",
y);m.addListener("pagesVisibleChanged",y);y();y=d("",R.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",R,Editor.zoomOutImage);D.appendChild(y);var P=document.createElement("div");P.innerHTML="100%";P.setAttribute("title",mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");P.style.display="inline-block";P.style.cursor="pointer";P.style.textAlign="center";P.style.whiteSpace="nowrap";P.style.paddingRight="10px";P.style.textDecoration="none";P.style.verticalAlign=
-"top";P.style.padding="6px 0";P.style.fontSize="14px";P.style.width="40px";P.style.opacity="0.4";D.appendChild(P);mxEvent.addListener(P,"click",oa);oa=d("",ra.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",ra,Editor.zoomInImage);D.appendChild(oa);z.visible&&(D.appendChild(Aa),mxEvent.addListener(document,"fullscreenchange",function(){Aa.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&
+"top";P.style.padding="6px 0";P.style.fontSize="14px";P.style.width="40px";P.style.opacity="0.4";D.appendChild(P);mxEvent.addListener(P,"click",pa);pa=d("",ra.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",ra,Editor.zoomInImage);D.appendChild(pa);z.visible&&(D.appendChild(Aa),mxEvent.addListener(document,"fullscreenchange",function(){Aa.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&
(z=m.actions.get("exit"),D.appendChild(d("",z.funct,null,mxResources.get("exit"),z,Editor.closeImage)));m.tabContainer.style.visibility="hidden";p.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;";H.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;";
D.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(H);x.appendChild(D);F.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;";x.appendChild(F);window.setTimeout(function(){mxUtils.setPrefixedStyle(F.style,
-"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var Ga=d("",oa,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",qa,Editor.zoomFitImage);p.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";P=t.addMenu("100%",y.funct);P.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");P.style.whiteSpace="nowrap";P.style.paddingRight=
+"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var Ga=d("",pa,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",qa,Editor.zoomFitImage);p.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";P=t.addMenu("100%",y.funct);P.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");P.style.whiteSpace="nowrap";P.style.paddingRight=
"10px";P.style.textDecoration="none";P.style.textDecoration="none";P.style.overflow="hidden";P.style.visibility="hidden";P.style.textAlign="center";P.style.cursor="pointer";P.style.height=parseInt(m.tabContainerHeight)-1+"px";P.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";P.style.position="absolute";P.style.display="block";P.style.fontSize="12px";P.style.width="59px";P.style.right="0px";P.style.bottom="0px";P.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";P.style.backgroundPosition=
"right 6px center";P.style.backgroundRepeat="no-repeat";x.appendChild(P)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML="";mxUtils.write(b,Math.round(100*m.editor.graph.view.scale)+"%")});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(P);var Da=m.setGraphEnabled;m.setGraphEnabled=function(){Da.apply(this,arguments);null!=this.tabContainer&&(P.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom=
"hidden"!=this.tabContainer.style.visibility&&null==D?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=f)&&"1"!=urlParams.embedInline&&b(this,!0);null==D&&x.appendChild(m.tabContainer);var ya=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&
@@ -4073,7 +4079,7 @@ m.actions.outlineWindow.window.fit();null!=m.actions.layersWindow&&m.actions.lay
(m.embedExitPoint=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),m.sendEmbeddedSvgExport())});l=document.createElement("div");l.style.position="absolute";l.style.width="10px";l.style.height="10px";l.style.borderRadius="5px";l.style.border="1px solid gray";l.style.background="#ffffff";l.style.cursor="row-resize";m.diagramContainer.parentNode.appendChild(l);m.bottomResizer=l;var Ea=null,va=null,Ha=null,Ca=null;mxEvent.addGestureListeners(l,function(b){Ca=parseInt(m.diagramContainer.style.height);
va=mxEvent.getClientY(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});l=l.cloneNode(!1);l.style.cursor="col-resize";m.diagramContainer.parentNode.appendChild(l);m.rightResizer=l;mxEvent.addGestureListeners(l,function(b){Ha=parseInt(m.diagramContainer.style.width);Ea=mxEvent.getClientX(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});mxEvent.addGestureListeners(document.body,null,function(b){var c=!1;null!=Ea&&(m.diagramContainer.style.width=Math.max(20,Ha+mxEvent.getClientX(b)-Ea)+"px",
c=!0);null!=va&&(m.diagramContainer.style.height=Math.max(20,Ca+mxEvent.getClientY(b)-va)+"px",c=!0);c&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:m.diagramContainer.getBoundingClientRect()}),"*"),ta(),m.refresh())},function(b){null==Ea&&null==va||mxEvent.consume(b);va=Ea=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility=
-"hidden";H.style.visibility="hidden";D.style.visibility="hidden";F.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,f,n,l,q){this.file=b;this.id=c;this.content=e;this.modifiedDate=f;this.createdDate=n;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,f,n){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,f,n){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=f;this.locale=n};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\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\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\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\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\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\npickGDriveFile=Pick 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\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;
+"hidden";H.style.visibility="hidden";D.style.visibility="hidden";F.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,f,n,l,q){this.file=b;this.id=c;this.content=e;this.modifiedDate=f;this.createdDate=n;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,f,n){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,f,n){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=f;this.locale=n};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\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\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\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\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\npickGDriveFile=Pick 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\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,c,e){this.init(b,c,e)};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,c,e){this.graphConfig=null!=e?e:{};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 e2cdeaf7..cbee20d7 100644
--- a/src/main/webapp/mxgraph/mxClient.js
+++ b/src/main/webapp/mxgraph/mxClient.js
@@ -1,4 +1,4 @@
-var mxClient={VERSION:"16.2.7",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:"16.3.0",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]"!==
@@ -25,7 +25,7 @@ unescape(c)):mxResources.resources[d]=c}}}},get:function(a,b,c){a=mxResources.re
mxRectangle.prototype.height=null;mxRectangle.prototype.setRect=function(a,b,c,d){this.x=a;this.y=b;this.width=c;this.height=d};mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2};mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2};
mxRectangle.prototype.add=function(a){if(null!=a){var b=Math.min(this.x,a.x),c=Math.min(this.y,a.y),d=Math.max(this.x+this.width,a.x+a.width);a=Math.max(this.y+this.height,a.y+a.height);this.x=b;this.y=c;this.width=d-b;this.height=a-c}};mxRectangle.prototype.intersect=function(a){if(null!=a){var b=this.x+this.width,c=a.x+a.width,d=this.y+this.height,e=a.y+a.height;this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.width=Math.min(b,c)-this.x;this.height=Math.min(d,e)-this.y}};
mxRectangle.prototype.grow=function(a){this.x-=a;this.y-=a;this.width+=2*a;this.height+=2*a;return this};mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)};mxRectangle.prototype.rotate90=function(){var a=(this.width-this.height)/2;this.x+=a;this.y-=a;a=this.width;this.width=this.height;this.height=a};mxRectangle.prototype.equals=function(a){return null!=a&&a.x==this.x&&a.y==this.y&&a.width==this.width&&a.height==this.height};
-mxRectangle.fromRectangle=function(a){return new mxRectangle(a.x,a.y,a.width,a.height)};
+mxRectangle.fromPoint=function(a){return new mxRectangle(a.x,a.y,0,0)};mxRectangle.fromRectangle=function(a){return new mxRectangle(a.x,a.y,a.width,a.height)};
var mxEffects={animateChanges:function(a,b,c){var d=0,e=function(){for(var g=!1,k=0;k<b.length;k++){var l=b[k];if(l instanceof mxGeometryChange||l instanceof mxTerminalChange||l instanceof mxValueChange||l instanceof mxChildChange||l instanceof mxStyleChange){var m=a.getView().getState(l.cell||l.child,!1);if(null!=m)if(g=!0,l.constructor!=mxGeometryChange||a.model.isEdge(l.cell))mxUtils.setOpacity(m.shape.node,100*d/10);else{var n=a.getView().scale,p=(l.geometry.x-l.previous.x)*n,q=(l.geometry.y-
l.previous.y)*n,r=(l.geometry.width-l.previous.width)*n,n=(l.geometry.height-l.previous.height)*n;0==d?(m.x-=p,m.y-=q,m.width-=r,m.height-=n):(m.x+=p/10,m.y+=q/10,m.width+=r/10,m.height+=n/10);a.cellRenderer.redraw(m);mxEffects.cascadeOpacity(a,l.cell,100*d/10)}}}10>d&&g?(d++,window.setTimeout(e,f)):null!=c&&c()},f=30;e()},cascadeOpacity:function(a,b,c){for(var d=a.model.getChildCount(b),e=0;e<d;e++){var f=a.model.getChildAt(b,e),g=a.getView().getState(f);null!=g&&(mxUtils.setOpacity(g.shape.node,
c),mxEffects.cascadeOpacity(a,f,c))}b=a.model.getEdges(b);if(null!=b)for(e=0;e<b.length;e++)d=a.getView().getState(b[e]),null!=d&&mxUtils.setOpacity(d.shape.node,c)},fadeOut:function(a,b,c,d,e,f){d=d||40;e=e||30;var g=b||100;mxUtils.setOpacity(a,g);if(f||null==f){var k=function(){g=Math.max(g-d,0);mxUtils.setOpacity(a,g);0<g?window.setTimeout(k,e):(a.style.visibility="hidden",c&&a.parentNode&&a.parentNode.removeChild(a))};window.setTimeout(k,e)}else a.style.visibility="hidden",c&&a.parentNode&&a.parentNode.removeChild(a)}},
diff --git a/src/main/webapp/plugins/replay.js b/src/main/webapp/plugins/replay.js
index f66adb29..01da92d4 100644
--- a/src/main/webapp/plugins/replay.js
+++ b/src/main/webapp/plugins/replay.js
@@ -264,8 +264,6 @@ Draw.loadPlugin(function(ui) {
}
});
- dlg.textarea.style.width = '600px';
- dlg.textarea.style.height = '380px';
ui.showDialog(dlg.container, 620, 460, true, true);
dlg.init();
});
diff --git a/src/main/webapp/resources/dia.txt b/src/main/webapp/resources/dia.txt
index b067c654..bdf1e977 100644
--- a/src/main/webapp/resources/dia.txt
+++ b/src/main/webapp/resources/dia.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_am.txt b/src/main/webapp/resources/dia_am.txt
index b5f760ba..8123e188 100644
--- a/src/main/webapp/resources/dia_am.txt
+++ b/src/main/webapp/resources/dia_am.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_ar.txt b/src/main/webapp/resources/dia_ar.txt
index 6efd1a17..d8e1f39d 100644
--- a/src/main/webapp/resources/dia_ar.txt
+++ b/src/main/webapp/resources/dia_ar.txt
@@ -699,6 +699,7 @@ simpleArrow=‫سهم بسيط‬
simpleViewer=Simple Viewer
size=‫حجم‬
sketch=Sketch
+snapToGrid=Snap to Grid
solid=‫موحد‬
sourceSpacing=‫تباعد المصدر‬
south=‫جنوب‬
diff --git a/src/main/webapp/resources/dia_bg.txt b/src/main/webapp/resources/dia_bg.txt
index 2926c6a6..f15ca17c 100644
--- a/src/main/webapp/resources/dia_bg.txt
+++ b/src/main/webapp/resources/dia_bg.txt
@@ -699,6 +699,7 @@ simpleArrow=Проста стрелка
simpleViewer=Прост вюър
size=Размер
sketch=Скица
+snapToGrid=Snap to Grid
solid=Плътна
sourceSpacing=Разстояние между точките
south=Юг
diff --git a/src/main/webapp/resources/dia_bn.txt b/src/main/webapp/resources/dia_bn.txt
index 9cb54ca0..9d4fc158 100644
--- a/src/main/webapp/resources/dia_bn.txt
+++ b/src/main/webapp/resources/dia_bn.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_bs.txt b/src/main/webapp/resources/dia_bs.txt
index ab373d7d..a3a23e80 100644
--- a/src/main/webapp/resources/dia_bs.txt
+++ b/src/main/webapp/resources/dia_bs.txt
@@ -699,6 +699,7 @@ simpleArrow=Jednostavna strijelica
simpleViewer=Simple Viewer
size=Veličina
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Čvrsto
sourceSpacing=Prored izvora
south=Jug
diff --git a/src/main/webapp/resources/dia_ca.txt b/src/main/webapp/resources/dia_ca.txt
index db497865..db2e7024 100644
--- a/src/main/webapp/resources/dia_ca.txt
+++ b/src/main/webapp/resources/dia_ca.txt
@@ -699,6 +699,7 @@ simpleArrow=Fletxa simple
simpleViewer=Visualitzador simple
size=Mida
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Continu
sourceSpacing=Espaiat original
south=Sud
diff --git a/src/main/webapp/resources/dia_cs.txt b/src/main/webapp/resources/dia_cs.txt
index 25d0c388..de43e2b4 100644
--- a/src/main/webapp/resources/dia_cs.txt
+++ b/src/main/webapp/resources/dia_cs.txt
@@ -699,6 +699,7 @@ simpleArrow=Jednoduchá šipka
simpleViewer=Jednoduchý prohlížeč
size=Velikost
sketch=Nákres
+snapToGrid=Snap to Grid
solid=Plná
sourceSpacing=Odsazení zdroje
south=Jih
diff --git a/src/main/webapp/resources/dia_da.txt b/src/main/webapp/resources/dia_da.txt
index cb8efea4..9a53d735 100644
--- a/src/main/webapp/resources/dia_da.txt
+++ b/src/main/webapp/resources/dia_da.txt
@@ -138,7 +138,7 @@ compress=Komprimieren
configuration=Konfiguration
connect=Tilslut
connecting=Tilslutter
-connectWithDrive=Tilslut Google Drev
+connectWithDrive=Tilslut Google Drive
connection=Forbindelse
connectionArrows=Forbindelsespile
connectionPoints=Forbindelsespunkter
@@ -699,6 +699,7 @@ simpleArrow=Simpel pil
simpleViewer=Simple Viewer
size=Størrelse
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Fast
sourceSpacing=Kildeafstand
south=Syd
diff --git a/src/main/webapp/resources/dia_de.txt b/src/main/webapp/resources/dia_de.txt
index d26d9ea7..77d5bcf9 100644
--- a/src/main/webapp/resources/dia_de.txt
+++ b/src/main/webapp/resources/dia_de.txt
@@ -134,8 +134,8 @@ collapsible=Einklappbar
comic=Comic
comment=Kommentar
commentsNotes=Kommentare/Notizen
-compress=Compress
-configuration=Configuration
+compress=Komprimieren
+configuration=Konfiguration
connect=Verbinden
connecting=Verbindungsaufbau
connectWithDrive=Mit Google Drive verbinden
@@ -699,6 +699,7 @@ simpleArrow=Einfacher Pfeil
simpleViewer=Einfacher Viewer
size=Größe
sketch=Skizze
+snapToGrid=Am Raster ausrichten
solid=Durchgehend
sourceSpacing=Anfangsabstand
south=Süd
diff --git a/src/main/webapp/resources/dia_el.txt b/src/main/webapp/resources/dia_el.txt
index 9ab84e82..793571c8 100644
--- a/src/main/webapp/resources/dia_el.txt
+++ b/src/main/webapp/resources/dia_el.txt
@@ -699,6 +699,7 @@ simpleArrow=Απλό βέλος
simpleViewer=Απλή Προβολή
size=Μέγεθος
sketch=Σχέδιο
+snapToGrid=Snap to Grid
solid=Συμπαγές
sourceSpacing=Απόσταση Πηγής
south=Νότια
diff --git a/src/main/webapp/resources/dia_eo.txt b/src/main/webapp/resources/dia_eo.txt
index 5525f95b..59b97483 100644
--- a/src/main/webapp/resources/dia_eo.txt
+++ b/src/main/webapp/resources/dia_eo.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_es.txt b/src/main/webapp/resources/dia_es.txt
index 7174307f..62228ce8 100644
--- a/src/main/webapp/resources/dia_es.txt
+++ b/src/main/webapp/resources/dia_es.txt
@@ -699,6 +699,7 @@ simpleArrow=Flecha simple
simpleViewer=Vista Simple
size=Tamaño
sketch=Bosquejo
+snapToGrid=Snap to Grid
solid=Sólida
sourceSpacing=Espaciado entre fuentes
south=Sur
diff --git a/src/main/webapp/resources/dia_et.txt b/src/main/webapp/resources/dia_et.txt
index b4af3319..f420c6a9 100644
--- a/src/main/webapp/resources/dia_et.txt
+++ b/src/main/webapp/resources/dia_et.txt
@@ -699,6 +699,7 @@ simpleArrow=Lihtne nool
simpleViewer=Lihtne vaade
size=Suurus
sketch=Sketš
+snapToGrid=Snap to Grid
solid=Katkematu
sourceSpacing=Allika vahekaugus
south=Lõuna
diff --git a/src/main/webapp/resources/dia_eu.txt b/src/main/webapp/resources/dia_eu.txt
index 08f07903..05387b0b 100644
--- a/src/main/webapp/resources/dia_eu.txt
+++ b/src/main/webapp/resources/dia_eu.txt
@@ -699,6 +699,7 @@ simpleArrow=Gezi arrunta
simpleViewer=Ikustaile arrunta
size=Tamaina
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solidoa
sourceSpacing=Letren arteko tartea
south=Hegoaldea
diff --git a/src/main/webapp/resources/dia_fa.txt b/src/main/webapp/resources/dia_fa.txt
index 0daf829a..3d241f71 100644
--- a/src/main/webapp/resources/dia_fa.txt
+++ b/src/main/webapp/resources/dia_fa.txt
@@ -699,6 +699,7 @@ simpleArrow=‫فلش ساده‬
simpleViewer=Simple Viewer
size=‫اندازه‬
sketch=Sketch
+snapToGrid=Snap to Grid
solid=‫ممتد‬
sourceSpacing=‫فاصله بندی منبع‬
south=‫جنوب‬
diff --git a/src/main/webapp/resources/dia_fi.txt b/src/main/webapp/resources/dia_fi.txt
index 4cd14e42..3f2376ff 100644
--- a/src/main/webapp/resources/dia_fi.txt
+++ b/src/main/webapp/resources/dia_fi.txt
@@ -699,6 +699,7 @@ simpleArrow=Yksinkertainen nuoli
simpleViewer=Yksinkertainen katseluohjelma
size=Koko
sketch=Piirros
+snapToGrid=Snap to Grid
solid=Yhtenäinen
sourceSpacing=Lähteen väli
south=Etelä
diff --git a/src/main/webapp/resources/dia_fil.txt b/src/main/webapp/resources/dia_fil.txt
index 15cbb88e..2f1c6fe3 100644
--- a/src/main/webapp/resources/dia_fil.txt
+++ b/src/main/webapp/resources/dia_fil.txt
@@ -699,6 +699,7 @@ simpleArrow=Simpleng panuro
simpleViewer=Simple Viewer
size=Sukat
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solido
sourceSpacing=Pag-eespasyo ng Pinagmulan
south=Timog
diff --git a/src/main/webapp/resources/dia_fr.txt b/src/main/webapp/resources/dia_fr.txt
index 84325377..f42c7f0f 100644
--- a/src/main/webapp/resources/dia_fr.txt
+++ b/src/main/webapp/resources/dia_fr.txt
@@ -699,6 +699,7 @@ simpleArrow=Flèche simple
simpleViewer=Affichage simple
size=Taille
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Uni
sourceSpacing=Espacement de la source
south=Sud
diff --git a/src/main/webapp/resources/dia_gl.txt b/src/main/webapp/resources/dia_gl.txt
index bf92f61e..a5231525 100644
--- a/src/main/webapp/resources/dia_gl.txt
+++ b/src/main/webapp/resources/dia_gl.txt
@@ -699,6 +699,7 @@ simpleArrow=Frecha Simple
simpleViewer=Visualizador Simple
size=Tamaño
sketch=Borrador
+snapToGrid=Snap to Grid
solid=Sólido
sourceSpacing=Espazamento da Fonte
south=Sul
diff --git a/src/main/webapp/resources/dia_gu.txt b/src/main/webapp/resources/dia_gu.txt
index 95dca819..a8da719e 100644
--- a/src/main/webapp/resources/dia_gu.txt
+++ b/src/main/webapp/resources/dia_gu.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_he.txt b/src/main/webapp/resources/dia_he.txt
index 40225c4c..64351733 100644
--- a/src/main/webapp/resources/dia_he.txt
+++ b/src/main/webapp/resources/dia_he.txt
@@ -699,6 +699,7 @@ simpleArrow=‫חץ פשוט‬
simpleViewer=Simple Viewer
size=‫גודל‬
sketch=Sketch
+snapToGrid=Snap to Grid
solid=‫מוצק‬
sourceSpacing=‫מרווח מקור‬
south=‫דרום‬
diff --git a/src/main/webapp/resources/dia_hi.txt b/src/main/webapp/resources/dia_hi.txt
index 4207b3ec..fa3b7105 100644
--- a/src/main/webapp/resources/dia_hi.txt
+++ b/src/main/webapp/resources/dia_hi.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_hr.txt b/src/main/webapp/resources/dia_hr.txt
index 5ecf3740..e2c9bb7c 100644
--- a/src/main/webapp/resources/dia_hr.txt
+++ b/src/main/webapp/resources/dia_hr.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_hu.txt b/src/main/webapp/resources/dia_hu.txt
index 722c71a8..4b07e194 100644
--- a/src/main/webapp/resources/dia_hu.txt
+++ b/src/main/webapp/resources/dia_hu.txt
@@ -699,6 +699,7 @@ simpleArrow=Egyszerű nyíl
simpleViewer=Simple Viewer
size=Méret
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Folytonos
sourceSpacing=Forrás térköz
south=Dél
diff --git a/src/main/webapp/resources/dia_i18n.txt b/src/main/webapp/resources/dia_i18n.txt
index 50117c65..38a345c3 100644
--- a/src/main/webapp/resources/dia_i18n.txt
+++ b/src/main/webapp/resources/dia_i18n.txt
@@ -699,6 +699,7 @@ simpleArrow=simpleArrow
simpleViewer=simpleViewer
size=size
sketch=sketch
+snapToGrid=snapToGrid
solid=solid
sourceSpacing=sourceSpacing
south=south
diff --git a/src/main/webapp/resources/dia_id.txt b/src/main/webapp/resources/dia_id.txt
index 4e9793e0..e194b88b 100644
--- a/src/main/webapp/resources/dia_id.txt
+++ b/src/main/webapp/resources/dia_id.txt
@@ -699,6 +699,7 @@ simpleArrow=Panah Sederhana
simpleViewer=Simple Viewer
size=Ukuran
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Padat
sourceSpacing=Spasi Sumber
south=Selatan
diff --git a/src/main/webapp/resources/dia_it.txt b/src/main/webapp/resources/dia_it.txt
index 3d08d9ba..d56cf20c 100644
--- a/src/main/webapp/resources/dia_it.txt
+++ b/src/main/webapp/resources/dia_it.txt
@@ -699,6 +699,7 @@ simpleArrow=Freccia semplice
simpleViewer=Visualizzatore semplice
size=Dim.
sketch=Schizzo
+snapToGrid=Snap to Grid
solid=Solido
sourceSpacing=Spaziatura dell'origine
south=Sud
diff --git a/src/main/webapp/resources/dia_ja.txt b/src/main/webapp/resources/dia_ja.txt
index 782cb08e..9bc92996 100644
--- a/src/main/webapp/resources/dia_ja.txt
+++ b/src/main/webapp/resources/dia_ja.txt
@@ -699,6 +699,7 @@ simpleArrow=シンプルな矢印
simpleViewer=Simple Viewer
size=サイズ
sketch=スケッチ
+snapToGrid=Snap to Grid
solid=実線
sourceSpacing=始点の間隔
south=下
diff --git a/src/main/webapp/resources/dia_kn.txt b/src/main/webapp/resources/dia_kn.txt
index f7146d10..0de2cd8a 100644
--- a/src/main/webapp/resources/dia_kn.txt
+++ b/src/main/webapp/resources/dia_kn.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_ko.txt b/src/main/webapp/resources/dia_ko.txt
index 9319c56e..25e5e87f 100644
--- a/src/main/webapp/resources/dia_ko.txt
+++ b/src/main/webapp/resources/dia_ko.txt
@@ -699,6 +699,7 @@ simpleArrow=단순 화살표
simpleViewer=단순 뷰어
size=크기
sketch=스케치
+snapToGrid=Snap to Grid
solid=실선
sourceSpacing=소스 간격
south=하단
diff --git a/src/main/webapp/resources/dia_lt.txt b/src/main/webapp/resources/dia_lt.txt
index 81315d5d..24f8ca3c 100644
--- a/src/main/webapp/resources/dia_lt.txt
+++ b/src/main/webapp/resources/dia_lt.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_lv.txt b/src/main/webapp/resources/dia_lv.txt
index c2e7f870..4be6018f 100644
--- a/src/main/webapp/resources/dia_lv.txt
+++ b/src/main/webapp/resources/dia_lv.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_ml.txt b/src/main/webapp/resources/dia_ml.txt
index b85a7c9b..26fd5fc8 100644
--- a/src/main/webapp/resources/dia_ml.txt
+++ b/src/main/webapp/resources/dia_ml.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_mr.txt b/src/main/webapp/resources/dia_mr.txt
index 74bf99fc..34523d78 100644
--- a/src/main/webapp/resources/dia_mr.txt
+++ b/src/main/webapp/resources/dia_mr.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_ms.txt b/src/main/webapp/resources/dia_ms.txt
index 12271c29..404500fe 100644
--- a/src/main/webapp/resources/dia_ms.txt
+++ b/src/main/webapp/resources/dia_ms.txt
@@ -699,6 +699,7 @@ simpleArrow=Anak Panah Ringkas
simpleViewer=Simple Viewer
size=Saiz
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Padat
sourceSpacing=Jarak Sumber
south=Selatan
diff --git a/src/main/webapp/resources/dia_my.txt b/src/main/webapp/resources/dia_my.txt
index b067c654..bdf1e977 100644
--- a/src/main/webapp/resources/dia_my.txt
+++ b/src/main/webapp/resources/dia_my.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_nl.txt b/src/main/webapp/resources/dia_nl.txt
index 7bb32cca..c38d613a 100644
--- a/src/main/webapp/resources/dia_nl.txt
+++ b/src/main/webapp/resources/dia_nl.txt
@@ -699,6 +699,7 @@ simpleArrow=Eenvoudige pijl
simpleViewer=Eenvoudige weergave
size=Grootte
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Massief
sourceSpacing=Bronafstand
south=Onder
diff --git a/src/main/webapp/resources/dia_no.txt b/src/main/webapp/resources/dia_no.txt
index 8e22b51f..0ca79ce8 100644
--- a/src/main/webapp/resources/dia_no.txt
+++ b/src/main/webapp/resources/dia_no.txt
@@ -699,6 +699,7 @@ simpleArrow=Enkel pil
simpleViewer=Simple Viewer
size=Størrelse
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Kildeavstand
south=Sør
diff --git a/src/main/webapp/resources/dia_pl.txt b/src/main/webapp/resources/dia_pl.txt
index dd617c28..4a2595d4 100644
--- a/src/main/webapp/resources/dia_pl.txt
+++ b/src/main/webapp/resources/dia_pl.txt
@@ -699,6 +699,7 @@ simpleArrow=Prosta strzałka
simpleViewer=Simple Viewer
size=Rozmiar
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Ciągła
sourceSpacing=Rozmieszczenie źródła
south=Południe
diff --git a/src/main/webapp/resources/dia_pt-br.txt b/src/main/webapp/resources/dia_pt-br.txt
index 527f4898..94cf466e 100644
--- a/src/main/webapp/resources/dia_pt-br.txt
+++ b/src/main/webapp/resources/dia_pt-br.txt
@@ -699,6 +699,7 @@ simpleArrow=Seta simples
simpleViewer=Visualizador simples
size=Tamanho
sketch=Esboço
+snapToGrid=Snap to Grid
solid=Sólido
sourceSpacing=Espaçamento entre fontes
south=Inferior
diff --git a/src/main/webapp/resources/dia_pt.txt b/src/main/webapp/resources/dia_pt.txt
index 893eea29..797d13d5 100644
--- a/src/main/webapp/resources/dia_pt.txt
+++ b/src/main/webapp/resources/dia_pt.txt
@@ -699,6 +699,7 @@ simpleArrow=Seta simples
simpleViewer=Simple Viewer
size=Tamanho
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Sólido
sourceSpacing=Espaçamento entre fontes
south=Sul
diff --git a/src/main/webapp/resources/dia_ro.txt b/src/main/webapp/resources/dia_ro.txt
index 49de2ce1..5a913263 100644
--- a/src/main/webapp/resources/dia_ro.txt
+++ b/src/main/webapp/resources/dia_ro.txt
@@ -699,6 +699,7 @@ simpleArrow=Săgeată simplă
simpleViewer=Simple Viewer
size=Dimensiune
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Spațierea sursei
south=Sud
diff --git a/src/main/webapp/resources/dia_ru.txt b/src/main/webapp/resources/dia_ru.txt
index 0e9ded22..ede2091a 100644
--- a/src/main/webapp/resources/dia_ru.txt
+++ b/src/main/webapp/resources/dia_ru.txt
@@ -699,6 +699,7 @@ simpleArrow=Простая стрелка
simpleViewer=Простой просмотрщик
size=Размер
sketch=Набросок
+snapToGrid=Snap to Grid
solid=Сплошная
sourceSpacing=Расстояние между источниками
south=Юг
diff --git a/src/main/webapp/resources/dia_si.txt b/src/main/webapp/resources/dia_si.txt
index b067c654..bdf1e977 100644
--- a/src/main/webapp/resources/dia_si.txt
+++ b/src/main/webapp/resources/dia_si.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_sk.txt b/src/main/webapp/resources/dia_sk.txt
index 3ddf2f1c..80e4d1be 100644
--- a/src/main/webapp/resources/dia_sk.txt
+++ b/src/main/webapp/resources/dia_sk.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_sl.txt b/src/main/webapp/resources/dia_sl.txt
index 8420399a..b3143ad9 100644
--- a/src/main/webapp/resources/dia_sl.txt
+++ b/src/main/webapp/resources/dia_sl.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_sr.txt b/src/main/webapp/resources/dia_sr.txt
index 65636426..ede2eb3c 100644
--- a/src/main/webapp/resources/dia_sr.txt
+++ b/src/main/webapp/resources/dia_sr.txt
@@ -699,6 +699,7 @@ simpleArrow=Jednostavna strelica
simpleViewer=Simple Viewer
size=Veličina
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Puna linija
sourceSpacing=Proređivanje izvora
south=Jug
diff --git a/src/main/webapp/resources/dia_sv.txt b/src/main/webapp/resources/dia_sv.txt
index 4123b8fb..b56a1b1c 100644
--- a/src/main/webapp/resources/dia_sv.txt
+++ b/src/main/webapp/resources/dia_sv.txt
@@ -699,6 +699,7 @@ simpleArrow=Enkel pil
simpleViewer=Simple Viewer
size=Storlek
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Källavstånd
south=Söder
diff --git a/src/main/webapp/resources/dia_sw.txt b/src/main/webapp/resources/dia_sw.txt
index 501dd002..09d8b671 100644
--- a/src/main/webapp/resources/dia_sw.txt
+++ b/src/main/webapp/resources/dia_sw.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_ta.txt b/src/main/webapp/resources/dia_ta.txt
index 69a8acce..49a915ac 100644
--- a/src/main/webapp/resources/dia_ta.txt
+++ b/src/main/webapp/resources/dia_ta.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_te.txt b/src/main/webapp/resources/dia_te.txt
index 706806ce..1971efa8 100644
--- a/src/main/webapp/resources/dia_te.txt
+++ b/src/main/webapp/resources/dia_te.txt
@@ -699,6 +699,7 @@ simpleArrow=Simple Arrow
simpleViewer=Simple Viewer
size=Size
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Solid
sourceSpacing=Source Spacing
south=South
diff --git a/src/main/webapp/resources/dia_th.txt b/src/main/webapp/resources/dia_th.txt
index a3bec892..f23374e4 100644
--- a/src/main/webapp/resources/dia_th.txt
+++ b/src/main/webapp/resources/dia_th.txt
@@ -699,6 +699,7 @@ simpleArrow=ลูกศรอย่างง่าย
simpleViewer=Simple Viewer
size=ขนาด
sketch=Sketch
+snapToGrid=Snap to Grid
solid=แข็ง
sourceSpacing=เว้นวรรคแหล่งข้อมูล
south=ทิศใต้
diff --git a/src/main/webapp/resources/dia_tr.txt b/src/main/webapp/resources/dia_tr.txt
index 757da39f..b1becf34 100644
--- a/src/main/webapp/resources/dia_tr.txt
+++ b/src/main/webapp/resources/dia_tr.txt
@@ -699,6 +699,7 @@ simpleArrow=Basit ok
simpleViewer=Simple Viewer
size=Boyut
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Katı
sourceSpacing=Kaynak boşluğu
south=Güney
diff --git a/src/main/webapp/resources/dia_uk.txt b/src/main/webapp/resources/dia_uk.txt
index f7c6d1cd..c8869f9c 100644
--- a/src/main/webapp/resources/dia_uk.txt
+++ b/src/main/webapp/resources/dia_uk.txt
@@ -699,6 +699,7 @@ simpleArrow=Звичайна стрілка
simpleViewer=Simple Viewer
size=Розмір
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Суцільний
sourceSpacing=Від початкового вузла
south=Південь
diff --git a/src/main/webapp/resources/dia_vi.txt b/src/main/webapp/resources/dia_vi.txt
index c1324dd6..5dfc3554 100644
--- a/src/main/webapp/resources/dia_vi.txt
+++ b/src/main/webapp/resources/dia_vi.txt
@@ -699,6 +699,7 @@ simpleArrow=Mũi tên đơn giản
simpleViewer=Simple Viewer
size=Kích thước
sketch=Sketch
+snapToGrid=Snap to Grid
solid=Đường liền nét
sourceSpacing=Khoảng cách nguồn
south=Hướng Nam
diff --git a/src/main/webapp/resources/dia_zh-tw.txt b/src/main/webapp/resources/dia_zh-tw.txt
index 57ce1cee..f7aff940 100644
--- a/src/main/webapp/resources/dia_zh-tw.txt
+++ b/src/main/webapp/resources/dia_zh-tw.txt
@@ -699,6 +699,7 @@ simpleArrow=簡單箭頭
simpleViewer=Simple Viewer
size=大小
sketch=Sketch
+snapToGrid=Snap to Grid
solid=實線
sourceSpacing=來源間距
south=向下漸層
diff --git a/src/main/webapp/resources/dia_zh.txt b/src/main/webapp/resources/dia_zh.txt
index 50a9a8fd..85b5fa4c 100644
--- a/src/main/webapp/resources/dia_zh.txt
+++ b/src/main/webapp/resources/dia_zh.txt
@@ -699,6 +699,7 @@ simpleArrow=简单箭头
simpleViewer=Simple Viewer
size=大小
sketch=Sketch
+snapToGrid=Snap to Grid
solid=实线
sourceSpacing=源距
south=向下
diff --git a/src/main/webapp/service-worker.js b/src/main/webapp/service-worker.js
index 769ba311..4ea9b596 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-12cca165"],(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:"a4cb11fba88e898c56453f748593fcc5"},{url:"js/extensions.min.js",revision:"5f96202f6da7fac09289ee6738d036b9"},{url:"js/stencils.min.js",revision:"7a7bde0d8b6615eee4ebd215d2b9d761"},{url:"js/shapes-14-6-5.min.js",revision:"ebce9c260798e9465fa3c3e3c1607d43"},{url:"js/math-print.js",revision:"9d98c920695f6c3395da4b68f723e60a"},{url:"index.html",revision:"22181f53eb2ba790e681cec8e223218d"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/grapheditor.css",revision:"748da0cd0a068a52eac70ee2b2c194fe"},{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:"ae545c6853fbf09f3be6922bf738b41c"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"2ce6e99d95113e9ca6b24343cea202e0"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"6e9412c359a21b86dc7c5128bf6208d4"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"197ed5837ed27992688fc424699a9a78"},{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:"d7577d8f21716423852c343f027c4c27"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"48769b97cbeb80d0d3fba95360c9c562"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"887d3ac605a7bb297067537e7c1f5686"},{url:"connect/confluence/viewer-init.js",revision:"4a60c6c805cab7bc782f1e52f7818d9f"},{url:"connect/confluence/viewer.js",revision:"d025b0929817299fa154f273525aa0ec"},{url:"connect/confluence/viewer-1-4-42.html",revision:"c7b38b3af4eb7a58ab6dc4791216530e"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"8b670f4b6ccde55358851da705ae884f"},{url:"connect/confluence/includeDiagram.html",revision:"c03c89622d22227313645900af4e3c3d"},{url:"connect/confluence/macro-editor.js",revision:"e273a48b8e81faac4530bf1a68d75aa0"},{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:"feb632c54782848185348b7fa1153631"},{url:"resources/dia_am.txt",revision:"cb75e7bb8952ebbb6a58a0ece489e667"},{url:"resources/dia_ar.txt",revision:"23b68ccb86f6ef96d3a45c50e6cde1c4"},{url:"resources/dia_bg.txt",revision:"bba48ccb2e9f44353b8d11a789677233"},{url:"resources/dia_bn.txt",revision:"a2c00c91c1d0dcbe8ffe6efeb2a95f0d"},{url:"resources/dia_bs.txt",revision:"7183325eb4896520d6be35db34c09abb"},{url:"resources/dia_ca.txt",revision:"89999c48e0db94080a353d6fc7813e3a"},{url:"resources/dia_cs.txt",revision:"2524e0293a413f2027a3db4b2cda05c6"},{url:"resources/dia_da.txt",revision:"a8c6a389a43da0c664cfd448b4a81b7f"},{url:"resources/dia_de.txt",revision:"cb9b317574f324767182f9e35f81e21d"},{url:"resources/dia_el.txt",revision:"ad8bbf099846ea27a80d493746700456"},{url:"resources/dia_eo.txt",revision:"e57110b06db593712c09117989332393"},{url:"resources/dia_es.txt",revision:"4d2d41c29e604629af780570eeaf0ab2"},{url:"resources/dia_et.txt",revision:"eca67de67124d14091f1079eff6e8e4c"},{url:"resources/dia_eu.txt",revision:"a5b010e921bd73761fc1d17fa94f5f0d"},{url:"resources/dia_fa.txt",revision:"738b00f092cc61234cce3841308e586b"},{url:"resources/dia_fi.txt",revision:"ca8468da267715754aa2810e2d78e1e5"},{url:"resources/dia_fil.txt",revision:"46cc99f370fddf2129b3ec58db42e0ac"},{url:"resources/dia_fr.txt",revision:"8587e5bae3ba4977a2e6af762843b6d2"},{url:"resources/dia_gl.txt",revision:"e39570fe01988a96434988cf0c49314d"},{url:"resources/dia_gu.txt",revision:"cb6ccccf80e45341f313214e4c2686be"},{url:"resources/dia_he.txt",revision:"8b9e9440027551afbc94360d080e9ab7"},{url:"resources/dia_hi.txt",revision:"28132d39b2617b00e789d8afc5dd58d8"},{url:"resources/dia_hr.txt",revision:"38b9c0a90952cb7919e5c40181612cf7"},{url:"resources/dia_hu.txt",revision:"43e9be1d6d95dfa244fbb81fe831849b"},{url:"resources/dia_id.txt",revision:"c85b72b144ab4d8cc026b7c40c546a53"},{url:"resources/dia_it.txt",revision:"6b34056976d4e4c0a06cc67d30ffc02b"},{url:"resources/dia_ja.txt",revision:"fa736409b2a16f179aae6111cf8950f3"},{url:"resources/dia_kn.txt",revision:"4c3a9da2bb845cbb81bfa835887e9315"},{url:"resources/dia_ko.txt",revision:"5078f42ffa0dfa4958082e26521f97ed"},{url:"resources/dia_lt.txt",revision:"41ddb5aebd7ac1fb49e0ec69ed42b1ec"},{url:"resources/dia_lv.txt",revision:"fca5f968f6dd7faefb39f5cb4fe6b7f9"},{url:"resources/dia_ml.txt",revision:"2137c2e9c1847b9c4d5d0662c7bfb95e"},{url:"resources/dia_mr.txt",revision:"608ea3214e92bfd25794fc6524757d36"},{url:"resources/dia_ms.txt",revision:"aa17d12476584931725fd6109de1e159"},{url:"resources/dia_my.txt",revision:"feb632c54782848185348b7fa1153631"},{url:"resources/dia_nl.txt",revision:"07f0c0e348f0a00ec184ba0c8755d449"},{url:"resources/dia_no.txt",revision:"97f3043136f3325c491beaa5a35542db"},{url:"resources/dia_pl.txt",revision:"f38c0ee4bc52cf12491ea2b393268a9e"},{url:"resources/dia_pt-br.txt",revision:"f40082d15b65d2c784a33c23a6d93172"},{url:"resources/dia_pt.txt",revision:"caa24276da744fa5ba4c3a0fb138133f"},{url:"resources/dia_ro.txt",revision:"ef2e6b54289e062d3c3c7ebe3d05c2da"},{url:"resources/dia_ru.txt",revision:"4ab1946d835d597e4461d78b0dc6927a"},{url:"resources/dia_si.txt",revision:"feb632c54782848185348b7fa1153631"},{url:"resources/dia_sk.txt",revision:"dd67d924dc467c9931a3786e5b35c87e"},{url:"resources/dia_sl.txt",revision:"889ea1f2bc66dbf66e34389a48e51b09"},{url:"resources/dia_sr.txt",revision:"2fdc68d1f540a9c0656b329f3503eff5"},{url:"resources/dia_sv.txt",revision:"0ff76ddd1d7ed8cbfd833fe3239783f9"},{url:"resources/dia_sw.txt",revision:"7c2602f72bcf5659de2149d4b02aca5b"},{url:"resources/dia_ta.txt",revision:"c6554dfe7532240b715fbeca829b16d1"},{url:"resources/dia_te.txt",revision:"672c57a129447b4cbb13b8ffc8464f3e"},{url:"resources/dia_th.txt",revision:"b65d5a0d65ed532885266b43e31e3b8b"},{url:"resources/dia_tr.txt",revision:"06cd9bb27de206821bd38c5bb071bb2e"},{url:"resources/dia_uk.txt",revision:"ae34ec923eb377ff1f6492283865236c"},{url:"resources/dia_vi.txt",revision:"126f8324a4913178e46c6377f967e48e"},{url:"resources/dia_zh-tw.txt",revision:"4f20f0ae20afecc1446aff90caa2a9bc"},{url:"resources/dia_zh.txt",revision:"e9ac1a1a7246f453a64a6ed05713ba12"},{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 a=Promise.resolve();return i[e]||(a=new Promise((async a=>{if("document"in self){const i=document.createElement("script");i.src=e,document.head.appendChild(i),i.onload=a}else importScripts(e),a()}))),a.then((()=>{if(!i[e])throw new Error(`Module ${e} didn’t register its module`);return i[e]}))},a=(a,i)=>{Promise.all(a.map(e)).then((e=>i(1===e.length?e[0]:e)))},i={require:Promise.resolve(a)};self.define=(a,r,c)=>{i[a]||(i[a]=Promise.resolve().then((()=>{let i={};const s={uri:location.origin+a.slice(1)};return Promise.all(r.map((a=>{switch(a){case"exports":return i;case"module":return s;default:return e(a)}}))).then((e=>{const a=c(...e);return i.default||(i.default=a),i}))})))}}define("./service-worker.js",["./workbox-12cca165"],(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:"3b9b84d1d22d2c7dc983240416f5be66"},{url:"js/extensions.min.js",revision:"5f96202f6da7fac09289ee6738d036b9"},{url:"js/stencils.min.js",revision:"7a7bde0d8b6615eee4ebd215d2b9d761"},{url:"js/shapes-14-6-5.min.js",revision:"ebce9c260798e9465fa3c3e3c1607d43"},{url:"js/math-print.js",revision:"9d98c920695f6c3395da4b68f723e60a"},{url:"index.html",revision:"22181f53eb2ba790e681cec8e223218d"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/grapheditor.css",revision:"748da0cd0a068a52eac70ee2b2c194fe"},{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:"f5bdd5454969b23f2cde11fde44e816b"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"2ce6e99d95113e9ca6b24343cea202e0"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"6e9412c359a21b86dc7c5128bf6208d4"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"197ed5837ed27992688fc424699a9a78"},{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:"d7577d8f21716423852c343f027c4c27"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"48769b97cbeb80d0d3fba95360c9c562"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"887d3ac605a7bb297067537e7c1f5686"},{url:"connect/confluence/viewer-init.js",revision:"4a60c6c805cab7bc782f1e52f7818d9f"},{url:"connect/confluence/viewer.js",revision:"d025b0929817299fa154f273525aa0ec"},{url:"connect/confluence/viewer-1-4-42.html",revision:"c7b38b3af4eb7a58ab6dc4791216530e"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"8b670f4b6ccde55358851da705ae884f"},{url:"connect/confluence/includeDiagram.html",revision:"c03c89622d22227313645900af4e3c3d"},{url:"connect/confluence/macro-editor.js",revision:"e273a48b8e81faac4530bf1a68d75aa0"},{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:"a53fbd174fa9a7cb3abe428159220180"},{url:"resources/dia_am.txt",revision:"43998387f2d637edd05e4c4ea7b4c5d3"},{url:"resources/dia_ar.txt",revision:"dfde36dbcb913f189f19d69eded24559"},{url:"resources/dia_bg.txt",revision:"8981a78bd3c6157caab5d194da17dfdf"},{url:"resources/dia_bn.txt",revision:"2d6113ca611ef620ae42f458de5dcb4f"},{url:"resources/dia_bs.txt",revision:"ee8778b85908425effc9077d65e4f010"},{url:"resources/dia_ca.txt",revision:"a7a5bb433d9aa7b7833ab4f0a8afce9a"},{url:"resources/dia_cs.txt",revision:"9da1a91118ec21ea1fa3df841cc6f149"},{url:"resources/dia_da.txt",revision:"784bc9aa31f0d56c28563f6ecc200ff8"},{url:"resources/dia_de.txt",revision:"1340debe72dc915a1bbc03cfc6130a85"},{url:"resources/dia_el.txt",revision:"82ad33e3acd59514ce876edae68d9e3a"},{url:"resources/dia_eo.txt",revision:"cdb49c5f3ec03ceab435f13e9c410620"},{url:"resources/dia_es.txt",revision:"c745f1c15c0a07339c9b3b4757ba7571"},{url:"resources/dia_et.txt",revision:"91460a4a63cde29e9e6c72f1ae77a80f"},{url:"resources/dia_eu.txt",revision:"d1f7ab93a8e26af2ccc285a26a8690b5"},{url:"resources/dia_fa.txt",revision:"f985bba59cf514a7619ba59305d30bcf"},{url:"resources/dia_fi.txt",revision:"3643d2f4a9122bf55f2a8cd86d8075de"},{url:"resources/dia_fil.txt",revision:"dbfbb0420816081ec8223cee97447d58"},{url:"resources/dia_fr.txt",revision:"ba56d02a80e290cee3c03c88db04162d"},{url:"resources/dia_gl.txt",revision:"47e6cc4f3a9e4d4722549cce2cf92433"},{url:"resources/dia_gu.txt",revision:"da9ea9e130723367f2a90c273500ce62"},{url:"resources/dia_he.txt",revision:"1c747df75089162d28331e3c3bad23e3"},{url:"resources/dia_hi.txt",revision:"49d93455c6b6a7ef9e1d0b90a225db0f"},{url:"resources/dia_hr.txt",revision:"f3c1c7da8087d871aeef1a75978038a0"},{url:"resources/dia_hu.txt",revision:"1a75a0193abec7f7db9e6932d9e25068"},{url:"resources/dia_id.txt",revision:"8f17bc609dbacead0925c1319e69061a"},{url:"resources/dia_it.txt",revision:"cc414d01e4f377deec8cd23621928fba"},{url:"resources/dia_ja.txt",revision:"8816f0ee10ec36f58ade419f61f85882"},{url:"resources/dia_kn.txt",revision:"ffa858cab6f5c04a4f360633f0c1bca4"},{url:"resources/dia_ko.txt",revision:"75244ac23c5df30168a50f49c9edfbbb"},{url:"resources/dia_lt.txt",revision:"3b424063a2c5f0cbbd148b965a5aeddd"},{url:"resources/dia_lv.txt",revision:"b8a494f67c027ca4d8a7fdc7f0c08a37"},{url:"resources/dia_ml.txt",revision:"6b2ac822bcb6759a74cbe7229cd2d417"},{url:"resources/dia_mr.txt",revision:"b0ef066af907f17d7b540a8aee66f268"},{url:"resources/dia_ms.txt",revision:"902fc9a4e7b8f247744b561c82a44f32"},{url:"resources/dia_my.txt",revision:"a53fbd174fa9a7cb3abe428159220180"},{url:"resources/dia_nl.txt",revision:"a3eeb1422c963207b11ae7c7d1155b77"},{url:"resources/dia_no.txt",revision:"f16eda4e0f1a0e7304d2a6007a6ee3f8"},{url:"resources/dia_pl.txt",revision:"f670098e19a0492a807e54c8ce6df00a"},{url:"resources/dia_pt-br.txt",revision:"8da7927899b24c3ebcbae0764038fe1c"},{url:"resources/dia_pt.txt",revision:"d640f652d852189008a526e0b3d4a5c7"},{url:"resources/dia_ro.txt",revision:"5d8a2060b31b6ef657fd999c1ad47089"},{url:"resources/dia_ru.txt",revision:"ea690227f6df1ae6b678d23aff75cbba"},{url:"resources/dia_si.txt",revision:"a53fbd174fa9a7cb3abe428159220180"},{url:"resources/dia_sk.txt",revision:"57c58bbe415c3104c80a4046a5168a11"},{url:"resources/dia_sl.txt",revision:"bdc8d7c6c11edf8c380d7b2c5e153558"},{url:"resources/dia_sr.txt",revision:"e11219161f0b10fd83b36ce7dca940f8"},{url:"resources/dia_sv.txt",revision:"045cfea56956e9157b66da38fd5646ba"},{url:"resources/dia_sw.txt",revision:"102a5ac4af7076c4276fad18bf65e3e0"},{url:"resources/dia_ta.txt",revision:"685c8942e42ee3b69cc902cc5dabd0a6"},{url:"resources/dia_te.txt",revision:"e82504da0a68babc825d68b924ea404c"},{url:"resources/dia_th.txt",revision:"78cbcec0f1e4bd9f598116db0cfdcf74"},{url:"resources/dia_tr.txt",revision:"a61ef46dad6321a69c447a79427ccf8c"},{url:"resources/dia_uk.txt",revision:"d17c7f6cff47f78b312a316a43b3381a"},{url:"resources/dia_vi.txt",revision:"fc5803335e2279e86d819f535b1a04f9"},{url:"resources/dia_zh-tw.txt",revision:"7e98a4b9d3848513b20b447079765a6d"},{url:"resources/dia_zh.txt",revision:"69aa362690a776ad7715a3bae7f1ea97"},{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 61d93a29..4b8b07ff 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/4fe1f5733509f336fab360cd1e333975/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.18.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\": \"a4cb11fba88e898c56453f748593fcc5\"\n },\n {\n \"url\": \"js/extensions.min.js\",\n \"revision\": \"5f96202f6da7fac09289ee6738d036b9\"\n },\n {\n \"url\": \"js/stencils.min.js\",\n \"revision\": \"7a7bde0d8b6615eee4ebd215d2b9d761\"\n },\n {\n \"url\": \"js/shapes-14-6-5.min.js\",\n \"revision\": \"ebce9c260798e9465fa3c3e3c1607d43\"\n },\n {\n \"url\": \"js/math-print.js\",\n \"revision\": \"9d98c920695f6c3395da4b68f723e60a\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"22181f53eb2ba790e681cec8e223218d\"\n },\n {\n \"url\": \"open.html\",\n \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n },\n {\n \"url\": \"styles/grapheditor.css\",\n \"revision\": \"748da0cd0a068a52eac70ee2b2c194fe\"\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\": \"ae545c6853fbf09f3be6922bf738b41c\"\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\": \"2ce6e99d95113e9ca6b24343cea202e0\"\n },\n {\n \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n },\n {\n \"url\": \"connect/jira/viewerPanel.js\",\n \"revision\": \"6e9412c359a21b86dc7c5128bf6208d4\"\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\": \"197ed5837ed27992688fc424699a9a78\"\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\": \"d7577d8f21716423852c343f027c4c27\"\n },\n {\n \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n \"revision\": \"48769b97cbeb80d0d3fba95360c9c562\"\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\": \"887d3ac605a7bb297067537e7c1f5686\"\n },\n {\n \"url\": \"connect/confluence/viewer-init.js\",\n \"revision\": \"4a60c6c805cab7bc782f1e52f7818d9f\"\n },\n {\n \"url\": \"connect/confluence/viewer.js\",\n \"revision\": \"d025b0929817299fa154f273525aa0ec\"\n },\n {\n \"url\": \"connect/confluence/viewer-1-4-42.html\",\n \"revision\": \"c7b38b3af4eb7a58ab6dc4791216530e\"\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\": \"8b670f4b6ccde55358851da705ae884f\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram.html\",\n \"revision\": \"c03c89622d22227313645900af4e3c3d\"\n },\n {\n \"url\": \"connect/confluence/macro-editor.js\",\n \"revision\": \"e273a48b8e81faac4530bf1a68d75aa0\"\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\": \"feb632c54782848185348b7fa1153631\"\n },\n {\n \"url\": \"resources/dia_am.txt\",\n \"revision\": \"cb75e7bb8952ebbb6a58a0ece489e667\"\n },\n {\n \"url\": \"resources/dia_ar.txt\",\n \"revision\": \"23b68ccb86f6ef96d3a45c50e6cde1c4\"\n },\n {\n \"url\": \"resources/dia_bg.txt\",\n \"revision\": \"bba48ccb2e9f44353b8d11a789677233\"\n },\n {\n \"url\": \"resources/dia_bn.txt\",\n \"revision\": \"a2c00c91c1d0dcbe8ffe6efeb2a95f0d\"\n },\n {\n \"url\": \"resources/dia_bs.txt\",\n \"revision\": \"7183325eb4896520d6be35db34c09abb\"\n },\n {\n \"url\": \"resources/dia_ca.txt\",\n \"revision\": \"89999c48e0db94080a353d6fc7813e3a\"\n },\n {\n \"url\": \"resources/dia_cs.txt\",\n \"revision\": \"2524e0293a413f2027a3db4b2cda05c6\"\n },\n {\n \"url\": \"resources/dia_da.txt\",\n \"revision\": \"a8c6a389a43da0c664cfd448b4a81b7f\"\n },\n {\n \"url\": \"resources/dia_de.txt\",\n \"revision\": \"cb9b317574f324767182f9e35f81e21d\"\n },\n {\n \"url\": \"resources/dia_el.txt\",\n \"revision\": \"ad8bbf099846ea27a80d493746700456\"\n },\n {\n \"url\": \"resources/dia_eo.txt\",\n \"revision\": \"e57110b06db593712c09117989332393\"\n },\n {\n \"url\": \"resources/dia_es.txt\",\n \"revision\": \"4d2d41c29e604629af780570eeaf0ab2\"\n },\n {\n \"url\": \"resources/dia_et.txt\",\n \"revision\": \"eca67de67124d14091f1079eff6e8e4c\"\n },\n {\n \"url\": \"resources/dia_eu.txt\",\n \"revision\": \"a5b010e921bd73761fc1d17fa94f5f0d\"\n },\n {\n \"url\": \"resources/dia_fa.txt\",\n \"revision\": \"738b00f092cc61234cce3841308e586b\"\n },\n {\n \"url\": \"resources/dia_fi.txt\",\n \"revision\": \"ca8468da267715754aa2810e2d78e1e5\"\n },\n {\n \"url\": \"resources/dia_fil.txt\",\n \"revision\": \"46cc99f370fddf2129b3ec58db42e0ac\"\n },\n {\n \"url\": \"resources/dia_fr.txt\",\n \"revision\": \"8587e5bae3ba4977a2e6af762843b6d2\"\n },\n {\n \"url\": \"resources/dia_gl.txt\",\n \"revision\": \"e39570fe01988a96434988cf0c49314d\"\n },\n {\n \"url\": \"resources/dia_gu.txt\",\n \"revision\": \"cb6ccccf80e45341f313214e4c2686be\"\n },\n {\n \"url\": \"resources/dia_he.txt\",\n \"revision\": \"8b9e9440027551afbc94360d080e9ab7\"\n },\n {\n \"url\": \"resources/dia_hi.txt\",\n \"revision\": \"28132d39b2617b00e789d8afc5dd58d8\"\n },\n {\n \"url\": \"resources/dia_hr.txt\",\n \"revision\": \"38b9c0a90952cb7919e5c40181612cf7\"\n },\n {\n \"url\": \"resources/dia_hu.txt\",\n \"revision\": \"43e9be1d6d95dfa244fbb81fe831849b\"\n },\n {\n \"url\": \"resources/dia_id.txt\",\n \"revision\": \"c85b72b144ab4d8cc026b7c40c546a53\"\n },\n {\n \"url\": \"resources/dia_it.txt\",\n \"revision\": \"6b34056976d4e4c0a06cc67d30ffc02b\"\n },\n {\n \"url\": \"resources/dia_ja.txt\",\n \"revision\": \"fa736409b2a16f179aae6111cf8950f3\"\n },\n {\n \"url\": \"resources/dia_kn.txt\",\n \"revision\": \"4c3a9da2bb845cbb81bfa835887e9315\"\n },\n {\n \"url\": \"resources/dia_ko.txt\",\n \"revision\": \"5078f42ffa0dfa4958082e26521f97ed\"\n },\n {\n \"url\": \"resources/dia_lt.txt\",\n \"revision\": \"41ddb5aebd7ac1fb49e0ec69ed42b1ec\"\n },\n {\n \"url\": \"resources/dia_lv.txt\",\n \"revision\": \"fca5f968f6dd7faefb39f5cb4fe6b7f9\"\n },\n {\n \"url\": \"resources/dia_ml.txt\",\n \"revision\": \"2137c2e9c1847b9c4d5d0662c7bfb95e\"\n },\n {\n \"url\": \"resources/dia_mr.txt\",\n \"revision\": \"608ea3214e92bfd25794fc6524757d36\"\n },\n {\n \"url\": \"resources/dia_ms.txt\",\n \"revision\": \"aa17d12476584931725fd6109de1e159\"\n },\n {\n \"url\": \"resources/dia_my.txt\",\n \"revision\": \"feb632c54782848185348b7fa1153631\"\n },\n {\n \"url\": \"resources/dia_nl.txt\",\n \"revision\": \"07f0c0e348f0a00ec184ba0c8755d449\"\n },\n {\n \"url\": \"resources/dia_no.txt\",\n \"revision\": \"97f3043136f3325c491beaa5a35542db\"\n },\n {\n \"url\": \"resources/dia_pl.txt\",\n \"revision\": \"f38c0ee4bc52cf12491ea2b393268a9e\"\n },\n {\n \"url\": \"resources/dia_pt-br.txt\",\n \"revision\": \"f40082d15b65d2c784a33c23a6d93172\"\n },\n {\n \"url\": \"resources/dia_pt.txt\",\n \"revision\": \"caa24276da744fa5ba4c3a0fb138133f\"\n },\n {\n \"url\": \"resources/dia_ro.txt\",\n \"revision\": \"ef2e6b54289e062d3c3c7ebe3d05c2da\"\n },\n {\n \"url\": \"resources/dia_ru.txt\",\n \"revision\": \"4ab1946d835d597e4461d78b0dc6927a\"\n },\n {\n \"url\": \"resources/dia_si.txt\",\n \"revision\": \"feb632c54782848185348b7fa1153631\"\n },\n {\n \"url\": \"resources/dia_sk.txt\",\n \"revision\": \"dd67d924dc467c9931a3786e5b35c87e\"\n },\n {\n \"url\": \"resources/dia_sl.txt\",\n \"revision\": \"889ea1f2bc66dbf66e34389a48e51b09\"\n },\n {\n \"url\": \"resources/dia_sr.txt\",\n \"revision\": \"2fdc68d1f540a9c0656b329f3503eff5\"\n },\n {\n \"url\": \"resources/dia_sv.txt\",\n \"revision\": \"0ff76ddd1d7ed8cbfd833fe3239783f9\"\n },\n {\n \"url\": \"resources/dia_sw.txt\",\n \"revision\": \"7c2602f72bcf5659de2149d4b02aca5b\"\n },\n {\n \"url\": \"resources/dia_ta.txt\",\n \"revision\": \"c6554dfe7532240b715fbeca829b16d1\"\n },\n {\n \"url\": \"resources/dia_te.txt\",\n \"revision\": \"672c57a129447b4cbb13b8ffc8464f3e\"\n },\n {\n \"url\": \"resources/dia_th.txt\",\n \"revision\": \"b65d5a0d65ed532885266b43e31e3b8b\"\n },\n {\n \"url\": \"resources/dia_tr.txt\",\n \"revision\": \"06cd9bb27de206821bd38c5bb071bb2e\"\n },\n {\n \"url\": \"resources/dia_uk.txt\",\n \"revision\": \"ae34ec923eb377ff1f6492283865236c\"\n },\n {\n \"url\": \"resources/dia_vi.txt\",\n \"revision\": \"126f8324a4913178e46c6377f967e48e\"\n },\n {\n \"url\": \"resources/dia_zh-tw.txt\",\n \"revision\": \"4f20f0ae20afecc1446aff90caa2a9bc\"\n },\n {\n \"url\": \"resources/dia_zh.txt\",\n \"revision\": \"e9ac1a1a7246f453a64a6ed05713ba12\"\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"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,oCAY2B,CAClC,KACS,yBACK,oCAEd,KACS,gCACK,oCAEd,KACS,8BACK,oCAEd,KACS,mCACK,oCAEd,KACS,4BACK,oCAEd,KACS,sBACK,oCAEd,KACS,qBACK,oCAEd,KACS,kCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,mCACK,oCAEd,KACS,0CACK,oCAEd,KACS,gDACK,oCAEd,KACS,oDACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kDACK,oCAEd,KACS,6CACK,oCAEd,KACS,kCACK,oCAEd,KACS,qCACK,oCAEd,KACS,kCACK,oCAEd,KACS,oDACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,yCACK,oCAEd,KACS,6CACK,oCAEd,KACS,wCACK,oCAEd,KACS,iDACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,kDACK,oCAEd,KACS,8CACK,oCAEd,KACS,2BACK,oCAEd,KACS,8CACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,+DACK,oCAEd,KACS,2EACK,oCAEd,KACS,wEACK,oCAEd,KACS,6BACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,iCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,uBACK,oCAEd,KACS,gCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,iCACK,oCAEd,KACS,oCACK,oCAEd,KACS,2CACK,oCAEd,KACS,mCACK,oCAEd,KACS,sCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,oCACK,oCAEd,KACS,6CACK,oCAEd,KACS,6CACK,oCAEd,KACS,6BACK,oCAEd,KACS,iCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,gCACK,oCAEd,KACS,wCACK,oCAEd,KACS,oCACK,oCAEd,KACS,mCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,8CACK,oCAEd,KACS,yCACK,oCAEd,KACS,0CACK,oCAEd,KACS,wCACK,oCAEd,KACS,wCACK,oCAEd,KACS,+CACK,oCAEd,KACS,sCACK,oCAEd,KACS,gCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,gCACK,oCAEd,KACS,yBACK,oCAEd,KACS,+BACK,oCAEd,KACS,kCACK,oCAEd,KACS,uCACK,oCAEd,KACS,wCACK,oCAEd,KACS,uCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,qCACK,oCAEd,KACS,2CACK,oCAEd,KACS,qCACK,oCAEd,KACS,oCACK,qCAEb,6BAC8B,CAAC"} \ No newline at end of file
+{"version":3,"file":"service-worker.js","sources":["../../../../../../../tmp/fbebff3ffa845f84ae849bdb39239110/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.18.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\": \"3b9b84d1d22d2c7dc983240416f5be66\"\n },\n {\n \"url\": \"js/extensions.min.js\",\n \"revision\": \"5f96202f6da7fac09289ee6738d036b9\"\n },\n {\n \"url\": \"js/stencils.min.js\",\n \"revision\": \"7a7bde0d8b6615eee4ebd215d2b9d761\"\n },\n {\n \"url\": \"js/shapes-14-6-5.min.js\",\n \"revision\": \"ebce9c260798e9465fa3c3e3c1607d43\"\n },\n {\n \"url\": \"js/math-print.js\",\n \"revision\": \"9d98c920695f6c3395da4b68f723e60a\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"22181f53eb2ba790e681cec8e223218d\"\n },\n {\n \"url\": \"open.html\",\n \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n },\n {\n \"url\": \"styles/grapheditor.css\",\n \"revision\": \"748da0cd0a068a52eac70ee2b2c194fe\"\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\": \"f5bdd5454969b23f2cde11fde44e816b\"\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\": \"2ce6e99d95113e9ca6b24343cea202e0\"\n },\n {\n \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n },\n {\n \"url\": \"connect/jira/viewerPanel.js\",\n \"revision\": \"6e9412c359a21b86dc7c5128bf6208d4\"\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\": \"197ed5837ed27992688fc424699a9a78\"\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\": \"d7577d8f21716423852c343f027c4c27\"\n },\n {\n \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n \"revision\": \"48769b97cbeb80d0d3fba95360c9c562\"\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\": \"887d3ac605a7bb297067537e7c1f5686\"\n },\n {\n \"url\": \"connect/confluence/viewer-init.js\",\n \"revision\": \"4a60c6c805cab7bc782f1e52f7818d9f\"\n },\n {\n \"url\": \"connect/confluence/viewer.js\",\n \"revision\": \"d025b0929817299fa154f273525aa0ec\"\n },\n {\n \"url\": \"connect/confluence/viewer-1-4-42.html\",\n \"revision\": \"c7b38b3af4eb7a58ab6dc4791216530e\"\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\": \"8b670f4b6ccde55358851da705ae884f\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram.html\",\n \"revision\": \"c03c89622d22227313645900af4e3c3d\"\n },\n {\n \"url\": \"connect/confluence/macro-editor.js\",\n \"revision\": \"e273a48b8e81faac4530bf1a68d75aa0\"\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\": \"a53fbd174fa9a7cb3abe428159220180\"\n },\n {\n \"url\": \"resources/dia_am.txt\",\n \"revision\": \"43998387f2d637edd05e4c4ea7b4c5d3\"\n },\n {\n \"url\": \"resources/dia_ar.txt\",\n \"revision\": \"dfde36dbcb913f189f19d69eded24559\"\n },\n {\n \"url\": \"resources/dia_bg.txt\",\n \"revision\": \"8981a78bd3c6157caab5d194da17dfdf\"\n },\n {\n \"url\": \"resources/dia_bn.txt\",\n \"revision\": \"2d6113ca611ef620ae42f458de5dcb4f\"\n },\n {\n \"url\": \"resources/dia_bs.txt\",\n \"revision\": \"ee8778b85908425effc9077d65e4f010\"\n },\n {\n \"url\": \"resources/dia_ca.txt\",\n \"revision\": \"a7a5bb433d9aa7b7833ab4f0a8afce9a\"\n },\n {\n \"url\": \"resources/dia_cs.txt\",\n \"revision\": \"9da1a91118ec21ea1fa3df841cc6f149\"\n },\n {\n \"url\": \"resources/dia_da.txt\",\n \"revision\": \"784bc9aa31f0d56c28563f6ecc200ff8\"\n },\n {\n \"url\": \"resources/dia_de.txt\",\n \"revision\": \"1340debe72dc915a1bbc03cfc6130a85\"\n },\n {\n \"url\": \"resources/dia_el.txt\",\n \"revision\": \"82ad33e3acd59514ce876edae68d9e3a\"\n },\n {\n \"url\": \"resources/dia_eo.txt\",\n \"revision\": \"cdb49c5f3ec03ceab435f13e9c410620\"\n },\n {\n \"url\": \"resources/dia_es.txt\",\n \"revision\": \"c745f1c15c0a07339c9b3b4757ba7571\"\n },\n {\n \"url\": \"resources/dia_et.txt\",\n \"revision\": \"91460a4a63cde29e9e6c72f1ae77a80f\"\n },\n {\n \"url\": \"resources/dia_eu.txt\",\n \"revision\": \"d1f7ab93a8e26af2ccc285a26a8690b5\"\n },\n {\n \"url\": \"resources/dia_fa.txt\",\n \"revision\": \"f985bba59cf514a7619ba59305d30bcf\"\n },\n {\n \"url\": \"resources/dia_fi.txt\",\n \"revision\": \"3643d2f4a9122bf55f2a8cd86d8075de\"\n },\n {\n \"url\": \"resources/dia_fil.txt\",\n \"revision\": \"dbfbb0420816081ec8223cee97447d58\"\n },\n {\n \"url\": \"resources/dia_fr.txt\",\n \"revision\": \"ba56d02a80e290cee3c03c88db04162d\"\n },\n {\n \"url\": \"resources/dia_gl.txt\",\n \"revision\": \"47e6cc4f3a9e4d4722549cce2cf92433\"\n },\n {\n \"url\": \"resources/dia_gu.txt\",\n \"revision\": \"da9ea9e130723367f2a90c273500ce62\"\n },\n {\n \"url\": \"resources/dia_he.txt\",\n \"revision\": \"1c747df75089162d28331e3c3bad23e3\"\n },\n {\n \"url\": \"resources/dia_hi.txt\",\n \"revision\": \"49d93455c6b6a7ef9e1d0b90a225db0f\"\n },\n {\n \"url\": \"resources/dia_hr.txt\",\n \"revision\": \"f3c1c7da8087d871aeef1a75978038a0\"\n },\n {\n \"url\": \"resources/dia_hu.txt\",\n \"revision\": \"1a75a0193abec7f7db9e6932d9e25068\"\n },\n {\n \"url\": \"resources/dia_id.txt\",\n \"revision\": \"8f17bc609dbacead0925c1319e69061a\"\n },\n {\n \"url\": \"resources/dia_it.txt\",\n \"revision\": \"cc414d01e4f377deec8cd23621928fba\"\n },\n {\n \"url\": \"resources/dia_ja.txt\",\n \"revision\": \"8816f0ee10ec36f58ade419f61f85882\"\n },\n {\n \"url\": \"resources/dia_kn.txt\",\n \"revision\": \"ffa858cab6f5c04a4f360633f0c1bca4\"\n },\n {\n \"url\": \"resources/dia_ko.txt\",\n \"revision\": \"75244ac23c5df30168a50f49c9edfbbb\"\n },\n {\n \"url\": \"resources/dia_lt.txt\",\n \"revision\": \"3b424063a2c5f0cbbd148b965a5aeddd\"\n },\n {\n \"url\": \"resources/dia_lv.txt\",\n \"revision\": \"b8a494f67c027ca4d8a7fdc7f0c08a37\"\n },\n {\n \"url\": \"resources/dia_ml.txt\",\n \"revision\": \"6b2ac822bcb6759a74cbe7229cd2d417\"\n },\n {\n \"url\": \"resources/dia_mr.txt\",\n \"revision\": \"b0ef066af907f17d7b540a8aee66f268\"\n },\n {\n \"url\": \"resources/dia_ms.txt\",\n \"revision\": \"902fc9a4e7b8f247744b561c82a44f32\"\n },\n {\n \"url\": \"resources/dia_my.txt\",\n \"revision\": \"a53fbd174fa9a7cb3abe428159220180\"\n },\n {\n \"url\": \"resources/dia_nl.txt\",\n \"revision\": \"a3eeb1422c963207b11ae7c7d1155b77\"\n },\n {\n \"url\": \"resources/dia_no.txt\",\n \"revision\": \"f16eda4e0f1a0e7304d2a6007a6ee3f8\"\n },\n {\n \"url\": \"resources/dia_pl.txt\",\n \"revision\": \"f670098e19a0492a807e54c8ce6df00a\"\n },\n {\n \"url\": \"resources/dia_pt-br.txt\",\n \"revision\": \"8da7927899b24c3ebcbae0764038fe1c\"\n },\n {\n \"url\": \"resources/dia_pt.txt\",\n \"revision\": \"d640f652d852189008a526e0b3d4a5c7\"\n },\n {\n \"url\": \"resources/dia_ro.txt\",\n \"revision\": \"5d8a2060b31b6ef657fd999c1ad47089\"\n },\n {\n \"url\": \"resources/dia_ru.txt\",\n \"revision\": \"ea690227f6df1ae6b678d23aff75cbba\"\n },\n {\n \"url\": \"resources/dia_si.txt\",\n \"revision\": \"a53fbd174fa9a7cb3abe428159220180\"\n },\n {\n \"url\": \"resources/dia_sk.txt\",\n \"revision\": \"57c58bbe415c3104c80a4046a5168a11\"\n },\n {\n \"url\": \"resources/dia_sl.txt\",\n \"revision\": \"bdc8d7c6c11edf8c380d7b2c5e153558\"\n },\n {\n \"url\": \"resources/dia_sr.txt\",\n \"revision\": \"e11219161f0b10fd83b36ce7dca940f8\"\n },\n {\n \"url\": \"resources/dia_sv.txt\",\n \"revision\": \"045cfea56956e9157b66da38fd5646ba\"\n },\n {\n \"url\": \"resources/dia_sw.txt\",\n \"revision\": \"102a5ac4af7076c4276fad18bf65e3e0\"\n },\n {\n \"url\": \"resources/dia_ta.txt\",\n \"revision\": \"685c8942e42ee3b69cc902cc5dabd0a6\"\n },\n {\n \"url\": \"resources/dia_te.txt\",\n \"revision\": \"e82504da0a68babc825d68b924ea404c\"\n },\n {\n \"url\": \"resources/dia_th.txt\",\n \"revision\": \"78cbcec0f1e4bd9f598116db0cfdcf74\"\n },\n {\n \"url\": \"resources/dia_tr.txt\",\n \"revision\": \"a61ef46dad6321a69c447a79427ccf8c\"\n },\n {\n \"url\": \"resources/dia_uk.txt\",\n \"revision\": \"d17c7f6cff47f78b312a316a43b3381a\"\n },\n {\n \"url\": \"resources/dia_vi.txt\",\n \"revision\": \"fc5803335e2279e86d819f535b1a04f9\"\n },\n {\n \"url\": \"resources/dia_zh-tw.txt\",\n \"revision\": \"7e98a4b9d3848513b20b447079765a6d\"\n },\n {\n \"url\": \"resources/dia_zh.txt\",\n \"revision\": \"69aa362690a776ad7715a3bae7f1ea97\"\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"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,oCAY2B,CAClC,KACS,yBACK,oCAEd,KACS,gCACK,oCAEd,KACS,8BACK,oCAEd,KACS,mCACK,oCAEd,KACS,4BACK,oCAEd,KACS,sBACK,oCAEd,KACS,qBACK,oCAEd,KACS,kCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,mCACK,oCAEd,KACS,0CACK,oCAEd,KACS,gDACK,oCAEd,KACS,oDACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kDACK,oCAEd,KACS,6CACK,oCAEd,KACS,kCACK,oCAEd,KACS,qCACK,oCAEd,KACS,kCACK,oCAEd,KACS,oDACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,yCACK,oCAEd,KACS,6CACK,oCAEd,KACS,wCACK,oCAEd,KACS,iDACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,kDACK,oCAEd,KACS,8CACK,oCAEd,KACS,2BACK,oCAEd,KACS,8CACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,+DACK,oCAEd,KACS,2EACK,oCAEd,KACS,wEACK,oCAEd,KACS,6BACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,iCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,uBACK,oCAEd,KACS,gCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,iCACK,oCAEd,KACS,oCACK,oCAEd,KACS,2CACK,oCAEd,KACS,mCACK,oCAEd,KACS,sCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,oCACK,oCAEd,KACS,6CACK,oCAEd,KACS,6CACK,oCAEd,KACS,6BACK,oCAEd,KACS,iCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,gCACK,oCAEd,KACS,wCACK,oCAEd,KACS,oCACK,oCAEd,KACS,mCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,8CACK,oCAEd,KACS,yCACK,oCAEd,KACS,0CACK,oCAEd,KACS,wCACK,oCAEd,KACS,wCACK,oCAEd,KACS,+CACK,oCAEd,KACS,sCACK,oCAEd,KACS,gCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,gCACK,oCAEd,KACS,yBACK,oCAEd,KACS,+BACK,oCAEd,KACS,kCACK,oCAEd,KACS,uCACK,oCAEd,KACS,wCACK,oCAEd,KACS,uCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,qCACK,oCAEd,KACS,2CACK,oCAEd,KACS,qCACK,oCAEd,KACS,oCACK,qCAEb,6BAC8B,CAAC"} \ No newline at end of file
diff --git a/src/main/webapp/styles/fonts/ArchitectsDaughter-Regular.ttf b/src/main/webapp/styles/fonts/ArchitectsDaughter-Regular.ttf
new file mode 100644
index 00000000..421f247e
--- /dev/null
+++ b/src/main/webapp/styles/fonts/ArchitectsDaughter-Regular.ttf
Binary files differ